php crank

gufi

Mitglied
hallo! also ich bin gerade php anfänger und hab ein problem! und zwar lese ich daten aus einer mysql datenbank aus. leider funktioniert das mit gewissen if-abfragen nicht so ganz.


Code 1: funktioniert nicht!! keine daten werden angezeigt.
Code:
while($zeile = mysql_fetch_array($sth))
  echo "<tr id='artikel'>";
  			if ($zeile[4] == 1){
			echo "<td><center><img src='/Images/verfuegbar.jpg'></center></td>";
}else{
"<td><center><img src='/Images/verfuegbar1.jpg'></center></td>";}
echo "<td></td>".
			"<td>$zeile[1]</td>".
			"<td></td>".
			"<td>$zeile[2]</td>".
			"<td></td>".
			"<td>€ $preis</td>".
			"<td></td>".
			"<td><input name=$zeile[1] type='text' size='2' maxlength='4' /></td>".
			"</tr>";

Code 2: funktioniert.
Code:
while($zeile = mysql_fetch_array($sth))
  
  			if ($zeile[4] == 1){
				$preis = $zeile[3]/100;
			echo "<tr id='artikel'>".
			"<td><center><img src='/Images/verfuegbar.jpg'></center></td>".
			"<td></td>".
			"<td>$zeile[1]</td>".
			"<td></td>".
			"<td>$zeile[2]</td>".
			"<td></td>".
			"<td>€ $preis</td>".
			"<td></td>".
			"<td><input name=$zeile[1] type='text' size='2' maxlength='4' /></td>".
			
			"</tr>";
			}
			else{
				$preis = $zeile[3]/100;
			echo "<tr id='artikel'>".
			"<td><center><img src='/Images/verfuegbar1.jpg'></center></td>".
			"<td></td>".
			"<td>$zeile[1]</td>".
			"<td></td>".
			"<td>$zeile[2]</td>".
			"<td></td>".
			"<td>€ $preis</td>".
			"<td></td>".
			"<td><input name= $zeile[1] type='text' size='2' maxlength='4' /></td>".
			
			"</tr>";
			}

Code 3 funktioniert wieder nicht
Code:
while($zeile = mysql_fetch_array($sth))
  
  			if ($zeile[4] == 1){
				$preis = $zeile[3]/100;
				if($zeile[3]%2==0){$preis=$preis.'.00'};
			echo "<tr id='artikel'>".
			"<td><center><img src='/Images/verfuegbar.jpg'></center></td>".
			"<td></td>".
			"<td>$zeile[1]</td>".
			"<td></td>".
			"<td>$zeile[2]</td>".
			"<td></td>".
			"<td>€ $preis</td>".
			"<td></td>".
			"<td><input name=$zeile[1] type='text' size='2' maxlength='4' /></td>".
			
			"</tr>";
			}
			else{
				$preis = $zeile[3]/100;
				if($zeile[3]%2==0){$preis=$preis.'.00'};
			echo "<tr id='artikel'>".
			"<td><center><img src='/Images/verfuegbar1.jpg'></center></td>".
			"<td></td>".
			"<td>$zeile[1]</td>".
			"<td></td>".
			"<td>$zeile[2]</td>".
			"<td></td>".
			"<td>€ $preis</td>".
			"<td></td>".
			"<td><input name= $zeile[1] type='text' size='2' maxlength='4' /></td>".
			
			"</tr>";
			}

also schlußendlich funktioniert immer nur was nicht wenn was außerhalb eines ifs steht ! versteh auch nicht warum der dritte code nicht funktioniert immer nur wegen der IF anweisung

mfg und thx
 
Pach in die while-Schleife mal ein
PHP:
var_dump( $zeile )
und poste die Ausgabe hier.

Ich vermute einfach dass das vierte Element in deinem Array nicht 1 ist und die Bedingung somit falsch ist.
 
Code:
array(10) { [0]=>  string(1) "1" ["WeinID"]=>  string(1) "1" [1]=>  string(5) "GV001" ["Artikelnummer"]=>  string(5) "GV001" [2]=>  string(16) "Grüner Veltliner" ["Artikelname"]=>  string(16) "Grüner Veltliner" [3]=>  string(3) "475" ["Preis"]=>  string(3) "475" [4]=>  string(1) "1" ["Verfuegbar"]=>  string(1) "1" } array(10) { [0]=>  string(1) "2" ["WeinID"]=>  string(1) "2" [1]=>  string(5) "ROE01" ["Artikelnummer"]=>  string(5) "ROE01" [2]=>  string(41) "Rösler " ["Artikelname"]=>  string(41) "Rösler " [3]=>  string(3) "600" ["Preis"]=>  string(3) "600" [4]=>  string(1) "0" ["Verfuegbar"]=>  string(1) "0" }

also in $zeile[4] steht entweder 0 oder 1 soll ja eig. auch so gehören :)

ps: es funktioniert alles solang es inerhalb der if-bed. steht! bzw. keine andere if-bed. drinnen ist ;)
 
Zuletzt bearbeitet:
Setz mal geschweifte Klammern um den while-Block.

PHP:
while($zeile = mysql_fetch_array($sth)) {
  echo "<tr id='artikel'>";
  if ($zeile[4] == 1){
	echo "<td><center><img src='/Images/verfuegbar.jpg'></center></td>";
  }
  else{
     echo "<td><center><img src='/Images/verfuegbar1.jpg'></center></td>"; // hier fehlte außerdem ein echo
  }
   echo "<td></td>".
   "<td>$zeile[1]</td>".
   "<td></td>".
   "<td>$zeile[2]</td>".
   "<td></td>".
   "<td>€ $preis</td>".
   "<td></td>".
   "<td><input name=$zeile[1] type='text' size='2' maxlength='4' /></td>".
   "</tr>";
}

etc.

Lg
 
ha ich bin begeistert! danke funktioniert einwandfrei ;)

und diese 2 kack klammer haben mir nen halben tag meines lebens verzweiflung gekostet? :D
 
nö das echo war eh da! hab ich nur beim posten unabsichtlich weggenommen! die klammern warns ;) egal jetzt funkts ;) thx
 
leider häng ich schon wieder! und zwar warum er nichts in die DB schreibt bei dem?

is ein formular das sieht folgend aus:

das formular funktioniert auch!
PHP:
<form method="post" name="form" action="send.php">
.
.
//verbindungsaufbau 
.
.
while($zeile = mysql_fetch_array($sth)) {
	  $stueck='i'.$zeile[1];
	  $preis=$zeile[3];
	  if($preis%2==0){
		  $preis=$preis/100 . '.00';
	  }else{
	  $preis = $preis/100;}
  echo "<tr id='artikel'>";
  if ($zeile[4] == 1){
    echo "<td><center><img src='/Images/verfuegbar.jpg'></center></td>";
  }
  else{
     echo "<td><center><img src='/Images/verfuegbar1.jpg'></center></td>"; 
  }
   echo "<td></td>".
   "<td>$zeile[1]</td>".
   "<td></td>".
   "<td>$zeile[2]</td>".
   "<td></td>".
   "<td>€ $preis</td>".
   "<td></td>".
   "<td><input name=$stueck type='text' size='2' maxlength='4' /></td>".
   "</tr>";
}  
			
		mysql_free_result($sth);
		mysql_close($dbh);
	?>
    
 
</table>
<table width="790">
<tr id="button"><td> <input name="sendwwein" id="sendwwein" type="submit" value="Bestellen"/></td></tr>
</table>
</form>

nur die dazugehörige send.php hat anscheinend einen fehler! es passiert nämlich rein garnichts!

PHP:
<?php
 //Verbindungsaufbau
$dbh = mysql_connect($host,$user,$pw) or die ("Verbindung fehlgeschlagen");
//db auswahl
mysql_select_db($database);
  $data="Select * from ArtikelWein";
$sth = mysql_db_query($database,$data,$dbh) or die ("Abfragefehler");

while($zeile = mysql_fetch_array($sth)) {
	$teststueck = 'i'.$zeile[1];
	if($teststueck==$stueck){
		$gespreis=$zeile[3]*$stueck;
		$gespreis=$gespreis/100;
		if($gespreis%2==0){$gespreis=$gespreis. '.00';}
		if($stueck!= " "){*/
			$sql="INSERT INTO Warenkorb (ArtikelID, Artikelnummer, Artikelname, Anzahl, Einzelpreis, Gesamtpreis) VALUES($zeile[0], $zeile[1], $zeile[2], $stueck, $zeile[3], $gespreis)";
			$sth = mysql_query($sql,$dbh) or die ("Insertfehler");
		}
	}
}
mysql_free_result($sth);
		mysql_close($dbh);
?>

thx!
 
Zurück