Gross/Kleinschreibung

Warum denn einfach wenns kompliziert auch geht?
PHP:
$abfrage = "SELECT id, deutsch, english FROM table_voc_engl WHERE id = '$rand_id' AND done=0";
 
Weil z.B. $rand_id = 3 und die Vokabel mit der id 3 evtl schon ein done = 1 hat
=> geht so net.

Beispiel ist schlecht zu machen. Ich erkläre es nochmal "einfacher":

Code:
Wiederhole solange bis eine Vokabel da ist, bei der ($done = 0)
  {
     Zufallszahl generieren
     SQL-Query 
     $done = $SQL_Ergebnis[done]
  }

Da undefinierte Variablen den Wert 0 haben, muss $done vor der Schleife einen anderen Wert als 0 erhalten, da sonst die Schleife übersprungen wird.

Das Problem ist nur, wenn bei jeder Vokabel done = 1 ist, hüpft er nicht mehr aus der Schleife raus. Also muss das ganz am Anfang noch geprüft werden und ggf eine Meldung gemacht werden.
 
German hat gesagt.:
Warum denn einfach wenns kompliziert auch geht?
PHP:
$abfrage = "SELECT id, deutsch, english FROM table_voc_engl WHERE id = '$rand_id' AND done=0";


Das geht so nicht...ich hatte das am Anfang so, aber wenn done = 1 war kam einfach nichts raus...und das will ich nicht...ich will dass wenn done = 1 ist, dass dann die Abfrage noch einmal gemacht wird!

@Illuminati
danke...werde das mal versuchen!
gruss
 
Spescha hat gesagt.:
Das geht so nicht...ich hatte das am Anfang so, aber wenn done = 1 war kam einfach nichts raus...und das will ich nicht...ich will dass wenn done = 1 ist, dass dann die Abfrage noch einmal gemacht wird!
Also langsam verstehe ich nur noch Bahnhof :confused:
Du machst eine Abfrage, da sollen auch die done==1 erfasst werden, nur um die Ausgabe abzubrechen und die Abfrage neu zu starten?
Irgendwie erschließt sich mir der Sinn dahinter nicht so recht.

Wenn Du 5 zufällige Fragen brauchst, die noch nicht beantwortet sind, müßte das eigentlich so gehen:
PHP:
$sql="SELECT id, deutsch, english FROM table_voc_engl WHERE done!=1 ORDER BY RAND() LIMIT 0,5";
 
so...hab das mal getestet...mein Code sieht jetzt so aus:

PHP:
<?php
 include ("dbconnect.php");
 $done = 0;
 while ($done == 0)
 	{
         srand ((double)microtime()*1000000);
	$rand_id = rand(1, 6);
         $abfrage = "SELECT id, deutsch, english, done FROM table_voc_engl WHERE id = '$rand_id'";
 	$abfragen = mysql_query($abfrage);
         while ($row = mysql_fetch_array($abfragen))
         	{
                 $done = $row["done"];
                 echo $row['deutsch'] . "<br>";
         	$english = $row['english'];
                 $id = $row['id'];
         	echo $id;
         	echo "<html>";
          	 echo "<body>";
           	  echo "<form action=\"abfrage_voc.php\" method=\"post\">";
           	   echo "<input type=\"hidden\" name=\"english\" value=\"$english\">";
           	   echo "<input type=\"hidden\" name=\"id\" value=\"$id\">";
           	   echo "<input type=\"text\" name=\"eingabe\" size=\"20\" maxlength=\"30\">";
           	   echo "<input type=\"submit\" name=\"submit\" value=\"Senden\">";
           	  echo "</form>";
           	  echo "<a href=\"close.php\">Schliessen</a>";
            	 echo "</body>";
         	echo "</html>";
		}
         }
?>

Es funktioniert immer noch nicht so richtig...manchmal kommt das Formular einfach mehrere Male...jeweils mit einem anderen Wort...konnte bis jetzt nicht feststellen, welche Wörter da miteinander auftauchen...auf jeden Fall sind es NICHT nur Wörter mit done = 1, aber auch nicht solche mit done = 0...was hab ich denn Falsch gemacht?
danke und gruss!
 
Spescha hat gesagt.:
...manchmal kommt das Formular einfach mehrere Male...jeweils mit einem anderen Wort...konnte bis jetzt nicht feststellen, welche Wörter da miteinander auftauchen...auf jeden Fall sind es NICHT nur Wörter mit done = 1, aber auch nicht solche mit done = 0...was hab ich denn Falsch gemacht?
danke und gruss!
Wundert mich nicht, wenn in einer Schleife mehrmals der komplette <html>source</html> generiert wird, dafür aber ohne <head>!
Mich wundert eher wie tolerant Dein Browser ist ;)
 
sollte aber nicht ich hole mit meiner Query ja nur einen einzigen Datensatz aus der Datenbank, also sollte der HTML-Teil auch nur einmal ausgegeben werden...oder?
Weiss jemand, wo der Fehler liegen könnte?
gruss
 
Du hast das falsch verstanden:

Die Schleife soll nur so lange laufen, bis die $done 1 wird

und danach echo

PHP:
<?php 
include ("dbconnect.php"); 
$done = 0; 
while ($done == 0) 
    { 
         srand ((double)microtime()*1000000); 
    $rand_id = rand(1, 6); 
         $abfrage = "SELECT id, deutsch, english, done FROM table_voc_engl WHERE id = '$rand_id'"; 
    $abfragen = mysql_query($abfrage); 
$row = mysql_fetch_array($abfragen)) 
 $done = $row["done"]; 

 $english = $row['english']; 
                 $id = $row['id']; 

      
         } 
          echo $row['deutsch'] . "<br>";    
          echo $id; 
             echo "<html>"; 
               echo "<body>"; 
                 echo "<form action=\"abfrage_voc.php\" method=\"post\">"; 
                  echo "<input type=\"hidden\" name=\"english\" value=\"$english\">"; 
                  echo "<input type=\"hidden\" name=\"id\" value=\"$id\">"; 
                  echo "<input type=\"text\" name=\"eingabe\" size=\"20\" maxlength=\"30\">"; 
                  echo "<input type=\"submit\" name=\"submit\" value=\"Senden\">"; 
                 echo "</form>"; 
                 echo "<a href=\"close.php\">Schliessen</a>"; 
                 echo "</body>"; 
             echo "</html>"; 
?>
 
Zurück