php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.06.2008, 20:23  
Benutzer
 
Registriert seit: 24.06.2008
Beiträge: 44
Inchie befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Formular in eine Datenbank eintragen

Hallo,

ich möchte mit Hilfe eines Formulares Daten in eine Datenbank eintragen. Dafür habe ich zwei Tabellen angelegt. In eine Tabelle sollen personenbezogene Daten gespeichert werden. In der zweiten mehrere Ausprägungen einer Person (z.B. Person 1 hört Metallica und Manowar).
Das funktioniert soweit auch. Damit ich aber platz spare, würde ich den Code gerne in einer foreach-Schleife anwenden. Das klappt leider nicht
Erst einmal der funktionierende Code:

$db_verbindung = mysql_connect( 'localhost', 'root', '' );
if ( ! $db_verbindung ) {
die( 'Konnte keine Verbindung herstellen: ' . mysql_error() );
}
$ID = mysql_insert_id();
$query = "INSERT INTO $tabelle2 VALUES ('$Nummer1','$ID')";
$result = mysql_query($query);

$query = "INSERT INTO $tabelle2 VALUES ('$Nummer2','$ID')";
$result = mysql_query($query);

$query = "INSERT INTO $tabelle2 VALUES ('$Nummer3','$ID')";
$result = mysql_query($query);

Folgender Code gibt keine Fehlermeldung aus (aber generiert auch keinen
Datenbankeintrag):

function text($i){
$db_verbindung = mysql_connect( 'localhost', 'root', '' );
if ( ! $db_verbindung ) {
die( 'Konnte keine Verbindung herstellen: ' . mysql_error() );
}
$ID = mysql_insert_id();
$query = "INSERT INTO $tabelle2 VALUES ('".$_POST[$i]."','$ID')";
$result = mysql_query($query);
}

$arr = array('Nummer1', 'Nummer2', 'Nummer3');
foreach($arr as $i){
text($i);
}

Vielleicht kann mir jemand den Fehler mitteilen? Würd mich sehr darüber freuen. Danke schonmal!

Geändert von Inchie (24.06.2008 um 20:23 Uhr). Grund: Rechtschreibung
Inchie ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.06.2008, 20:56  
s1x
Benutzer
 
Benutzerbild von s1x
 
Registriert seit: 24.06.2008
Beiträge: 36
s1x befindet sich auf einem aufstrebenden Ast
s1x eine Nachricht über ICQ schicken
Standard

Mal zu beginn. Eigentlich kannst du das "mysql_insert_id()" Zeug weglassen, wenn du deine Tabelle auf "auto_increment" gestellt hast.
Da kannst du dann einfach bei den Values das Feld für die ID leer lassen.

Ähh...wieso benutzt du $_POST[$i] ?

Dann würde die nächste Frage lauten, hast du auch ein der $tabelle2 auch gleiche Anzahl wie bei den Values?
s1x ist offline  
Alt 24.06.2008, 21:07  
Benutzer
 
Registriert seit: 24.06.2008
Beiträge: 44
Inchie befindet sich auf einem aufstrebenden Ast
Standard

Hallo s1x,
vielen Dank für deine Antwort. Ich verwende mysql_insert_id() da ich später eine Join Abfrage über beide Tabellen mache. Daher die id.

$_POST[$i] habe ich verwendet, da die Daten von einem Formular kommen. Eigentlich geht es auch mit $Nummer1... Die Values in $tabelle2 stimmen auch.
Inchie ist offline  
Alt 24.06.2008, 21:16  
s1x
Benutzer
 
Benutzerbild von s1x
 
Registriert seit: 24.06.2008
Beiträge: 36
s1x befindet sich auf einem aufstrebenden Ast
s1x eine Nachricht über ICQ schicken
Standard

Du hast doch die Variable $i doch in der Funktion. Da brauchst du doch nichts mit $_POST[''] machen. Das must du eher in den Aufruf der Funktion packen.

So sollte es eigentlich gehen,...

PHP-Code:
function text($i){
  
$db_verbindung mysql_connect'localhost''root''' );
  if ( ! 
$db_verbindung ) {
    die( 
'Konnte keine Verbindung herstellen: ' mysql_error() );
  }
  
$ID mysql_insert_id();
  
$query "INSERT INTO $tabelle2 VALUES ('$i','$ID')";
  
$result mysql_query($query);

PHP-Code:
$arr = array('Nummer1''Nummer2''Nummer3');
foreach(
$arr as $i){
  
text($i);

s1x ist offline  
Alt 24.06.2008, 21:28  
Benutzer
 
Registriert seit: 24.06.2008
Beiträge: 44
Inchie befindet sich auf einem aufstrebenden Ast
Standard

Hallo s1x,

leider funktioniert es bei mir nicht. Anbei noch mein Formular vielleicht liegt es ja daran.

<h>Nummer:</h>
<table border="0">
<tr>
<td><input name="Nummer1" type="text" size="8" maxlength="8"></td>
<td><input name="Nummer2" type="text" size="8" maxlength="8"></td>
<td><input name="Nummer3" type="text" size="8" maxlength="8"></td>
<td><input name="Nummer4" type="text" size="8" maxlength="8"></td>
<td><input name="Nummer5" type="text" size="8" maxlength="8"></td>
<td><input name="Nummer6" type="text" size="8" maxlength="8"></td>
</tr>
<tr>

Danke für deine Hilfe! Anbei auch noch ein weiterer Code der funktioniert.
Allerdings nicht in einer Schleife

if (strlen(trim($Nummer1)) == 0){
echo ("<br>Textfeld ist leer");
}else{
$dbanfrage = "INSERT into $tabelle2 Values ('$Nummer1','$ID')";
if (mysql_db_query ($dbname, $dbanfrage, $dbverbindung)) {
print ("Datenbankeintrag erfolgreich.");
} else {
print ("Es traten Probleme im Datenbankeintrag auf.");
echo mysql_error();
}
}
Inchie ist offline  
Alt 24.06.2008, 22:21  
s1x
Benutzer
 
Benutzerbild von s1x
 
Registriert seit: 24.06.2008
Beiträge: 36
s1x befindet sich auf einem aufstrebenden Ast
s1x eine Nachricht über ICQ schicken
Standard

So habe es mal auf meinem Server probiert und es funktioniert einwandfrei.
Habe es mit meiner DB Klasse gemacht sollte aber kein Unterschied darstellen. Änder einfach die Namen, so funktioniert das aufj. bei mir.

PHP-Code:
function text($i){
  global 
$db;
  
$query "INSERT INTO users_meldungen (uid,titel,typ,meldung,datum,sid) VALUES ('$i','$i','$i','$i','$i','$i')";
  
$result $db->query($query);
}  

$arr = array('Nummer1''Nummer2''Nummer3');
foreach(
$arr as $i){
  
text($i);

Achja,... anbei würde ich dazu sagen das du die MySQL Verbindung einfach nur einmal aufbaust. Sprich...

PHP-Code:
  $db_verbindung mysql_connect'localhost''root''' );
  if ( ! 
$db_verbindung ) {
    die( 
'Konnte keine Verbindung herstellen: ' mysql_error() );
  }

function 
text($i){
  
$ID mysql_insert_id();
  
$query "INSERT INTO $tabelle2 VALUES ('$i','$ID')";
  
$result mysql_query($query);

s1x ist offline  
Alt 25.06.2008, 08:50  
Benutzer
 
Registriert seit: 24.06.2008
Beiträge: 44
Inchie befindet sich auf einem aufstrebenden Ast
Standard

Danke! So funktionierts
Inchie ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Eintragen von Daten per Formular in MySQL Datenbank PHP Tipps 2004 11 07.06.2009 08:58
[Erledigt] Formular ausgabe Array cuep PHP Tipps 2008 11 27.05.2008 17:45
[Erledigt] Formular -&gt; Mehrfachauswahl -&gt; Array? Timer PHP Tipps 2008 5 20.05.2008 20:44
Eintragen - Austragen - Datenbank Sunrise921 Scriptbörse 2 22.04.2008 08:24
[Erledigt] MySQL - ERROR 1044 bei erstellen einer Datenbank _youngenterpriser_ Datenbanken 2 05.02.2008 17:56
Datenbank auslesen, in Formular darstellen und �ndern PHP Tipps 2006 8 22.02.2006 17:51
Formular Daten in die Datenbank schreiben… sunset PHP Tipps 2005-2 3 26.08.2005 11:49
Formular überprüfen und eintragen PHP Tipps 2004-2 10 30.12.2004 21:54
Formulareinträge in Datenbank eintragen u. Email senden wishy PHP Tipps 2004 6 13.12.2004 16:35
[Erledigt] Mit check boxes in MySql Datenbank eintragen PHP Tipps 2004-2 24 03.12.2004 12:52
Datenbank durchsuchen mit Formular PHP Tipps 2004 14 06.11.2004 11:12
Anzeigen von Werten aus Datenbank über Formular Datenbanken 14 21.09.2004 14:59
Daten aus Formular in Datenbank - Zeilen bleiben leer PHP Tipps 2004 2 06.09.2004 16:06
Formular in Mysql Datenbank speichern Anuschka Datenbanken 1 15.08.2004 02:55
datenbank im formular aufladen PHP Tipps 2004 3 29.06.2004 09:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php funktion datenbank eintragen, php werte in datenbank schreiben \id leer lassen\, if (!$db_verbindung) {, php function in db eintragen, mehrfachauswahl checkbox in datenbank speichern und dann ausgeben

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum