Veröffentlicht 24. August 201015 j Hallo, ich habe ein script welches "Vertipper" (Beispiel: Lufthanas statt Lufthansa) generiert. Ich würde es gerne haben, das dass Script erst auf Anforderung startet. Hier ignoriert das Script aber die Abfrage über das Formular und gibt automatisch das Ergebnisse aus. Kann jemand weiterhelfen? <?php error_reporting (0); ?> <html> <body> <form> Search <input type=text value="<?=$_GET['titel']?>" name=q> <input type=submit> </form> <hr> <? //vertipper if (strlen ($_GET['titel']) > 0) { function vertipper($wort) { $len = strlen($wort); $liste = array(); // 1. Weggelassene oder doppelte Buchstaben for ($i = 0; $i < $len; ++$i) { $liste[] = substr($wort, 0, $i) . substr($wort, $i+1); $liste[] = substr($wort, 0, $i+1) . substr($wort, $i); } // 2. Buchstabendreher for ($i = 0; $i < $len-1; ++$i) { $liste[] = substr($wort, 0, $i) . $wort{$i+1} . $wort{$i} . substr($wort, $i+2); } // 3. Auf der Tastatur nahe liegende Buchstaben $tastaturzeilen = array( '1234567890ß', 'qwertzuiopü', 'asdfghjklöä', 'yxcvbnm', ); for ($i = 0; $i < $len; ++$i) { $buchst = $wort{$i}; $daneben = array(); foreach ($tastaturzeilen as $zeile) { if (($pos = strpos($zeile, $buchst)) !== false) { if ($pos-1 >= 0) { $daneben[] = $zeile{$pos-1}; } if ($pos+1 < strlen($zeile)) { $daneben[] = $zeile{$pos+1}; } } } foreach ($daneben as $ersatz) { $vertipper = $wort; $vertipper{$i} = $ersatz; $liste[] = $vertipper; } } return array_values(array_unique($liste)); } print_r(vertipper($_GET['titel'])); } ?> </body> </html>
25. August 201015 j Dann frag mittels IF ab, ob deine $_GET-Variable gesetzt ist. Ist das der Fall, dann führe deinen Programmcode (die Ausgabe) aus, wenn nicht, dann wird nichts getan.
25. August 201015 j Das habe ich nicht verstanden. Ich habe doch bereits ein IF-Abfrage gesetzt. if (strlen ($_GET['titel']) > 0)
25. August 201015 j Ich rufe meine Seite aus und das Ergebnis ist da. Das heißt, das Script bringt mir sofort das Ergebnis, ohne das ich es ausführen muss. Das <form> wird komplett ignoriert.
26. August 201015 j Moin moin. Aaaaaalsooo: zuerst ist das php tag vor //vertipper nicht komplett (<?php nicht nur <?) das selbe ist auch im value im form und das = ist auch fehl am platz. falsch: value="<?=$_GET['titel']?>" richtig: value="<?php $_GET['titel']?>" dann: greifst du $_GET['titel'] ab, setzt die Eingabe im Formfeld mit q (<input type=text value="" name=q>) dein script ist richtig aber die variable titel wird nicht übergeben sondern die variable q. also aus dem q ein titel machen: und zu deinem problem, dass direkt das Ergebnis angezeigt wird. Ich wette das du die seite immer mit gesetzter variable erneuert hast wenn du das http://[...]/seite.php?title=beispielwort nicht weg machst, funktioniert das script natürlich auch, weil es die variable titel ja bekommt. also bei imr läufts jetz einwandfrei... jetzt würde mich aber brennend interessieren wofür man ein vertipperscript macht Gruß Fabi
26. August 201015 j Moin moin. Aaaaaalsooo: zuerst ist das php tag vor //vertipper nicht komplett (<?php nicht nur <?) das selbe ist auch im value im form und das = ist auch fehl am platz. falsch: value="<?=$_GET['titel']?>" richtig: value="<?php $_GET['titel']?>" falsch, php ini directive shot_open_tags "<?" ist gleichbedeutend mit "<?php" und "<?=" gleichbedeutend mit "<? echo" also auch "<?php echo"
26. August 201015 j heißt aber auch immer, das es aktiviert sein muss... bzw interpretiert werden können muss und grade wenn man das was andere macht sollte man doch beim Original bleiben. Es kann jetzt wirklich keiner Argumentieren, dass short-tags zeit sparen... und es macht die ganze sache übersichtlicher, meiner Meinung nach, zumindest... P.S. das mit dem = statt echo war mir neu. Merci ^^
26. August 201015 j ich würde nie behaupten das man mit short_open_tags zeit spart. und sicher kann man nicht davon ausgehen das es aktiviert ist, allerdings ist es wohl standardmäßig eingeschaltet. und wäre es nicht an hätte das script gar nichts gemach, wäre ja nich mal interpretiert worden. und ja ich halte short_open_tags für schlechten stil, aber falsch ist es deswegen nicht ^^ gerne ^^
27. August 201015 j Hallo NoiR, klappt auch mit deinen Angaben nicht. Da das Script bei dir funktioniert, kannst du deine Version hier reinkopieren? Dann fällt mir vielleicht der Fehler auf. PS: Ich habe das Vertipper tool für mich gebaut zwecks eines Projekt für die Uni.
27. August 201015 j Ja klar kein Problem. Hab allerdings noch ein bisschen dran rumgespielt. hab $_GET[...] direkt abgefangen um zu vermeiden, dass man am Anfang mit einer undefinierten Variable arbeitet... dann hab ich aus "titel" "title" gemacht^^weil ich mich einfach an English im Code gewöhnt hab^^ achso und das error_reporting hab ich aufgedreht... vielleicht liegts ja bei dir noch an was anderem. <?php error_reporting (E_ALL); if(isset($_GET['title'])) {$title = $_GET['title'];} else {$title = "";} ?> <html> <body> <form> Search <input type=text value="<?php echo $title?>" name=title> <input type=submit> </form> <hr> <?php //vertipper if (strlen ($title) > 0) { function vertipper($wort) { $len = strlen($wort); $liste = array(); // 1. Weggelassene oder doppelte Buchstaben for ($i = 0; $i < $len; ++$i) { $liste[] = substr($wort, 0, $i) . substr($wort, $i+1); $liste[] = substr($wort, 0, $i+1) . substr($wort, $i); } // 2. Buchstabendreher for ($i = 0; $i < $len-1; ++$i) { $liste[] = substr($wort, 0, $i) . $wort{$i+1} . $wort{$i} . substr($wort, $i+2); } // 3. Auf der Tastatur nahe liegende Buchstaben $tastaturzeilen = array( '1234567890ß', 'qwertzuiopü', 'asdfghjklöä', 'yxcvbnm', ); for ($i = 0; $i < $len; ++$i) { $buchst = $wort{$i}; $daneben = array(); foreach ($tastaturzeilen as $zeile) { if (($pos = strpos($zeile, $buchst)) !== false) { if ($pos-1 >= 0) { $daneben[] = $zeile{$pos-1}; } if ($pos+1 < strlen($zeile)) { $daneben[] = $zeile{$pos+1}; } } } foreach ($daneben as $ersatz) { $vertipper = $wort; $vertipper{$i} = $ersatz; $liste[] = $vertipper; } } return array_values(array_unique($liste)); } print_r(vertipper($title)); } ?> </body> </html> [/PHP] Hier zum Beweis, das ich nicht schwindle Für die Uni? Damit eure Profs entziffern können, was ihr wohl eigentlich schreiben wolltet? Fabi
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.