schleife

  • Themenstarter Themenstarter Comenius
  • Beginndatum Beginndatum
C

Comenius

Hallo,

Ich habe mich jetzt mal ein bisschen in das Thema Schleifen hineingelesen.
Das hab ich auch einigermaßen gut verstanden, aber ich kann mein Vorhaben nicht richtig umsetzen.

Ich poste mal den Code und beschreibe dann mein Problem:

PHP:
    <?php
    if($keys[0])				 
    {
    mysql_connect("$a", "$b","$c") or die(mysql_error()); 
    mysql_select_db("$d") or die(mysql_error()); 
    $sql = "SELECT * FROM test WHERE nummer='$keys[0]'";
    $result = mysql_query($sql) OR die(mysql_error());
    while($row = mysql_fetch_assoc($result)) 
    {
    $Nummer   =	   $row[nummer];
    $Name	     =	   $row[name];
    $Preis		 = 	  $row[preis];
    $ergebnis1  =	   $Preis + $ergebnis;
    $ergebnis	=	   "$ergebnis1";
    }
    ?>
    
    <table border="0"> 
    <tr>
    <td width="236" bgcolor="#F0F0F0">
    <b><?php echo "$Nummer"; ?></b>
    </td>
    <td width="236" bgcolor="#F0F0F0">
    <b><?php echo "$Name"; ?></b>
    </td>
    <td width="236" bgcolor="#F0F0F0">
    <b><?php echo "$Preis"; ?></b>
    </td>
    </tr>
    </table>
    
    <?php
    }
    else
    {}
    ?>

Also:

Jede Zeile von meiner Textarea wird in eine variable gesplittet ($keys[0] - unendlich)
Jede Zeile enthält nun einen Wert, in meinem Fall eine Nummer.
Mit dieser nummer möchte ich nun meine Datenbank abfragen, was auch super klappt.

Jetzt zum Code:

Erst wird geprüft, ob überhaupt was in die textarea eingegeben wurde, also ob $keys[x] überhaupt einen Wert hat, ist das nicht der Fall, erscheint ein weisser Bildschirm.

Da ich aber vorher NIE genau weiss, wie viele Zeilen ich in meiner Textarea zusammenbekomme, kann ich mich auch nicht bei der Abfrage festlegen.
Naja, stimmt nicht ganz.... wenn ich mir sage, dass es nie mehr als 50 Zeilen werden, mache ich einfach 50 Abfragen..... Aber das kann ja so nicht sein, also braucht man eine Schleife.

Ich habe auch schon rumgespielt, aber ist irgendwie nix geworden :(

Hoffe ihr könnt mir da helfen, wäre echt super.

Gruss
Commi

PS: hoffe ich habe mich verständlich ausgedrückt :)
 
Zuletzt bearbeitet von einem Moderator:
Also eine Schleife ist wahrlich sinnvoll.
Und so ich Dich nicht falsch verstanden habe, sollte es so funktionieren (ist aber nicht getestet):
PHP:
<?php
for($i = 0; $i < count($keys); $i++)
{
  mysql_connect($a, $b, $c) or die(mysql_error());
  mysql_select_db($d) or die(mysql_error());
  $sql = "SELECT * FROM test WHERE nummer='".$keys[$i]."'";
  $result = mysql_query($sql) or die(mysql_error());
  while($row = mysql_fetch_assoc($result))
  {
    $Nummer = $row[nummer];
    $Name = $row[name];
    $Preis = $row[preis];
    $ergebnis1 = $Preis + $ergebnis;
    $ergebnis = $ergebnis1;
  }
?>

  <table border="0">
    <tr>
      <td width="236" bgcolor="#F0F0F0">
        <b><?php echo $Nummer; ?></b>
      </td>
      <td width="236" bgcolor="#F0F0F0">
        <b><?php echo $Name; ?></b>
      </td>
      <td width="236" bgcolor="#F0F0F0">
        <b><?php echo $Preis; ?></b>
      </td>
    </tr>
  </table>

<?php
}
?>

redlama
 
Hehe, danke redlama :)

Das klappt soweit ganz gut, aber meine sache mit "if($keys[x])" fällt weg.

Heisst:

egal was man eingibt, erscheint unten immer eine eingabe, bei der die nummer 0 ist (Name und Preis sind leer, nur Bei Nummer steht 0).

Gibt man gar nichts ein, steht nur 0 da.

Kann man das vielleicht noch irgendwie ausbügeln ? wäre super :)

Danke erstmal für den Code, genau so hab ich mir das gedacht.

Gruss
Commi
 
Wenn ich das jetzt richtig verstanden habe, willst du, dass nur dann etwas ausgegeben wird, wenn in der Variable $key auch etwas drinsteht.
Dann stell doch einfach noch eine if -Abfrage vor die for-Schleife und überprüfe die Variable
 
Also ich verstehe jetzt ehrlich gesagt nicht so ganz was Du meinst.
Aber ich versuche Dir mal zu vermitteln, was die Schleife macht. Vielleicht ergibt sich daraus ja eine Lösung.
Mit count($keys) findet man heraus, wieviele Werte in dem Array $keys stecken.
Die for-Schleife liest also der Reihe nach von $keys[0] bis $keys[n] die Werte aus $keys aus.
Das select müsst dann so aussehen:
SELECT * FROM test WHERE nummer='".$keys[0]."' bis SELECT * FROM test WHERE nummer='".$keys[n]."'.
Du hast doch mit if($keys[x]) nur überprüft, ob der ein Wert gesetzt ist oder nicht. Da die for-Schleife ja alle gesetzten Werte ausliest, müsste es eigentlich funktionieren.

Falls das jetzt nichts gebracht hat, könntest Du nochmal versuchen das Problem ein wenig genauer zu beschreiben?

redlama
 
Danke, habe meine if-Abfrage wieder davor gehängt und es funktioniert.

Sorry, dass ich jetzt erst antworte, aber mein Internet machte Ärger.

Danke nochmal :)

Gruss
Commi
 
Zurück