Gross/Kleinschreibung

tittli

Erfahrenes Mitglied
Hallo
Sorry, ich muss hier ja langsam nerven mit meinen Threads, aber ich habe im Moment eine Denkblockade...
Hab jetzt mal den Voc-Trainer gemacht, funktioniert auch mehr oder weniger...jetzt möchte ich, dass wenn ein Wort abgefragt wird, man nicht auf die Gross/Kleinschreibung zu achten hat. Ist das irgendwie möglich? Danke für die Vorschläge!
gruss
 
die Überprüfung ist ganz einfach...:

PHP:
if ($eingabe == $english)
 	{
         echo "Richtig!";
         $done = 1;
         $eingabe_richtig = "UPDATE table_voc_engl SET done = '$done' WHERE id = '$id'";
         echo mysql_error();
         $eingeben_richtig = mysql_query ($eingabe_richtig);
         echo $done;
         include ("abfrage.php");
         }
 else
 	{
         echo "Falsch!";
         include ("abfrage.php");
         }

Du weisst nicht was ein Voc-Trainer ist?...naja sorry...wissen vielleicht nicht alle...ist halt ein kleines Programm um Wörter/Vokabeln zu lernen.

gruss
 
erst mal ne Kleinigkeit:

Du hast einen Denkfehler in deinem Vokabeltrainer:

Du lässt immer nur eine richtige Antwort zu.

Es ist aber öfters der Fall, dass es mehrere Lösungen gibt.

Also:
erstes Query ruft das Wort auf, das zu übersetzen ist

dann kommt die Eingaberoutine

und dann erst die Kontrolle mit einem Datenbankabgleich

Code:
SELECT * FROM vokabeln WHERE englischeswortfeld = '".$zuuebersetzen."' 
AND deutscheswortfeld LIKE '".$eingabe."'
Dann zählst du einfach die Anzahl der Ergebnisse und wenn die > 0 sind, war die Eingabe korrekt

durch das LIKE ist die Groß- und Kleinschreibung egal

Beispiel für die Tabelle, damit das mit den Ergebnissen klarer wird:

Deutsch - Englisch
der - the
die - the
das - the
ein - a
ein - an
ein - on
Haus - house
Haus - building

Und wie man schön sieht, sollte man noch jeweils ein deutsches und ein englisches Zusatzfeld machen, damit man eben noch dazu schreiben kann, was gemeint ist.
 
Zuletzt bearbeitet:
ja...ich weiss dass ich da einen Denkfehler hatte...aber es ist mir (wenigstens in dieser Anfangsphase) nicht so wichtig, dass es mehrere Möglichkeiten gibt. Das ganze soll jetzt einfach mal funktionieren...die Details kommen später;-)...danke trotzdem!

das mit dem strtolower() hat sehr gut funktioniert...danke sehr!

jetzt habe ich aber ein weiteres Problem, was nicht mehr mit der Gross/Kleinschreibung zusammenhängt:
Nach jeder richtigen Eingabe wird in der Spalte 'done' eine eins geschrieben, damit schon richtig eingegebene Wörter kein zweites Mal gefragt werden. Und da besteht das Problem. Habe das mal so versucht, aber da stimmt etwas nicht:

PHP:
<?php
 include("dbconnect.php");
 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);
 for ($i = 1; $i < 6; ++$i)
 	{
 	while ($row = mysql_fetch_array($abfragen))
 		{
         	$done = $row["done"];
         	echo $done;
                 if ($done == 1)
                 	 {
                          exit;
                          }
		if ($done == 0)
         		{
         		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>";
			}

		}
	}
 ?>

d.h. da wird überprüft, ob done 1 oder 0 ist. Wenn done 1 ist, soll die Abfrage noch einmal gemacht werden, und genau da bin ich steckengeblieben. Wie schaffe ich es, dass das Script nach dem
PHP:
if ($done == 1)
                 	 {
                          exit;
                          }
(bei true) nocheinmal von vorne beginnt?

Oder habe ich da schon völlig falsch angesetzt?
danke für eure Hilfe
gruss
 
Das machst du ganz einfach:

Du setzt als erstes $done auf 1

und machst die ganze SQL-Geschichte in eine while Schleife while ($done = 0)
sobald also eine Vokabel geladen wurde, die noch nicht dran war, wird die Schleife verlassen.

Jetzt aber noch eine Kleinigkeit:
Bevor die Schleife los geht musst du noch ein Querry machen um sicher zu gehen, dass nicht alle Vokabeln schon dran waren und du eine Endlosschleife hast.
 
hmm...das verstehe ich jetzt nicht ganz...wieso am Anfang $done auf 1 setzten?...kannst du mal ein Beispiel machen?
gruss
 
Zurück