select options in get schreiben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
ausgabe
beispiel
code
ergebnis
formular
http
leben
nummer
option
punkt
re
ritter
spieler
tabelle
team
text
url
windows
zeile
-
ich habe in einer for Schleife mit echo eine Tabelle erstellt in der letzten Spalten kommt ein ref="/tag/formular">Formular wo man in jeder Zeile zwicschen 4 Dingen wählen kann, also mit <select><option value und so weiter.
jeztt möchte ich mit einem Anbsendne Buttom alle eingaben in get schrieben lassen, also r1=2&r2=3 uns so weiter.
habe schon viel ausprobiert und gegoogelt aber nicht gefunden.
Im notfall geht es auch mit post, aber mit einem submit.
Beitrag zuletzt geändert: 1.1.2012 11:37:32 von unlikus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
unlikus schrieb:
weil ja so post wie get daten automatisch von einem formular behandelt werden, kann man nicht genau wissen, was eigentlich dein problem ist.
ich habe in einer for Schleife mit echo eine Tabelle erstellt in der letzten Spalten kommt ein Formular wo man in jeder Zeile zwicschen 4 Dingen wählen kann, also mit <select><option value und so weiter.
jeztt möchte ich mit einem Anbsendne Buttom alle eingaben in get schrieben lassen, also r1=2&r2=3 uns so weiter.
habe schon viel ausprobiert und gegoogelt aber nicht gefunden.
Im notfall geht es auch mit post, aber mit einem submit.
wenn man auf submit klickt, je nach dem wo die daten hingeschickt weden, kannst du sie so ansehen:
oder ebenecho '<pre>' . print_r($_GET, true) . '</pre>';
echo '<pre>' . print_r($_POST, true) . '</pre>';
-
ich meinte wie die eizelenen options einen namen bekommen, mit name geht es irgentwie nicht und dann sollen alle mit einem input submit per get oder post an eine andere Seite geschickt werden
-
unlikus schrieb:
Die einzelnen Options haben keinen eigenen Namen!!!
ich meinte wie die eizelenen options einen namen bekommen, mit name geht es irgentwie nicht und dann sollen alle mit einem input submit per get oder post an eine andere Seite geschickt werden
Das select hat einen Namen, die options haben einen Wert. Wenn das jetzt abgeschickt wird bekommt der Name vom select den Wert von der ausgewählten option. Wozu sollten die options einen eigenen Namen haben? -
Ich hoffe du weißt wie die Formulare funktionieren: http://www.w3schools.com/html/html_forms.asp
Hier wird das <Select> erklärt: http://de.selfhtml.org/html/formulare/auswahl.htm
Du kannst die Selects mit verschiedenem Namen schreiben:
<form action="get.php" method="GET"> <select name="select1"> <option value="option1"> Option 1 </option> <option value="option2"> Option 2 </option> </select> <select name="select2"> <option value="option1"> Option 1 </option> <option value="option2"> Option 2 </option> </select> <input type="submit" value="Senden">
Das GETest du dann in der "get.php" mit
$select1 = $_Get['select1']; $select2 = $_Get['select2'];
Dieses GET hat dann den Wert des vorher gesendeten value der ausgewählten option.
MfG
Beitrag zuletzt geändert: 1.1.2012 14:31:52 von copynpaste -
Hallo
Wenn Du in jeder Zeile ein eigenes Formular hast
dann kannst Du ein hidden-field mit der ID (Zeilen-Nummer) machen
dann weisst Du nach Absenden des Formulars, aus welcher Zeile es kommt
BSP Code für jeweils letzte Spalte in der Tabellen-Zeile:
<form name="form1" method="get" action=""> Wie gefällt Dir das ?<br> <select name="wertung"> <option value="1">Ich liebe es</option> <option value="2">echt gut</option> <option value="3">naja geht so</option> <option value="4">ist doch doof</option> </select> <br> <input type="hidden" name="zeile" value="1"> <input type="submit" name="go" value="Abschicken"> </form>
Wenn es aus einer Schleife mit Zähler kommt,
dann kannst Du im Hidden-Field jeweils den Zähler setzen
echo "<table> \r\n"; $i=1; foreach($data as $item) { echo "<tr> \r\n"; echo "<td> \r\n"; // hier Tabellen-Zeile mit $item Inhalt in erster Spalte echo "</td> \r\n"; echo "<td> \r\n"; // und dann Zeilen-Zähler im Formular in der zweiten Spalte ?> <form name="form1" method="get" action=""> Wie gefällt Dir das ?<br> <select name="wertung"> <option value="1">Ich liebe es</option> <option value="2">echt gut</option> <option value="3">naja geht so</option> <option value="4">ist doch doof</option> </select> <br> <input type="hidden" name="zeile" value="<?php echo $i; ?>"> <input type="submit" name="go" value="Abschicken"> </form> <?php echo "</td> \r\n"; echo "</tr> \r\n"; } echo "</table> \r\n";
dann bekommst Du Ergebnis wie z.B.:
if ( !empty($_GET['zeile']) ) { $ergebnis = urldecode($_GET['wertung']); echo "<br>Bewertung für Zeile ".$_GET['zeile']." ist: ".$ergebnis."\r\n"; }
ist zwar hier Spaghetti-Code, aber nur zur Veanschaulichugg des Prinzips
-
Danke, hat mir wirklich sehr geholfen.
2 Fragen zum letzten Cdodebeispiel:
Was bedeutet bei echo \r?
Was ist foreach? -
unlikus schrieb:
carriage return es gibt drei zeilenenden in der it, \r gibt es nur bei windows. aus dem grund sollte man sowas auch nicht hardcoded verwenden. php hat dafür eine konstante, die automatisch richtig ist: PHP_EOL
Danke, hat mir wirklich sehr geholfen.
2 Fragen zum letzten Cdodebeispiel:
Was bedeutet bei echo \r?
Was ist foreach? -
Hallo
ja, das \r kannst Du auch weglassen,
ich mache es halt immer mit rein, weil ich auf Windows arbeite
und bei manchen Webspaces, wenn man Online erstellte Dateien per ftp abholt,
dann wird nur so der Umbruch in der abgeholten Datei (unter Win) auch angezeigt
meistens geht eas aber auch mit nur \n (für Zeilnumbruch im Quellcode)
zu foreach()
damit gehst Du jedes Element in einem Array durch,egal wieviele Elemente es hat
dadurch erspart man sich einen count() für eine for-Schleife und ist unabhängig von der Anzahl
siehe dazu: http://php.net/manual/de/control-structures.foreach.php
Beispiel: (zweidimensionales Array)
<?php // ------------------------------------------ $spielerdaten = array( array('7', 'Thomas', '22', 'Ritter'), array('5', 'Markus', '4', 'Monster'), array('3', 'Johannes', '81', 'Ritter'), array('2', 'Barbara', '35', 'Der Adel') ); // ------------------------------------------ $i = 1; foreach($spielerdaten as $spieler) { echo "<br />Nummer: ".$i."\r\n"; echo "<br />ID: ".$spieler[0]."\r\n"; echo "<br />Name: ".$spieler[1]."\r\n"; echo "<br />Punkte: ".$spieler[2]."\r\n"; echo "<br />Team: ".$spieler[3]."\r\n"; echo "<br />\r\n"; $i++; } // ------------------------------------------ ?>
Ausgabe:
Nummer: 1 ID: 7 Name: Thomas Punkte: 22 Team: Ritter Nummer: 2 ID: 5 Name: Markus Punkte: 4 Team: Monster Nummer: 3 ID: 3 Name: Johannes Punkte: 81 Team: Ritter Nummer: 4 ID: 2 Name: Barbara Punkte: 35 Team: Der Adel
Wenn Du die Daten aus MySQL holst und mit mysql_fetch_assoc() in Array legst
dann kannst Du auch direkt die Spalten-Namen als KEY verwenden
$res = mysql_query($sql); $data = array(); while($row = mysql_fetch_assoc($res)) { $data[] = $row; } foreach($data as $item) { ## echo "<pre>\r\n"; ## print_r($item); ## echo "</pre>\r\n"; echo "<br />ID: ".$item['id']."\r\n"; echo "<br />Name: ".$item['name']."\r\n"; echo "<br />Punkte: ".$item['points']."\r\n"; echo "<br />Team: ".$item['team']."\r\n"; echo "<br />\r\n"; }
nur ein Beispiel, die Spalten-Namen (KEYs) musst Du natürlich selber kennen
:)
Beitrag zuletzt geändert: 1.1.2012 17:58:51 von favon -
favon schrieb:
also nochmals! wenn in den sourcen überall sowas steht (beispiel):
ja, das \r kannst Du auch weglassen,
ich mache es halt immer mit rein, weil ich auf Windows arbeite
und bei manchen Webspaces, wenn man Online erstellte Dateien per ftp abholt,
dann wird nur so der Umbruch in der abgeholten Datei (unter Win) auch angezeigt
meistens geht eas aber auch mit nur \n (für Zeilnumbruch im Quellcode)
und du hin und her ziehst auf zig servern mehrmals am tage, ist es auch egal, auf einem un*x wird dann \n ausgegeben und auf win \r\n, ohne dass du etwas machen musst. (sogar auf mac ist es dann richtig. und genau das nennt sich 'nicht hartkodiert' programmiert. man sollte mit allen angebotenen features von php leben! ;)<?php // ... $text = 'das ist etwas text mit END OF LINE' . PHP_EOL; // ...
-
hemiolos schrieb:
Das ist schon richtig, aber wenn es nur um die Ausgabe von HTML-Code geht ist es föllig egal ob da \r, \n oder \r\n steht. HTML ignoriert Zeilenumbrüche, dabe ist es egal wie die jetzt aussehen. Du kannst genausogut ein Leerzeichen machen.
favon schrieb:
also nochmals! wenn in den sourcen überall sowas steht (beispiel):
ja, das \r kannst Du auch weglassen,
ich mache es halt immer mit rein, weil ich auf Windows arbeite
und bei manchen Webspaces, wenn man Online erstellte Dateien per ftp abholt,
dann wird nur so der Umbruch in der abgeholten Datei (unter Win) auch angezeigt
meistens geht eas aber auch mit nur \n (für Zeilnumbruch im Quellcode)
und du hin und her ziehst auf zig servern mehrmals am tage, ist es auch egal, auf einem un*x wird dann \n ausgegeben und auf win \r\n, ohne dass du etwas machen musst. (sogar auf mac ist es dann richtig. und genau das nennt sich 'nicht hartkodiert' programmiert. man sollte mit allen angebotenen features von php leben! ;)<?php // ... $text = 'das ist etwas text mit END OF LINE' . PHP_EOL; // ...
Das Einzige wo das eine Rolle spielen könnte ist bei der Ausgabe von Textdateien. Aber auch da sollte jeder Browser in der Lage sein Zeilenumbrüche in das Systemformat zu bringen. -
hackyourlife schrieb:
was das ganze klimbimm macht ist kurz demonstriert:
...Das ist schon richtig, aber wenn es nur um die Ausgabe von HTML-Code geht ist es föllig egal ob da \r, \n oder \r\n steht. HTML ignoriert Zeilenumbrüche, dabe ist es egal wie die jetzt aussehen. Du kannst genausogut ein Leerzeichen machen.
Das Einzige wo das eine Rolle spielen könnte ist bei der Ausgabe von Textdateien. Aber auch da sollte jeder Browser in der Lage sein Zeilenumbrüche in das Systemformat zu bringen.
und wenn es dir keinen unterschied ausmacht, kann ich damit auch leben ;)< ?php $select1 = '<select>'; for($i = 1; $i <= 10; $i++) { $select1 .= "<option>$i</option>"; } $select1 .= '</select>'; $res = '<h4>ohne steuerzeichen</h4><pre>' . htmlentities($select1) . '</pre>'; $select2 = '<select>' . PHP_EOL; for($i = 1; $i <= 10; $i++) { $select2 .= "\t<option>$i</option>" . PHP_EOL; } $select2 .= '</select>' . PHP_EOL; $res .= '<hr /><h4>mit steuerzeichen</h4><pre>' . htmlentities($select2); exit('' . $res);
allerdings! wenn man sich im eigenen, generierten html-code auskennen will, hilft die zweite methode - nach meiner durchgeknallter meinung - schon enorm. oder bin ich da ganz extrem mit meiner meinung?
ja. und was browser mit html code machen, ist mir auch nicht so klar wie dir. ich habe es gehört, es sollen unterschiede geben ;)
Beitrag zuletzt geändert: 2.1.2012 9:49:54 von hemiolos -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage