Fehler bei Darstellung
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfragen
abschicken
akt
anweisung
beispiel
bild
button
code
dank
fehler
feld
formular
forum
glauben
grad
interpreter
knopf
post
sache
verzweigung
-
[Sorry für die Übrschrift, meine natürlich Fehler bei Darstellung!]
Hallo Limaner
Möchte ein Formular abschicken mit versteckten Felder über ein Bild:
<?PHP echo \"<table width=\\\"400\\\" border=\\\"0\\\" cellspacing=\\\"3\\\" cellpadding=\\\"3\\\" align=\\\"center\\\">\"; echo \"<tr>\"; echo \"<td width=\\\"100\\\" height=\\\"50\\\"><form name=\\\"gb\\\" action=\\\"acp.php\\\" method=\\\"post\\\"><input type=\\\"hidden\\\" name=\\\"akt\\\" value=\\\"gb\\\"><input type=\\\"image\\\" src=\\\"beta_images/acp_gb.gif\\\" title=\\\"Hier können Gästebucheinträge editiert und gelöscht werden!\\\"></form></td>\"; echo \"<td width=\\\"100\\\" height=\\\"50\\\"><form name=\\\"ls\\\" action=\\\"acp.php\\\" method=\\\"post\\\"><input type=\\\"hidden\\\" name=\\\"akt\\\" value=\\\"ls\\\"><input type=\\\"image\\\" src=\\\"beta_images/acp_schrift.gif\\\" title=\\\"Hier kann die Laufschrift bearbeitet werden!\\\"></form</td>\"; echo \"<td width=\\\"100\\\" height=\\\"50\\\"><form name=\\\"sb\\\" action=\\\"acp.php\\\" method=\\\"post\\\"><input type=\\\"hidden\\\" name=\\\"akt\\\" value=\\\"sb\\\"><input type=\\\"image\\\" src=\\\"beta_images/acp_profile.gif\\\" title=\\\"Hier können die Steckbriefe bearbeitet werden!\\\"></form</td>\"; echo \"<td width=\\\"100\\\" height=\\\"50\\\"><form name=\\\"lc\\\" action=\\\"acp.php\\\" method=\\\"post\\\"><input type=\\\"hidden\\\" name=\\\"akt\\\" value=\\\"lc\\\"><input type=\\\"image\\\" src=\\\"beta_images/acp_links.gif\\\" title=\\\"Die Top 50 der Links!\\\"></form</td>\"; echo \"</tr>\"; echo \"</table>\"; ?>
Mitm FF geht es, aber mitm IE überhaupt nicht, er schickt glaube ich falschen Werte weiter?!!?
und wenn ich grad dabei bin, gibt es eigentlich einen Unterschied im echo zwischen
echo \" name=\\\"bla\\\" \";
und
echo \" name=\'bla\' \";
Danke
Beitrag geändert: 29.4.2008 10:55:54 von singen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Wie fragst du in PhP den Wert denn ab? So im groben sehe ich da keinen wirklichen Fehler. Würde anstelle von Formularen zur Verzweigung direkt Links nutzen, das ist einfacher ;)
-
Wie fragst du in PhP den Wert denn ab? So im groben sehe ich da keinen wirklichen Fehler. Würde anstelle von Formularen zur Verzweigung direkt Links nutzen, das ist einfacher ;)
Würde ich auch sagen.
Aber wenn es schon ein Formular sein soll, dann mach doch wirklich nur eins und nicht für jeden Link ein eigenes. Außerdem haben die ganzen forms keinen submit-Button, du kannst von Glück reden, dass der FF überhaupt irgendwas macht. -
Danke für die schnelle Antwort.
<?PHP if ($akt == \"ls\") {anweisung} else if ($akt == \"sb\") {anweisung} ... u.s.w. ?>
Ich dachte, dass der Fehler beim Abschicken liegen muss..
weil sobald ich die Sachen geschickt habe \"erstellt\" der Interpreter die Folgeseite, oder?
.. umd mit den Links gehts glaube ich auch nicht... kann die Variablen nur mit POST übergeben!
...
Als submit-Button geht doch das Bild, oder? die sachen werden mitm IE auch übergeben, aber es kommt ne falsche Folgeseite
Beitrag geändert: 29.4.2008 11:10:55 von singen -
Wird $akt vorher irgendwie zugewiesen oder woher bekommt das seinen Wert? Ansonsten gibt es erstmal Haue für die Aktivierung von register_globals ;D
-
.. umd mit den Links gehts glaube ich auch nicht... kann die Variablen nur mit POST übergeben!
Du kannst doch statt POST einfach GET verwenden. Die Links sähen dann irgendwie so aus acp.php?akt=gb und abfragen kannst du sie mit if($_GET[\'akt]==\'gb\')
Zu deiner zweiten Frage:
<? echo \"$var\"; // gibt wert von var aus ?>
prüft alles was zwischen den \"...\" steht auf mögliche Variablen und gibt den Wert direkt aus. Wenn $var=\'foo\' ist, würde also foo ausgegeben werden.
Da der Interpreter aber nicht weiß, wenn du \" in der Ausgabe verwendest, ob das nun das Ende sein soll, oder noch was kommt, musst du \" im echo ecsapen mit \\\". Bei \' brauchst das das natürlich nicht, da das ein anderes Zeichen ist.
Genauso kannst du echo mit \' einleiten
<? echo \'$var\'; // gibt $var aus ?>
das prüft entsprechend nicht auf Variablen, $var würde $var ausgegeben werden. -
Wenn du unbedingt ein Bild benötigst für deinen Knopf, dann kannst du den Knopf anstatt mit dem Image Typ auch über CSS gestalten. Dann könntest du vier Submit Buttons hinsetzen die jeweils verschieden gestaltet sind. Alle müssten den selben Namen haben aber unterschiedliche Values oder einfach nur unterschiedliche Namen ;) Wobei ersteres natürlich leichter ist.
-
Habe jetzt mal die Bilder weggemacht und mit type=\\\"submit\\\" value=\\\"OK\\\" versucht...
geht auch nicht, es wird immer nur das erste Formular korrekt übergeben.. -
Du sollst auch nur ein Formular definieren ;)
Hab mal ein Beispiel dazu gemacht:
<?php echo \'<form name=\"menu\" action=\"index.php\" method=\"post\">\'.PHP_EOL; echo \'<table width=\"400\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\" align=\"center\">\'.PHP_EOL; echo \'<tr>\'.PHP_EOL; echo \'<td width=\"100\" height=\"50\"><input type=\"submit\" name=\"gb\" style=\"border: 0; background: url(./img/meinBild.jpg) no-repeat; width: 20px; height: 100px;\" /></td>\'.PHP_EOL; echo \'<td width=\"100\" height=\"50\"><input type=\"submit\" name=\"ls\" style=\"border: 0; background: url(./img/meinBild.jpg) no-repeat; width: 20px; height: 100px;\" /></td>\'.PHP_EOL; echo \'<td width=\"100\" height=\"50\"><input type=\"submit\" name=\"sb\" style=\"border: 0; background: url(./img/meinBild.jpg) no-repeat; width: 20px; height: 100px;\" /></td>\'.PHP_EOL; echo \'<td width=\"100\" height=\"50\"><input type=\"submit\" name=\"lc\" style=\"border: 0; background: url(./img/meinBild.jpg) no-repeat; width: 20px; height: 100px;\" /></td>\'.PHP_EOL; echo \'</tr>\'.PHP_EOL; echo \'</table>\'.PHP_EOL; echo \'</form>\'.PHP_EOL;?>
Du musst lediglich abfragen ob gb, ls, sb oder lc im POST vorhanden sind ;) Falls du Zugriff auf Javascript hast, dann kannst du dein ACT Feld als Hidden mitschicken und beim OnSubmit dem Hidden Feld den Namen vom gedrückten Submit Knopf zuweisen
dazu musst du im onclick des submit inputs nur folgendes schreiben: document.menu.act.value = this.name;
<?PHP echo \'<form name=\"menu\" action=\"index.php\" method=\"post\">\'.PHP_EOL; echo \'<input type=\"hidden\" name=\"akt\" value=\"\" />\'.PHP_EOL; echo \'<table width=\"400\" border=\"0\" cellspacing=\"3\" cellpadding=\"3\" align=\"center\">\'.PHP_EOL; echo \'<tr>\'.PHP_EOL; echo \'<td width=\"100\" height=\"50\"><input type=\"submit\" name=\"gb\" onclick=\"document.menu.akt.value = this.name;\" style=\"border: 0; background: url(./img/meinBild1.jpg) no-repeat; width: 20px; height: 100px;\" /></td>\'.PHP_EOL; echo \'<td width=\"100\" height=\"50\"><input type=\"submit\" name=\"ls\" onclick=\"document.menu.akt.value = this.name;\" style=\"border: 0; background: url(./img/meinBild2.jpg) no-repeat; width: 20px; height: 100px;\" /></td>\'.PHP_EOL; echo \'<td width=\"100\" height=\"50\"><input type=\"submit\" name=\"sb\" onclick=\"document.menu.akt.value = this.name;\" style=\"border: 0; background: url(./img/meinBild3.jpg) no-repeat; width: 20px; height: 100px;\" /></td>\'.PHP_EOL; echo \'<td width=\"100\" height=\"50\"><input type=\"submit\" name=\"lc\" onclick=\"document.menu.akt.value = this.name;\" style=\"border: 0; background: url(./img/meinBild4.jpg) no-repeat; width: 20px; height: 100px;\" /></td>\'.PHP_EOL; echo \'</tr>\'.PHP_EOL; echo \'</table>\'.PHP_EOL; echo \'</form>\'.PHP_EOL; ?>
//Edit: Hab das Onclick als Beispiel beigefügt.
Beitrag geändert: 29.4.2008 12:53:31 von evil-devil -
Danke für die Hilfe!..
habe den Fehler grad gefunden, nach den </form fehlte ein > ...
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage