[JavaScript]On Check beim Formular

Muuhmann

Lieutenant
Registriert
Sep. 2004
Beiträge
782
Hi,
Ich suche ein Script, dass wenn ich einen Radio-Button checke weitere Formulardaten offenlegt, aber es klappt bei mir einfach nicht!
Hier mal das was ich bis jetzt hab.. ist nur aus nem Tutorial übernommen, weil ich absolut keinen check von JS habe!

Code:
<script language="javascript" type="text/javascript">
        function showOption (id)
        {
            if (document.getElementById("moreoptions" + id).style.display == 'none')
            {
                document.getElementById("moreoptions" + id).style.display = "";
            }
            else
            {
                document.getElementById("moreoptions" + id).style.display = "none";
            }
            
        }

</script>

Code:
        <p><strong>Verliehen:</strong><br>
          Ja: 
          <input type="radio" name="ausgeliehen" value="Ja" <?php if($cd_update['ausgeliehen']=="Ja"){?>checked<?php } ?> onSelect="showOption(1)">
          Nein: 
          <input type="radio" name="ausgeliehen" value="Nein" <?php if($cd_update['ausgeliehen']=="Nein"){?>checked<?php } ?>>
        </p>

		<span id="moreoptions1" style="display: none;"><p><strong>An Wen?</strong><br>
		  <input name="werhats" type="text" value="<?php echo $cd_update['werhats'] ?>">
		</p>
        <p><strong>Seit Wann:</strong><br>
		  <input name="seitwann" type="text" value="<?php echo $cd_update['seitwann'] ?>">
		</p>
		</span>
Code:
 
Mit onselect funktionierts bei mir auch nicht, wohl aber mit onclick.

Ergänzend würde ich aber sagen, dass das mit dem Toggle (ein- und ausschalten bei nochmaligem Klick) nicht so das gelbe vom Ei ist.
Da du anscheinend ja/nein Radioboxes willst, würde ich der ShowOption Funktion noch mitgeben ob ein- oder ausgeblendet werden soll.

Die würde dann so aussehen:

Code:
<script type="text/javascript">
        function showOption (id,value)
        {
                  var div = document.getElementById('moreoptions' + id);
                  if(div != null) { // es gibt das Element wirklich
                         div.style.display = (value) ? '':'none';
                  }
        }
</script>
<p>
<strong>Verliehen:</strong><br>
          Ja: <input type="radio" name="ausgeliehen" value="Ja" onclick="showOption(1,true)">
          Nein: <input type="radio" name="ausgeliehen" value="Nein"  onclick="showOption(1,false)">
</p>

<span id="moreoptions1" style="display: none;">
    <p><strong>An Wen?</strong><br>
	  <input name="werhats" type="text" value="">
    </p>
    <p><strong>Seit Wann:</strong><br>
          <input name="seitwann" type="text" value="">
     </p>
</span>

Die per PHP eingesetzten Werte hab ich zum Testen mal rausgenommen, kannst se ja wieder einsetzen.

Viel Erfolg weiterhin.
 
Zuletzt bearbeitet:
Danke! Danke! Danke!

Klappt einwandfrei!

Super!

Noch eine kleine Frage hätte ich da. Wie mache ich es, dass nachdem das formularabgeschickt und alles in die datenbank eingetragen wurde, eine andere seite angezeigt wird?
ist jetzt egal ob JS oder PHP
 
bevor du irgend ein Zeichen ausgibst:

PHP:
header('Location: http://deinserver/deinscript.php');
Du kannst auch das http://deinserver/ weglassen, solltest es aber eigentlich nicht tun, da ansonsten ältere Browser oder ältere Webserver damit Probleme kriegen könnten.
Laut HTTP Protokoll gehört eine vollständige URL in den Location: Header.
 
ya das ist schon super! normalerweise bekomm ich ein window.alert wenn der eintrag übernommen wurde, aber das geht jetzt nicht mehr wenn ich das "header(...)" einbaue... ne Lösung dafür?
 
Der Header wird vor absolut allem anderen abgeschickt. Wenn du irgendwo ein Zeichen ausgibst (z.B. HTML oder auch nur Leerzeichen) kommt ne Fehlermeldung. Diese könnte dann auch dein Altert beeinflussen. Mit mehr Quelltext können wir den schuldigen sicher finden...
 
du willst mehr Quelltext? den kannst du haben =)

PHP:
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
        function showOption (id,value)
        {
                  var div = document.getElementById('moreoptions' + id);
                  if(div != null) { // es gibt das Element wirklich
                         div.style.display = (value) ? '':'none';
                  }
        }
</script>
</head>

<body>
<?php
$link=mysql_connect("**", "**", "**") OR DIE("<strong>Fehler</strong><br><br>Datei: ".__FILE__."<br>Zeile: ".__LINE__."<br>Fehler: ".mysql_error()); /* Verbindung zur Datenbank herstellen */
mysql_select_db("cdarchiv",$link); /* Datenbank auswählen */

/* auf der ausgabe seite wurde auf bearbeiten geklickt und der eintrag soll bearbeitet werden */
$cd_sql_update="SELECT * FROM `meinecds` WHERE `ID`='{$_GET['ID']}'";
$cds_query_update=mysql_query($cd_sql_update,$link) OR DIE("<strong>Fehler</strong><br><br>Datei: ".__FILE__."<br>Zeile: ".__LINE__."<br>Fehler: ".mysql_error());
$cd_update=mysql_fetch_array($cds_query_update);

if($_POST['action']=="update")
{
	/* Überprüfen ob alle Felder ausgefüllt sind! */
	if(empty($_POST['titel'])) {$fehler1="Gib einen Titel an!";}
	if(empty($_POST['cd'])) {$fehler2="Gib die CD-Nummer an!";}
	if(empty($_POST['cdanzahl'])) {$fehler3="Gib an, wieviele CDs es gibt!";}
	if($_POST['kategorie']=="- - - - - -") {$fehler4="Gib die richtige Kategorie an!";}
	if(empty($_POST['beschreibung'])) {$fehler5="Gib eine Beschreibung an!";}
	if(empty($_POST['werhats'])) {$fehler6="Gib den Namen desjenigen an, an den dus ausgeliehen hast!";}
	if(empty($_POST['seitwann'])) {$fehler7="Is egal ob de hier was eingibst ;D!";}


	
	/* Wenn ein Feld nicht ausgefüllt wurde, soll nichts gemacht werden */
	if(isset($fehler1) OR isset($fehler2) OR isset($fehler3) OR isset($fehler4) OR isset($fehler5) OR isset($fehler6) OR isset($fehler7)) {}
	/* Wenn alle Felder ausgefüllt sind soll der Datensatz der Tabelle hinzugefügt werden */
	else
	{
		
		/* Slashes zu Sonderzeichen hinzufügen */
		$_POST['titel']=addslashes($_POST['titel']);
		$_POST['beschreibung']=addslashes($_POST['beschreibung']);
		
		/* evtl. vorhandenen HTML-Code entfernen */
		$_POST['titel']=strip_tags($_POST['titel']);
		$_POST['cd']=strip_tags($_POST['cd']);
		$_POST['cdanzahl']=strip_tags($_POST['cdanzahl']);
		$_POST['beschreibung']=strip_tags($_POST['beschreibung']);
		
		/* Leerstellen am Anfang und am Ende entfernen */
		$_POST['titel']=trim($_POST['titel']);
		$_POST['cd']=trim($_POST['cd']);
		$_POST['cdanzahl']=trim($_POST['cdanzahl']);
		$_POST['beschreibung']=trim($_POST['beschreibung']);
		
		$_POST['titel']=chop($_POST['titel']);
		$_POST['cd']=chop($_POST['cd']);
		$_POST['cdanzahl']=chop($_POST['cdanzahl']);
		$_POST['beschreibung']=chop($_POST['beschreibung']);
		
		/* Zeilenumbrüche ersetzen */
		$_POST['beschreibung']=nl2br($_POST['beschreibung']);
		
		/* Datum neueinsetzten nur wenn es ausgeliehen wurde */
		if($_POST['ausgeliehen']=="Ja")
		{
			$datumupdate=", `seitwann`=now()";
			$werhatsvar="{$_POST['werhats']}";
		}
		else
		{
			$datumupdate="";
			$werhatsvar="Niemand";
		}
		
		
		/* datensatz hinzufügen */
		$cds_sql_update="UPDATE `meinecds` SET `titel`='{$_POST['titel']}', `cd`='{$_POST['cd']}', `cdanzahl`='{$_POST['cdanzahl']}', `kategorie`='{$_POST['kategorie']}', `beschreibung`='{$_POST['beschreibung']}', `ausgeliehen`='{$_POST['ausgeliehen']}', `werhats`='$werhatsvar' $datumupdate WHERE `ID`='{$_POST['ID']}'";
		$bool=mysql_query($cds_sql_update,$link) OR DIE("<strong>Fehler</strong><br><br>Datei: ".__FILE__."<br>Zeile: ".__LINE__."<br>Fehler: ".mysql_error());
		if($bool==1) echo "<script language=JavaScript>window.alert('Eintrag wurde bearbeitet')</script>";
		if($bool<>1) echo "<script language=JavaScript>window.alert('Beim Bearbeiten des Eintrags ist ein Fehler aufgetreten')</script>";

header('Location: http://localhost/CD-Archiv/index.php?content=cdausgabe');
		
		/* Felder leeren */
		$_POST['titel']="";
		$_POST['cd']="";
		$_POST['cdanzahl']="";
		$_POST['beschreibung']="";
		$_POST['kategorie']="";
	} /* Ende else-Schleife */
} /* Eintrag wurde ggf. bearbeitet */
?>
<table width="580" class="form">
	<tr>
		<td>
		<!-- das Formular -->
		<form action="<?php echo $_SERVER['PHP_SELF'] ?>?content=cdbearbeiten" method="post">
				<input name="action" type="hidden" value="update">
				<input name="ID" type="hidden" value="<?php echo $cd_update['ID'] ?>">			
        <p><strong>Titel:</strong><br>
				<input name="titel" type="text" value="<?php echo $cd_update['titel'] ?>" class="input">
				<br><font class="fehler"><?php echo $fehler1; ?></font>
			</p>
			
        <p><strong>CD #:</strong><br>
				<input name="cd" type="text" value="<?php echo $cd_update['cd'] ?>" class="input">
				<br><font class="fehler"><?php echo $fehler2; ?></font>
			</p>
			
			
        <p><strong>CD Anzahl:</strong><br>
				<input name="cdanzahl" type="text" value="<?php echo $cd_update['cdanzahl'] ?>" class="input">
				<br><font class="fehler"><?php echo $fehler3; ?></font>
			</p>
			
        <p><strong>Kategorie:</strong><br>
				<select name="kategorie" class="input">
					<option selected>
						<?php
							 echo $cd_update['kategorie']
						?>
					</option>
					<option>Programme</option>
					<option>Spiele</option>
					<option>Filme</option>
					<option>Sonstiges</option>
				</select>
				<br><font class="fehler"><?php echo $fehler4; ?></font>
			</p>
			
        <p><strong>Beschreibung: </strong><br>
          <textarea name="beschreibung" cols="35" rows="12" wrap="virtual" class="input"><?php echo $cd_update['beschreibung'] ?></textarea>
          <br>
          <font class="fehler"><?php echo $fehler5; ?></font> </p>
        <p><strong>Verliehen:</strong><br>
          Ja: 
          <input type="radio" name="ausgeliehen" value="Ja" <?php if($cd_update['ausgeliehen']=="Ja"){?>checked<?php } ?> onclick="showOption(1,true)">
          Nein: 
          <input type="radio" name="ausgeliehen" value="Nein" <?php if($cd_update['ausgeliehen']=="Nein"){?>checked<?php } ?> onclick="showOption(1,false)">
        </p>

		<span id="moreoptions1" style="display: none;"><p><strong>An Wen?</strong><br>
		  <input name="werhats" type="text" value="<?php echo $cd_update['werhats'] ?>">
		  <br><font class="fehler"><?php echo $fehler6; ?></font>
		</p>
        <p><strong>Seit Wann:</strong><br>
		  <input name="seitwann" type="text" value="<?php echo $cd_update['seitwann'] ?>">
		  <br><font class="fehler"><?php echo $fehler7; ?></font>
		</p>
		</span>
        <p> 
				<input name="submit" type="submit" class="input" value="Send" accesskey="s">
				&nbsp;&nbsp;&nbsp; 
				<input type="reset" value="Reset" class="input">
			</p>
		</form>
		<!-- Formular Ende -->
		</td>
	</tr>
</table>
</body>
</html>


so das ist das ganze Skript.. wie du siehst sollte das window.alert eigentlich BEVOR der seitenwechsel gemacht wird ausgegeben werden!
 
Zuletzt bearbeitet:
mach noch dein pw aus dem quelltext raus, is sicherer

Du gibst immer <html>.... aus. Der Header sollte VOR <html> oder sonst einem Zeichen in der Ausgabe kommen. Du wirst das mit Bedingungen erreichen müssen, noch bevor irgendwas ausgegeben wird.

PHP:
<html>
<?php
// Dies funktioniert nicht. Beachten Sie die
// obige Ausgabe noch vor dem header()-Aufruf
header('Location: http://www.example.com/');
?>

Außerdem sollte nach einem Location: header keine Ausführung mehr stattfinden.

Lies dir dazu auch http://de3.php.net/header aufmerksam durch. Vor allem den Abschnitt mir Redirect.

Der wichtige Codeschnipsel ist:
PHP:
<?php
header("Location: http://www.example.com/"); // Umleitung des Browsers
exit;                                        // Sicherstellen, dass nicht trotz Umleitung
                                             // der nachfolgende Code ausgeführt wird.
?>
 
Zuletzt bearbeitet:
das ist eigentlich egal, da der server auf meinem rechner ist...

mhmh.. anscheinend ist dann die header funktion nicht die richtige für dieses Problem..
 
Ansonsten per JS mit:
Code:
<script type="text/javascript">
self.location.href="http://url.von/anderer/seite";
</script>
 
Zurück
Oben