Probleme

matte_2002

Grünschnabel
Hallo,

habe da so meine probleme:


tut mir leid dass der cod noch anfängermäßig geschrieben ist.
aber es ist mein erstes zusammenhängendes programm das ich versuche:

PHP:
if($submit):
$dbcn=mysql_connect("localhost","root",""); 
if(!@mysql_select_db("buecherVerwaltung", $dbcn)){
	echo("Verbindung nicht möglich");
	exit();
}
 
 
if($authorID ==""){	 //Hier ist der Fehler, der eigentlich nicht auftreten dürfte
	echo("<p>ein Author muss eingegeben werden!");
	exit();
}
 
$dbcn=mysql_connect("localhost","root",""); 
if(!@mysql_select_db("buecherVerwaltung", $dbcn)){
	echo("Verbindung nicht möglich");
	exit();
}
 
 
 
$sql="INSERT INTO Buch SET 
	Titel='$titel',
	ISBN='$isbn',
	AuthorID='$authorID'";
 
if(mysql_query($sql)){ 
	echo("<p>Neuer hinzugefuegt</p>");
}else{
	echo("<p>Fehler: ".mysql_error() ."</p>");
}
$aid=mysql_insert_id();
 
 
foreach($geners as $genereID){
	$sql ="INSERT IGNORE INTO LookUp
	 SET AuthorID=$authorID, GenereID=$genereID";
	$ok=@mysql_query($sql);
	if($ok){
	 $numGeneres= $numGeneres+1;
	}else{
	 echo("<p> Fehler beim Einfügen in die Kategorie"." $genereID: ".mysql_error(). "</p>");
	}
}
?>
<p>Witz wurde <?=$numGeneres?> Kategorien hinzugefügt</p>
<p><a href="<?=$PHP_SELF?>">Neues Buch anlegen</a></p>
 
<p><a href="admin.php">Zurueck</a>
 
<?php
else: 
$dbcn=mysql_connect("localhost","root",""); 
if(!@mysql_select_db("buecherVerwaltung", $dbcn)){
echo("Verbindung nicht möglich");
exit();
}
$authors=mysql_query("SELECT ID, Name FROM Author;");
$generes= mysql_query("SELECT ID, Name FROM Genere;");
 
?>
 
<form action="<?=$PHP_SELF?>" method="post">
<p>Neues Buch eingeben:<br />
Titel:<input type="text" name="titel" size="20" maxlength="255" /><br />
ISBN:<input type="text" name="isbn" size="20" maxlength="255" /><br />
<select name="AuthorID" size="1">
<option selected value="">Bitte Author auswählen</option>
<option value="">-------</option>
<?php
	while($author=mysql_fetch_array($authors)){
	 $authorID= $author["ID"];
	 $aname= htmlspecialchars($author["Name"]);
	 echo("<option value='$authorID'>$aname</option>\n");
	}
 
?> 
</select></p>
 
<p>Folgende Genere zuordnen:<br />
<?php
 
	while($genere= mysql_fetch_array($generes)){
	 $genereID = $genere["ID"];
	 $gname =htmlspecialchars($genere["Name"]);
	 echo("<input type='checkbox' name='generes[]' value='$genereID'>$gname<br/> \n");
	}
 
?>
</p>
 
<input type="submit" name="submit" value="Speichern" /></p>
 
 
 
</form>
<?php 
endif; ?>


ich hab da eine liste gemacht die dann die authorID übergeben sollte. aber die authorID ist immer "".



vielleicht hat jemand die zeit sich den code mal anzuschauen danke.
 
Du mußt mit $_POST['authorID'] auf die per Formular übergebenen Werte zugreifen. Steht auch hier in der FAQ:
Ich kann nach Abschicken des Formulars nicht auf meine Variablen zugreifen, was tun?
 
Danke für die Antwort,

die ich jedoch nicht ganz verstanden habe.
müsste es dann nicht so funktionieren:

PHP:
$authorID= $_POST['authorID'];
   if($authorID  ==""){
	echo("<p>ein Author muss eingegeben werden!");
	exit();
  }
 
PHP:
if(trim($_POST['authorID']) == '')
{
    echo("<p>ein Author muss eingegeben werden!");
    exit();
}
Das Zuweisen an eine neue, überflüssige Variable kannst du dir sparen.
 
keine ahnung aber die if wird immer noch aufgeführt.

ich poste nochmal den kompletten cod:

PHP:
<?php
  
  if($submit):
   $dbcn=mysql_connect("localhost","root",""); 
   if(!@mysql_select_db("buecherVerwaltung", $dbcn)){
	echo("Verbindung nicht möglich");
	exit();
   }
   if(trim($_POST['authorID']) == '') 
   { 
	echo("<p>ein Author muss eingegeben werden!"); 
	exit(); 
   } 
   
   $dbcn=mysql_connect("localhost","root",""); 
   if(!@mysql_select_db("buecherVerwaltung", $dbcn)){
	echo("Verbindung nicht möglich");
	exit();
   }
   
   
   
   $sql="INSERT INTO Buch SET 
	Titel='$titel',
	ISBN='$isbn',
	AuthorID='$authorID'";
	
   if(mysql_query($sql)){ 
	echo("<p>Neuer hinzugefuegt</p>");
   }else{
	echo("<p>Fehler: ".mysql_error() ."</p>");
   }
   $aid=mysql_insert_id();
   
   
   foreach($geners as $genereID){
	$sql ="INSERT IGNORE INTO LookUp
	 SET AuthorID=$authorID, GenereID=$genereID";
	$ok=@mysql_query($sql);
	if($ok){
	 $numGeneres= $numGeneres+1;
	}else{
	 echo("<p> Fehler beim Einfügen in die Kategorie"." $genereID: ".mysql_error(). "</p>");
	}
   }
 ?>
   <p>Witz wurde <?=$numGeneres?> Kategorien hinzugefügt</p>
   <p><a href="<?=$PHP_SELF?>">Neues Buch anlegen</a></p>
   
   <p><a href="admin.php">Zurueck</a>
  
 <?php
  else: 
  $dbcn=mysql_connect("localhost","root",""); 
  if(!@mysql_select_db("buecherVerwaltung", $dbcn)){
   echo("Verbindung nicht möglich");
   exit();
  }
  $authors=mysql_query("SELECT ID, Name FROM Author;");
  $generes= mysql_query("SELECT ID, Name FROM Genere;");
  
 ?>
  
  <form action="<?=$PHP_SELF?>" method="post">
   <p>Neues Buch eingeben:<br />
   Titel:<input type="text" name="titel" size="20" maxlength="255" /><br />
   ISBN:<input type="text" name="isbn" size="20" maxlength="255" /><br />
   <select name="AuthorID" size="1">
   <option selected value="">Bitte Author auswählen</option>
   <option value="">-------</option>
   <?php
	while($author=mysql_fetch_array($authors)){
	 $authorID= $author["ID"];
	 $aname= htmlspecialchars($author["Name"]);
	 echo("<option value='$authorID'>$aname</option>\n");
	}
	
   ?> 
   </select></p>
   
   <p>Folgende Genere zuordnen:<br />
   <?php
   
	while($genere= mysql_fetch_array($generes)){
	 $genereID = $genere["ID"];
	 $gname =htmlspecialchars($genere["Name"]);
	 echo("<input type='checkbox' name='generes[]' value='$genereID'>$gname<br/> \n");
	}
	
   ?>
   </p>
   
   <input type="submit" name="submit" value="Speichern" /></p>
   
   
   
  </form>
 <?php 
 endif; ?>
 
Natürlich wird es ausgeführt, solange du $_POST['AuthorID'] noch nicht mit Werten gefüllt hast.
Was willst du eigentlich mit
PHP:
   if($submit):
überprüfen?
 
mit dem submit will ich überprüfen ob schon auf den button speichern gedrückt wurde.

wenn die seite aufgerufen wird ist ja !submit. und dann wird der untere cod ausgeführt. und dort weiße ich doch auf authorID einen wert zu.

PHP:
while($author=mysql_fetch_array($authors)){
	 $authorID= $author["ID"];
	 $aname= htmlspecialchars($author["Name"]);
	 echo("<option value='$authorID'>$aname</option>\n");
	}
 
Die Prüfung, ob der Knopf gedrückt wurde, wäre
PHP:
if (isset($_POST['submit']))
Siehe auch meine erste Antwort.
 
Zurück