Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Abfrage zum Script manuell anstossen

Empfohlene Antworten

Veröffentlicht

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>

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.

Das habe ich nicht verstanden. Ich habe doch bereits ein IF-Abfrage gesetzt.

if (strlen ($_GET['titel']) > 0)

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.

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

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"

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 ^^

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 ^^

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.

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? :D

Fabi

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.