Formulardaten an SQL-Datenbank

Hallo,
hab mal wieder ne Frage.

Ich hab ein Formular, in dem diverse Daten zum eingeben sind.
Das Formular mach ich in PHP.

  1. Diese Daten möchte ich an eine SQL-Datenbank senden.
    Frage was für Befehle brauch ich damit ich zur Datenbank Connecten
    und die Daten dann dort abspeichern kann???

  2. Wie funktioniert das mit dem Daten aus der SQL-Datenbank wieder
    auslesen und auf einer Seite anzeigen zu lassen?

Wäre nett wenn mir jemand helfen könnte

Puma

Hi,

also OK: Ich gehe mal von mySQL aus.
in DB schreiben:

 $link = mysql\_connect ("localhost", "mysql\_user", "mysql\_password")
 or die ("keine Verbindung möglich: " .mysql\_error());
 print ("Verbindung erfolgreich");
 mysql\_query ("INSERT (column1,column2) VALUES ('text1','text2')")
 or die ("Ungültige Abfrage: " . mysql\_error());
 mysql\_close ($link);

aus DB lesen

 $link = mysql\_connect ("localhost", "mysql\_user", "mysql\_password")
 or die ("keine Verbindung möglich: " .mysql\_error());
 print ("Verbindung erfolgreich");
 $result = mysql\_query ("SELECT \* WHERE 1=1")
 or die ("Ungültige Abfrage: " . mysql\_error());
 $myTable[] = mysql\_fetch\_array($result);
 mysql\_close ($link);

 foreach($myTable as $myRow)
 {
 foreach(array\_keys($myRow) as $key)
 {
 echo "
".$key.": ".$myRow[$key];
 }
 }

also eigendlich gar nicht schwer :wink:

cu Desian
PS: 'ne gute Docu gibts bei http://de2.php.net/docs.php

Hi Desian,

erstmal Danke für deine Hilfe.
Es läuft auch soweit.

Ich bekomm ne verbindung zum Server (mySQL),
aber er gib mir dann folgende Meldung aus:

Verbindung erfolgreichUngültige Abfrage: No Database Selected

Was hab ich falsch gemacht?

Ich benutze die mySQL-Datenbank von Freesql.org.

Hoffe du oder anderen können mir weiter helfen.

Puma

Hallo ohne den Quelltext ist es schwer zu sagen was da jetzt genau nicht funktioniert, aber wenn du denn Quelltext vom vorhergehenden Posting übernommen hast dann versuchs mal wenn du hinter („SELECT * FROM ‚tablename‘ WHERE 1“, $link) wie hier die variable $link mit einem Komma anfügst…

MFG

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

hab den Fehler gefunden.
Mir hat folgende Zeile gefehlt:
mysql_select_db („db_name“,$link);

Das schreiben in die mySQL-Datenbank funktioniert ohne Probleme,
nur das lesen passt noch nicht ganz.
Er liest bei mir immer nur den ersten Datensatz, und zeigt den
auch noch doppelt an.

Was muss ich da ändern?

Wenn du den Quelltext brauchst, sag es einfach.

MFG Puma

Hi,

hab den Fehler gefunden.
Mir hat folgende Zeile gefehlt:
mysql_select_db („db_name“,$link);

Das schreiben in die mySQL-Datenbank funktioniert ohne
Probleme,
nur das lesen passt noch nicht ganz.
Er liest bei mir immer nur den ersten Datensatz, und zeigt den
auch noch doppelt an.

Was muss ich da ändern?

Das geht auch etwas anders:

$result = mysql\_query("SELECT \* FROM tabelle");
while($data = mysql\_fetch\_assoc($result)) {
 foreach ($data as $spalte =\> $wert) {
 echo "$spalte: $wert
";
 }
 echo "
";
}

Alexander

Hi,

dann hast du die Daten aber nicht in einem Bequem benutzbaren Array zur Verfügung. Deshalb hab ich auch gleih 'ne Möglichkeit aufgezeigt, die DBDaten gleich weiter zu nutzen. In den Seltensten Fällen will man seine DBTable einfach nur ausgeben.
Multidimensionale, assoziative Arrays brauchen nämlich auch ihre Zeit, bis man sie nutzen kann.

cu Desian

Hi Desian !

Hi,

dann hast du die Daten aber nicht in einem Bequem benutzbaren
Array zur Verfügung. Deshalb hab ich auch gleih 'ne
Möglichkeit aufgezeigt, die DBDaten gleich weiter zu nutzen.
In den Seltensten Fällen will man seine DBTable einfach nur
ausgeben.

Naja, dann hast du aber die While-Schleife um
$myTable[] = mysql_fetch_array($result);
vergessen. Und um die doppelte Ausgabe jeden Wertes zu vermeiden, ist mysql_fetch_assoc oder mysql_fetch_row besser geeignet (oder do gibst den entsprechenden Parameter bei mysql_fetch_array an).

Ich gebe meist die Daten einer Abfrage wirklich nur aus (ggfs. als Formularelemente), da ich meist irgendwelche Berechnungen und Formatierungen direkt im SQL vornehme…

Multidimensionale, assoziative Arrays brauchen nämlich auch
ihre Zeit, bis man sie nutzen kann.

Ja, schon klar, für manches ist das die optimale Lösung, aber ob man als Anfänger (OP) gleich mit so etwas anfangen muss…

Alexander

Hi Alexander,

danke für deinen Code,
der läuft perfekt.

Noch eine Frage, ist es auch irgendwie möglich,
die Daten beliebig anzuordnen???

Beispiel:

Bez1: text1 | Bez2: text2 | Bez.3: text3

Bez4:
text4

MfG Puma

OK! Ich geb es zu! Auch ich bin nicht perfekt. *Grrrr…*
Liegt aber daran, dass ich mittlerweile auf JavaServerPages umgestiegen bin, weil PHP5 kein mySQL mehr unterstützt, die OOP in PHP nicht wirklich besser wird, Java2D auch so gut ist wie GD, Sun dem openGL-Con beigetreteten ist…

Nichts für ungut, das nächst mal mach ich es besser :wink:

cu Desian

Hi Alexander,

danke für deinen Code,
der läuft perfekt.

Noch eine Frage, ist es auch irgendwie möglich,
die Daten beliebig anzuordnen???

Lasse einfach die innere Schleife weg und schreibe von Hand:

$result = mysql\_query("SELECT \* FROM tabelle");
while($data = mysql\_fetch\_assoc($result)) {
?\>

Bez1: <?php echo $data["bez1"]?>
Bez2: <?php echo $data["bez2"]?>
Bez3: <?php echo $data["bez3"]?>
Bez4: <?php echo $data["bez4"]?>

<?php }
?\> bez1..bez4 sind die Spaltennamen... Alexander