Eingabe mit Datenbank vergleichen

item: Jepp, das ist der ganze Code

item: Ausprobieren: Copy&Paste in eine Datei und diese ausprobieren

item: Nope, ich mach dir deinen Code nicht fertig

Also, vergleich mal mein Beispiel mit deinem. Es hat in meinem einen Teil den ich zu Testzwecken gesetzt habe. Aber das steht da ja als Kommentar drin. Da geht es nur darum, dass ich zum Test keine DB eingebunden habe sondern die Daten direkt im Script habe. Dort musst du dein DB-Aufruf so machen wie du ihn bereits hast.

Und den Rest habe ich im Code bereits erläutert. Frag genauer was du darin nicht verstehst. Ich habe keine Lust meinen Code jetzt ein zweites mal komplett zu beschreiben, da ich dies bereits getan hab. Also frag nach Details die du nicht verstehst und mittels Doku von php.net nicht nachvollziehen kannst.


Was für dich ev. ungewohnt erscheint, ist der abschnitt echo <<<HTML....HTML; und die {} darin.
Der Vrteil daran, man kann sauberen HTML-Code schreiben ohne jede Zeile mit echo zu beginnen und dauernd den String mit Punkten zusammenzusetzen
Dazu kann ich dir diese 2 Seiten der PHP-Daku nahelegen
a) Die komische <<<HTML...HTML: Heredoc-Syntax
b) Und der Teil über die {} Complex (Curly) Syntax

Item: Da fehlt aber ein paar Dinge, oder vielleicht hast du es weggelassen um deine Tests auszuführen. Denn du hast nur 3 verschiedene Texts im Auswahl.

Item: Habe ich gemacht, funktioniert aber nicht. Ich bekomme diese Fehlemeldung wenn ich meine gesamte Code mit deiner vertausche:
Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0

Fatal error: Unknown: Failed opening required '/home/t2if/jeske175/public_html/Help/index2.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0


Ok, sprichst du von dieser Teil "//Simuliere die DB-Abfrage" ? Diese hab ich gar nicht verstanden. Soll ich dieser dann mit meiner DB-Aufruf tauschen ?

PHP:
//Dieser Teil ist bei dir im WHERE -Teil des SQLs 
if($_POST['text'] != 'All'){
    $data = array_filter($data, create_function('$item', "return (\$item['text'] === '{$_POST['text']}');"));
}
Hab ich nicht verstanden.

PHP:
//Erstelle in verstekctes Feld mit dem Text. Dmit idese Info beim neu laden nicht verloren geht
echo "<input type='hidden' value='{$_POST['text']}' name='text' />\n";
Ok, aber wenn die Seite neu geladen werden soll, dann werden ja neue Vokabeln augelistet oder nicht ?

Was für dich ev. ungewohnt erscheint, ist der abschnitt echo <<<HTML....HTML;
Ja, das war mir ungewohnt, aber ich habe es schon so verstanden, ist ja logisch, dass es die echo's ersetzt. ;)


Ich habe keine Ahnung was ich damit machen soll, aber naja. Danke, dass ihr alle angewortet habt. :)
 
Ist das für mich ?

Wenn ja, dann habe ich gar nichts verstanden. :confused:

Meine Seite soll nicht eine offizielle Seite werden. Ist "nur" ein Schulprojekt. Ich habe da ein paar Monate PHP in der Schule gelernt, jetzt soll ich diese Seite erstellen. Ich habe z.B. niemals von Ajax in der Schulunterricht gehört, sondern einbisschen im Internet während ich nach Hilfe suchte.

Ja, das war für dich ;)
Kurze Erklärung:

Du hast z.B. folgendes Query:
SQL:
SELECT * FROM myTable WHERE text='abc'
In PHP ersetzt du 'abc' durch $_GET['text'], also durch Daten von der URL abhängen bzw. vom Nutzer verändert werden können:
PHP:
$sql = "SELECT * FROM myTable WHERE text='".$_GET['text']."'";
Normalerweise sieht das Query am Ende so aus:
SQL:
SELECT * FROM myTable WHERE text='hallo'
Man kann aber den Parameter text aber auch gezielt verändern:
Code:
script.php?text='; DROP TABLE myTable
Und das Query würde dann so aussehen:
SQL:
SELECT * FROM myTable WHERE text=''; DROP TABLE myTable
Und deine Tabelle wäre weg. Es gibt allerdings noch viel mehr Möglichkeiten!


Ob du es anwendest, musst du entscheiden.
Auf der einen Seite ist es nur ein Schulprojekt, d.h. solange du es nicht online stellst und du es nur präsentiert, passiert nichts großartiges. Wobei das Query oben im Beispiel schon scheitert, wenn der Benutzer im Suchfeld (bzw. für text) u.a. ein einfaches Anführungszeichen verwendet!

Auf der anderen Seiten könntest du natürlich bei deinem Lehrer etwas damit angeben ;)
 
Item: Da fehlt aber ein paar Dinge, oder vielleicht hast du es weggelassen um deine Tests auszuführen. Denn du hast nur 3 verschiedene Texts im Auswahl.
Jepp. Meins ist ja nur ein Beispiel mit Beispieldaten

Fatal error: Unknown: Failed opening required '/home/t2if/jeske175/public_html/Help/index2.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0
Keine Ahnung was das für ein Fehler ist. Ich habe kein required() in meinem Beispiel. Irgendwas mit irgendwelchen Berechtigungen auf deinem Server scheint das Problem zu sein - das hat jedoch mMn nix mit dem Code zu tun, da sonst ganz andere Fehlermeldungen erscheinen würden.

Ok, sprichst du von dieser Teil "//Simuliere die DB-Abfrage" ? Diese hab ich gar nicht verstanden. Soll ich dieser dann mit meiner DB-Aufruf tauschen ?
Jepp.

PHP:
//Erstelle in verstecktes Feld mit dem Text. Damit diese Info beim neu laden nicht verloren geht
echo "<input type='hidden' value='{$_POST['text']}' name='text' />\n";
Ok, aber wenn die Seite neu geladen werden soll, dann werden ja neue Vokabeln augelistet oder nicht ?
Gut, ich werte in meinem Beispiel noch nicht unterschiedlich zwischen <next> und <check>. Ich habe mal nur den <check> implementiert. Beim <next> müssen natürlich die Felder nicht neu übergeben werden und auch der hidden-Tag kann man dann weglassen.
 
Zurück