Mehrere Zeilen aus Formular in DB speichern?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Innos_Zorn
Mitglied
Beiträge: 127
Registriert: 28.06.2003 12:32
Wohnort: Sternenfels
Kontaktdaten:

Mehrere Zeilen aus Formular in DB speichern?

Beitrag von Innos_Zorn »

Ich hätte da mal eine Frage:

ich habe folgenden Befehl:

Code: Alles auswählen

                        
$sql = "INSERT INTO tour_table(tour_band, tour_day, tour_month, tour_year, tour_city, tour_location)
VALUES ('$tour_band','$tour_day','$tour_month','$tour_year','$tour_city','$tour_location')";
if(!$result = $db->sql_query($sql))
und das dazu gehörige HTML Eingabe Feld:

Code: Alles auswählen

<tr>
	<td class="row2"> <span class="gen">{L_BAND}:<input class="post" type="text" size="40" maxlength="100"name="tour_band" value="{TOUR_BAND}"><br></td>
</tr>
<tr>
	<td class="row2"><span class="gen">{L_DATE}:<input class="post" type="text" size="2" maxlength="2"name="tour_day" value="{TOUR_DAY}">.<input class="post" type="text" size="2" maxlength="2"name="tour_month" value="{TOUR_MONTH}">.<input class="post" type="text" size="4" maxlength="4"name="tour_year" value="{TOUR_YEAR}">&nbsp;
<span class="gen">{L_CITY}:<input class="post" type="text" size="40" maxlength="100"name="tour_city" value="{TOUR_CITY0}">&nbsp;
<span class="gen">{L_LOCATION}:<input class="post" type="text" size="40" maxlength="100"name="tour_location" value="{TOUR_LOCATION0}">&nbsp;</td>

    </tr>
Das ganze funktioniert auch wunderbar. Nur hätte ich gerne mehr als eine Zeile. Jedoch möchte ich das "tour_band" nur einmal eingegeben werden muss und darunter dann quasi die felder wo man datum usw. eingeben kann.
Optisch siehts dann ungefähr so aus:
http://jarofflies.de/tour.php?action=new

Das ganze soll dann immer eine komplette zeile in der Datenbank geben:
|tour_band | tour_day | tour_month | tour_year | tour_city| tour_location |
Ich probier schon 2 tage rum und bring nix zustande.
Vermutlich gehe ich den komplett falschen weg. Hab aber auch noch kein tutorial gefunden das mir weiterhilft.
Am schönsten wär es so zu realisieren wie in der Umfrage funktion des Forums wenn man eine neue umfrage erstellt. Also das anfangs nur ein Feld zur verfügung steht und nach dem absenden ein zweites erscheint usw. Aber ich komm mit dem code in der posting.php nicht ganz zurecht.
Meine Frage daher: Wie ist sowas am besten zu realisieren?
...wir waten durch ein Meer von Blut, Gib uns dafür Kraft und Mut...
JarOfFlies - Alternative-Rock Community
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

So in etwa sollte es funktionieren:

Formular:

Code: Alles auswählen

<form>
Globales Feld: <input type="text" name="foo">

<?php for($i=1; $i<=10; $i++) {
    echo 'Name nr. ' . $i . ': <input type="text" name="name[]"><br>';
    echo 'Datum nr. ' . $i . ': <input type="text" name="datum[]"><br>';
}
Formular-Empfängerdatei:

Code: Alles auswählen

$foo = $_POST['foo'];
for($i=0; $i<count($_POST['name']); $i++) {
    $name = $_REQUEST['name'][$i];
    $datum= $_REQUEST['datum'][$i];
    $db->sql_query("INSERT ... '$foo', '$name', '$datum'");
}
Benutzeravatar
Innos_Zorn
Mitglied
Beiträge: 127
Registriert: 28.06.2003 12:32
Wohnort: Sternenfels
Kontaktdaten:

Beitrag von Innos_Zorn »

erstmal danke für die schnelle antwort. Ich denk ich hab alles verstanden, nur irgendwas hab ich wohl falsch gemacht. und zwar in der template datei. Das sieht jetzt so aus

Code: Alles auswählen

<tr>
	<td class="row2"> <span class="gen">{L_BAND}:<input class="post" type="text" size="40" maxlength="100"name="foo" value="{TOUR_BAND}"><br></td>
</tr>


<?php for($i=1;$i<=10;$i++) {
<tr>
<td class="row2"><span class="gen">
echo 'Datum nr.' . $i . ':<input type="text" class="post" size="2" maxlength="2" name="tour_day[]"><input type="text" class="post" size="2" maxlength="2" name="tour_month[]"><input type="text" class="post" size="4" maxlength="4" name="tour_year[]">';
echo 'Stadt nr. ' . $i . ':<input type="text" class="post" size="40" maxlength="100" name="tour_city[]">';
echo 'Veranstaltungsort nr. ' . $i . ':<input type="text" class="post" size="40" maxlength="100" name="tour_location[]">';
</td>
</tr>
}    
und das ist seltsamerweise das ergebniss
http://jarofflies.de/tour.php?action=new
...wir waten durch ein Meer von Blut, Gib uns dafür Kraft und Mut...
JarOfFlies - Alternative-Rock Community
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Du musst dich einloggen, um Tourdaten eintragen zu können.
HTML und PHP: http://www.php4-forum.de/html.htm
Benutzeravatar
Innos_Zorn
Mitglied
Beiträge: 127
Registriert: 28.06.2003 12:32
Wohnort: Sternenfels
Kontaktdaten:

Beitrag von Innos_Zorn »

Pyramide hat geschrieben:
Du musst dich einloggen, um Tourdaten eintragen zu können.
Bis zur Funktion bin ich sowieso noch gar nicht gekommen.

Ich weiss nicht ob ich dich richtig verstanden hab.
Also ich hab jetzt das ?> noch hinzugefügt.
Geändert hat sich dadurch allerdings nicht viel
...wir waten durch ein Meer von Blut, Gib uns dafür Kraft und Mut...
JarOfFlies - Alternative-Rock Community
Benutzeravatar
Innos_Zorn
Mitglied
Beiträge: 127
Registriert: 28.06.2003 12:32
Wohnort: Sternenfels
Kontaktdaten:

Beitrag von Innos_Zorn »

Innos_Zorn hat geschrieben:
Pyramide hat geschrieben:
Du musst dich einloggen, um Tourdaten eintragen zu können.
Bis zur Funktion bin ich sowieso noch gar nicht gekommen.
Peinlich, Peinlich :oops:
Die Seite konnte ja als gast gar nicht aufgerufen werden, ich war der meinung dies war nur aufs absenden beschränkt........

ich bitte vielmals um entschuldigung

Habs jetzt geändert.........

EDIT:
was ich nicht verstehe ist, wenn ich folgenden code als blabla.php hochlade bekomm ich die textfelder angezeigt. wenn ich das ganze aber in die *.tpl datei einfüge (natürlich ohne <html> und <body>) bekomm ich gar nix mehr angezeigt.

Code: Alles auswählen

<html>
<body>
<?php
for($i=1;$i<=10;$i++) {
echo '<span class="gen">';
echo 'Datum nr.' . $i . ':<input type="text" class="post" size="2" maxlength="2" name="tour_day[]"><input type="text" class="post" size="2" maxlength="2" name="tour_month[]"><input type="text" class="post" size="4" maxlength="4" name="tour_year[]">';
echo 'Stadt nr. ' . $i . ':<input type="text" class="post" size="40" maxlength="100" name="tour_city[]">';
echo 'Veranstaltungsort nr. ' . $i . ':<input type="text" class="post" size="40" maxlength="100" name="tour_location[]">'; 
} ?>  
</body>
</html>  
und beim code 3 postings weiter oben krieg ich zwar die felder angezeigt aber die for-schleife wird gar nicht erst ausgeführt.
Gibts da noch irgendwas zu berücksichtigen wen ich php in eine *.tpl datei einfüge?

NOCHMAL EDIT:
Habs gefunden. Wusste nicht das man php nicht so einfach in eine template datei einfügen kann.
...wir waten durch ein Meer von Blut, Gib uns dafür Kraft und Mut...
JarOfFlies - Alternative-Rock Community
Benutzeravatar
Innos_Zorn
Mitglied
Beiträge: 127
Registriert: 28.06.2003 12:32
Wohnort: Sternenfels
Kontaktdaten:

Beitrag von Innos_Zorn »

Also prinzipiell funktionierts jetzt. Nur das er alle zehn felder in die Datenbank einträgt egal ob was drinsteht oder nicht.
hier der aktuelle Code

Code: Alles auswählen

$tour_band = $_POST['tour_band']; 
for($i=0; $i<count($_POST['tour_day']); $i++) { 
$tour_day = $_REQUEST['tour_day'][$i]; 
$tour_month= $_REQUEST['tour_month'][$i]; 
$tour_year = $_REQUEST['tour_year'][$i]; 
$tour_city= $_REQUEST['tour_city'][$i]; 
$tour_location = $_REQUEST['tour_location'][$i]; 
$db->sql_query("INSERT INTO tour_table (tour_band, tour_day, tour_month, tour_year, tour_city, tour_location)
VALUES ('$tour_band', '$tour_day', '$tour_month', '$tour_year', '$tour_city', '$tour_location')"); 
Ich versteh allerdings die for schleife nicht ganz. Ich denk das ich da n' fehler gemacht hab.
...wir waten durch ein Meer von Blut, Gib uns dafür Kraft und Mut...
JarOfFlies - Alternative-Rock Community
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Du kannst ja die 10 in der Schleife zum generieren der Felder vom Benutzer änderbar machen, je nach dem wieviele Einträge er machen will (so wie´s bei den Umfrageoptionen von phpBB auch ist)
Benutzeravatar
Innos_Zorn
Mitglied
Beiträge: 127
Registriert: 28.06.2003 12:32
Wohnort: Sternenfels
Kontaktdaten:

Beitrag von Innos_Zorn »

oki.....jetzt hats endlich geklappt.

musste erst noch rausfinden wie ich die variable in das script krieg, daß ich ins template eingebunden hatte.

Also vielen dank für die schnelle und kompetente hilfe :grin:
...wir waten durch ein Meer von Blut, Gib uns dafür Kraft und Mut...
JarOfFlies - Alternative-Rock Community
Antworten

Zurück zu „Coding & Technik“