| SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden. |
 |

28-01-2004, 20:35
|
|
hydrococcus
Member
|
|
Registriert seit: Jun 2003
Beiträge: 425
|
|
DB-Einträge aus generierten Formularfeldern
hi,
ich möchte eine speisekarte erstellen, die ich per formular aktualisieren kann.
die inhalte werden aus der tabelle gelesen und direkt in einem formularfeld
angezeigt von dem aus ich den inhalt auch gleich direkt
ändern kann. bei einer zeile klappt das wunderbar. hab ich aber mehrere zeilen
in meiner tabelle und ich ändere eine im formular, wird der inhalt auf alle
zeilen übertragen und somit gleich
PHP-Code:
<?php
# verbindung zur DB
$include = include("../connect.php");
# neue daten senden und eintragen
if(isset($_POST['senden'])){
$gericht = $_POST['gericht'];
$zutaten = $_POST['zutaten'];
$preis = $_POST['preis'];
$einfuegen = mysql_query("UPDATE testgerichte SET gericht='$gericht',
zutaten='$zutaten', preis='$preis' WHERE id=1 ");
header("Location: test_gerichte.php");
}
# tabelle auswählen und inhalt in formular anzeigen
$select = mysql_query("SELECT gericht, zutaten, preis FROM testgerichte WHERE id=1");
while($inhalt = mysql_fetch_array($select)){
$gericht = $inhalt['gericht'];
$zutaten = $inhalt['zutaten'];
$preis = $inhalt['preis'];
print "<form name='speisen[]' action='".$_SERVER['PHP_SELF']."' method='post'>
<input type='text' name='gericht' value='".$gericht."' />
<input type='text' name='zutaten' value='".$zutaten."' />
<input type='text' name='preis' value='".$preis."' /><br>
";
}
?>
<input type ='submit' name='senden' value='senden' />
<?php print "</form>"; ?>
Geändert von wahsaga (02-02-2004 um 10:06 Uhr)
|

29-01-2004, 12:47
|
|
lugi27
Newbie
|
|
Registriert seit: Jun 2002
Ort: Munich
Beiträge: 43
|
|
Hi...
Nun, da sind ein paar schwerwiegende Fehler in Deinem Skript...
Zum ersten machst du nur einen Update bei der ID 1.
Desweiteren schau Dir mal die Schleife bei Deinem SELECT-Befehl an, dort werden bei z.B. 10 gefundenen Einträgen 10 <form>-Tags geöffnet und nur einer geschlossen...
Ich gehe mal davon aus, daß Du nur ein Formular haben willst, also mache den <form>-Tag auch außerhalb der Schleife.
Ich würde es so machen:
PHP-Code:
<?php
# verbindung zur DB
$include = include("../connect.php");
# neue daten senden und eintragen
if(isset($_POST['senden']))
{
$id = $_POST['id'];
$gericht = $_POST['gericht'];
$zutaten = $_POST['zutaten'];
$preis = $_POST['preis'];
for ($i=0;$i<sizeof($id);$i++)
mysql_query("UPDATE testgerichte SET gericht='".$gericht[$i]."',
zutaten='".$zutaten[$i]."', preis='".$preis[$i]."' WHERE id='".$id[$i]."'");
header("Location: test_gerichte.php");
}
# tabelle auswählen und inhalt in formular anzeigen
print "<form name=\"speisen\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">";
$select = mysql_query("SELECT id,gericht, zutaten, preis FROM testgerichte ORDER BY id");
while($inhalt = mysql_fetch_array($select))
{
$id = $inhalt['id'];
$gericht = $inhalt['gericht'];
$zutaten = $inhalt['zutaten'];
$preis = $inhalt['preis'];
print "<input type=\"hidden\" name=\"id[]\" value=\"".$id."\" />\n";
print "<input type=\"text\" name=\"gericht[]\" value=\"".$gericht."\" />\n";
print "<input type=\"text\" name=\"zutaten[]\" value=\"".$zutaten."\" />\n";
print "<input type=\"text\" name=\"preis[]\" value=\"".$preis."\" />\n";
print "<br /><br />\n";
}
print "<input type=\"submit\" name=\"senden\" value=\"senden\" />\n";
print "</form>";
So, hoffe Dir damit geholfen zu haben........
Gruß,
Lugi.
P.S. Skript ist ungestestet, also könnte evtl. noch kleine Syntax- oder Rechtschreibfehler enthalten!!!
Geändert von wahsaga (02-02-2004 um 10:06 Uhr)
|

01-02-2004, 16:06
|
|
hydrococcus
Member
|
|
Registriert seit: Jun 2003
Beiträge: 425
|
|
 dein script hat mir echt weitergeholfen. und vor allem, es funzt jetzt richtig gut. ...danke
|

01-02-2004, 23:59
|
|
hydrococcus
Member
|
|
Registriert seit: Jun 2003
Beiträge: 425
|
|
Hab noch ein bisschen gebastelt, aber komme nicht weiter.
und zwar möchte ich mit hilfe von checkboxen komplette zeilen
in der db-tabelle löschen können. ich hab
PHP-Code:
while($inhalt = mysql_fetch_array($select))
{
$id = $inhalt['id'];
$gericht = $inhalt['gericht'];
$zutaten = $inhalt['zutaten'];
$preis = $inhalt['preis'];
print "<input type=\"hidden\" name=\"id[]\" value=\"".$id."\" />\n";
print "<input type=\"text\" name=\"gericht[]\" value=\"".$gericht."\" />\n";
print "<input type=\"text\" name=\"zutaten[]\" value=\"".$zutaten."\" />\n";
print "<input type=\"text\" name=\"preis[]\" value=\"".$preis."\" />\n";
print "<br /><br />\n";
}
in
PHP-Code:
swhile($inhalt = mysql_fetch_array($select))
{
$id = $inhalt['id'];
$gericht = $inhalt['gericht'];
$zutaten = $inhalt['zutaten'];
$preis = $inhalt['preis'];
print "<input type=\"hidden\" name=\"id[]\" value=\"".$id."\" />\n";
print "<input type=\"text\" name=\"gericht[]\" value=\"".$gericht."\" />\n";
print "<input type=\"text\" name=\"zutaten[]\" value=\"".$zutaten."\" />\n";
print "<input type=\"text\" name=\"preis[]\" value=\"".$preis."\" />\n";
print "type='checkbox' name=checkbox[]'";
print "<br /><br />\n";
}
geändert.
aber wie krieg ich den wert der checkboxen. ich hab mir den
wert des arrays ausgeben lassen, aber da kommt nur 0 zurück
oder on.
|

02-02-2004, 00:25
|
|
derHund
PHP Master
|
|
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
|
|
laß dir doch den inhalt des $_POST nach dem absenden mal anzeigen,
dann siehst du, in welcher form die werte übergeben werden und
weißt dann auch, wie du wann reagieren mußt ...
EDIT: wieso ist der thraed so breit !?
__________________
Die Zeit hat ihre Kinder längst gefressen: hund (back in black) | ??? | ??? | ...
|

02-02-2004, 10:05
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Original geschrieben von hydrococcus
aber wie krieg ich den wert der checkboxen.
|
http://dclp-faq.de/q/q-formular-checkbox.html
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

03-02-2004, 22:37
|
|
hydrococcus
Member
|
|
Registriert seit: Jun 2003
Beiträge: 425
|
|
Vielen Dank wiedermal für eure Hilfe,
hab mein script jetzt noch ein bisschen erweitert. einträge können jetzt
über die checkboxen gelöscht werden und über einen "insert-button"
können neue zeilen eingefügt werden.
Hier mal mein script, vielleicht hilfts ja jemandem...
PHP-Code:
<?php
# neue daten senden und eintragen
if(isset($_POST['senden']))
{
$gruppe = $_POST['gruppe'];
$gericht = $_POST['gericht'];
$beschreibung = $_POST['beschreibung'];
$preis = $_POST['preis'];
for ($i=0;$i<sizeof($gruppe);$i++)
mysql_query("UPDATE salate SET gericht='".$gericht[$i]."', beschreibung='".$beschreibung[$i]."', preis='".$preis[$i]."' WHERE gruppe='".$gruppe[$i]."'");
if (isset($_REQUEST['checkbox'])){
reset ($_REQUEST['checkbox']);
foreach ($_REQUEST['checkbox'] as $value_cbox){
mysql_query("DELETE FROM salate WHERE gruppe='$value_cbox'");
}
}
header("Location: administration_test.php");
}
if (isset($_POST['insert'])){
$new = "Neuer Eintrag";
# das array gruppe wird ausgelesen, dateizeiger auf das letzte objekt gesetzt und um eins erhöht
$gruppe = $_POST['gruppe'];
$ende = @end($gruppe);
$dazu = 1;
$wert = $dazu+$ende;
mysql_query("INSERT INTO salate SET gericht='$new', beschreibung='$new', preis='0,00', gruppe='$wert'");
}
<?php
# tabelle auswählen und inhalt in formular anzeigen
print "<div class='titel'>Salate</div><hr size='1' />";
print "<form name=\"speisen\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\"><table border='0'><tr>";
$select = mysql_query("SELECT gruppe, gericht, beschreibung, preis FROM salate ORDER BY gruppe");
while($inhalt = mysql_fetch_array($select))
{
$gruppe = $inhalt['gruppe'];
$gericht = $inhalt['gericht'];
$beschreibung = $inhalt['beschreibung'];
$preis = $inhalt['preis'];
print "<input type=\"hidden\" name=\"gruppe[]\" value=\"".$gruppe."\" />\n";
print "<td><textarea name=\"gericht[]\" class='form' rows='3' cols='20'>".$gericht."</textarea></td>\n";
print "<td><textarea name=\"beschreibung[]\" class='form' rows='3' cols='30'>".$beschreibung."</textarea></td>\n";
print "<td><textarea name=\"preis[]\" class='form' rows='3' cols='10'>".$preis."</textarea></td>\n";
print "<td><input type='checkbox' name=\"checkbox[]\" value='$gruppe'></td></tr>";
}
print "</table>";
print "<table>
<tr>
<td><input type=\"submit\" name=\"insert\" value=\"Neue Zeile einfügen \" /></td>
<td> </td>
<td> </td>
<td><input type=\"submit\" name=\"senden\" value=\"Änderung durchführen \" /></td>
</tr>
</table>\n";
print "</form>";
?>
wenn noch einer fehler findet oder verbesserungen hat, bitte sagt
bescheid....ich geh erst mal
Geändert von hydrococcus (04-02-2004 um 12:22 Uhr)
|

13-04-2004, 15:32
|
|
nobodymw
Newbie
|
|
Registriert seit: Apr 2004
Beiträge: 3
|
|
Einbindung in die Internetseite
Hallo,
ich bin absolut neu auf dem Gebiet der PHP Programmierung. Wie binde ich diese Script in eine bestehende Internetseite (html) ein, und was muss ich dabei beachten? Wie muss ich die Seite benennen, damit das Script funktioniert?
Gruß
nobodymw
|

14-04-2004, 18:50
|
|
piumer
Newbie
|
|
Registriert seit: Mar 2004
Beiträge: 47
|
|
ein Tip!
Hallo Nobody,
also, Du must erst mal ein PHP-Server auf Deinem Rechner installieren.
Wie Du das machst, findest Du in zahlreichen Tutorials.
Wenn Du das hast, besitzt Du den Rootordner, in dem sich alle Deine PHP-Dateien befinden müssen, damit sie Der Server interpretieren kann.
Deine HTML-Dateien müssen unbenannt werden, dass sie die Endung php haben.
Nun kannst Du ein PHP-Script, z.B. das untere mit dem Speiseplan in Dein Dokument einfügen.
Alle PHP-Scripts fangen mit <?PHP an und hören mit ?> auf.
Das ist mal eine grobe Beschreibung, mehr dazu findest Du in den Tutorials dazu. Ich kann Dir auch Tutors in pdf schicken, da steht es auch nochmal genauer drinn.
Gruß, piumer
|

21-04-2004, 17:26
|
|
nobodymw
Newbie
|
|
Registriert seit: Apr 2004
Beiträge: 3
|
|
Hallo,
verstehe ich das richtig? Das erste Script
<?php
# neue daten senden und eintragen
if(isset($_POST['senden']))
{
$gruppe = $_POST['gruppe'];
$gericht = $_POST['gericht'];
$beschreibung = $_POST['beschreibung'];
$preis = $_POST['preis'];
for ($i=0;$i<sizeof($gruppe);$i++)
mysql_query("UPDATE salate SET gericht='".$gericht[$i]."', beschreibung='".$beschreibung[$i]."', preis='".$preis[$i]."' WHERE gruppe='".$gruppe[$i]."'");
if (isset($_REQUEST['checkbox'])){
reset ($_REQUEST['checkbox']);
foreach ($_REQUEST['checkbox'] as $value_cbox){
mysql_query("DELETE FROM salate WHERE gruppe='$value_cbox'");
}
}
header("Location: administration_test.php");
}
if (isset($_POST['insert'])){
$new = "Neuer Eintrag";
# das array gruppe wird ausgelesen, dateizeiger auf das letzte objekt gesetzt und um eins erhöht
$gruppe = $_POST['gruppe'];
$ende = @end($gruppe);
$dazu = 1;
$wert = $dazu+$ende;
mysql_query("INSERT INTO salate SET gericht='$new', beschreibung='$new', preis='0,00', gruppe='$wert'");
}
?>
heißt administration_test.php und ist für Eintragungen zuständig.
Das zweite Script
<?php
# tabelle auswählen und inhalt in formular anzeigen
print "<div class='titel'>Salate</div><hr size='1' />";
print "<form name=\"speisen\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\"><table border='0'><tr>";
$select = mysql_query("SELECT gruppe, gericht, beschreibung, preis FROM salate ORDER BY gruppe");
while($inhalt = mysql_fetch_array($select))
{
$gruppe = $inhalt['gruppe'];
$gericht = $inhalt['gericht'];
$beschreibung = $inhalt['beschreibung'];
$preis = $inhalt['preis'];
print "<input type=\"hidden\" name=\"gruppe[]\" value=\"".$gruppe."\" />\n";
print "<td><textarea name=\"gericht[]\" class='form' rows='3' cols='20'>".$gericht."</textarea></td>\n";
print "<td><textarea name=\"beschreibung[]\" class='form' rows='3' cols='30'>".$beschreibung."</textarea></td>\n";
print "<td><textarea name=\"preis[]\" class='form' rows='3' cols='10'>".$preis."</textarea></td>\n";
print "<td><input type='checkbox' name=\"checkbox[]\" value='$gruppe'></td></tr>";
}
print "</table>";
print "<table>
<tr>
<td><input type=\"submit\" name=\"insert\" value=\"Neue Zeile einfügen \" /></td>
<td> </td>
<td> </td>
<td><input type=\"submit\" name=\"senden\" value=\"Änderung durchführen \" /></td>
</tr>
</table>\n";
print "</form>";
?>
stellt dann die Eintragungen dar.
In welche Datei werden nun die Daten geschrieben? Ist es möglich auch mehrere Gerichte unter einer Rubrik zu erstellen?
Danke für Eure HILFE, bin ein absolut neu auf dem Gebiet.
|

21-04-2004, 17:40
|
|
jochenj
Senior Member
|
|
Registriert seit: Oct 2002
Ort: Maikammer
Beiträge: 546
|
|
hi,
wenn du dir die grundlagen für HTML insb. formulare kennst und dir dann mal spasseshalber den quelltext im browser anschaust der durch
PHP-Code:
print "<form name=\"speisen\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\"><table border='0'><tr>";
erzeugt wird. wirst du hoffentlich so selbstkristisch sein und feststellen, das da was nicht stimmen kann.
es wurde bisher nirgends beschrieben, das es mehr als eine datei ist.
OffTopic: bitte benutze den php tag für phpcode; das bunte erleichtert ungemein die lesbarkeit und hilft fehler zu finden
|

23-04-2004, 15:21
|
|
slapper
Newbie
|
|
Registriert seit: Mar 2004
Beiträge: 12
|
|
hab den code mal getestet da ich das gleiche problem habe
bei mir geht der nicht so 1:1 ??
wenn ich auf Submit gehe, also die geänderten Daten versende zeigt er mir in den entsprechenden geänderten Feldern nur "Array" an als text
und in der mysql-DB ändert er immer die ID=1 ?? egal auf welcher id ich mich gerade befinde
__________________
SLAPPER'on#OSX
|

23-04-2004, 16:04
|
|
slapper
Newbie
|
|
Registriert seit: Mar 2004
Beiträge: 12
|
|
hab den fehler gefunden
die for schleife ist völlig überflüssig
und array hat er angezeigt weil input name="gericht[]"
hab alle array Klammern entfernt auch in den POST's
und das form tag ist verkehrt, deswegen hat er immer nur die ID 1 beim update hergenommen
funzt einwandfrei
__________________
SLAPPER'on#OSX
Geändert von slapper (23-04-2004 um 16:07 Uhr)
|

25-05-2004, 14:52
|
|
nobodymw
Newbie
|
|
Registriert seit: Apr 2004
Beiträge: 3
|
|
Quelltext
Hallo Slapper,
kannst Du bitte das funktionierende Script posten? Wie gesagt ich habe absolut keine Ahnung von dieser Programmiersprache.
DANKE
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|