php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Formular-Upload in Datenbank


 
andred82
24-08-2003, 12:03 
 
Hi,
ich versuche vergeblich Daten über ein Formular in meine MySql Datenbank einzutragen. Ich kann die Daten einfach per phpmyadmin eintragen und ich kann sie auch per php auslesen und anzeigen lassen, aber das mit dem Upload in die Datenbank über das Formular geht nicht so ganz. Bin noch totaler Newbie und hab mich mal selber an nem script versucht. Mir ist klar das es so nicht klappen kann, aber ich weiß nicht was ich noch brauche oder ändern muss. Hier mal meine ersten gehversuche:

<?php
error_reporting(E_ALL);

include("config.inc.php");
$conn=mysql_connect($host,$user,$pw) or die ("Keine Verbindung");
@mysql_select_db("$db") or die ("Datenbank konnte nicht gefunden werden.");

$name="";
$text="";
$grafik="";
$link="";
?>

<form name="form1" method="post" action="<?php echo $PHP_SELF; ?>">
<br>
<br>
<table width="30%" border="0" align="center" cellpadding="5" cellspacing="0">
<tr>
<td>Name</td>
<td><input name="name" type="text" value="<?php echo ($name['name']); ?>" maxlength="150"></td>
</tr>
<tr>
<td>Text</td>
<td><input name="text" type="text" value="<?php echo ($text['text']); ?>" maxlength="150"></td>
</tr>
<tr>
<td>Grafik</td>
<td><input name="grafik" type="text" value="<?php echo ($grafik['grafik']); ?>" maxlength="150"></td>
</tr>
<tr>
<td>Link</td>
<td><input name="link" type="text" value="<?php echo ($link['link']); ?>" maxlength="150"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Abschicken"></td>
</tr>
</table>
</form>

<?php
$dbanfrage="INSERT INTO test (name,text,grafik,link) VALUES ('$name','$text','$grafik','$link')";

if (mysql_select_db ($db, $dbanfrage, $conn)) {
print ("Datenbankeintrag erfolgreich.");
} else {
print ("Eintragung nicht erfolgreich.");
}
mysql_close ($conn);

?>

Hoffe das mir jemand weiterhelfen kann.
Danke
Gruß
André

PS:
Ach ja im Moment kommt diese Fehlermeldung:

Warning: Wrong parameter count for mysql_select_db() in /www/htdocs/v034996/test2/eingabe.php on line 51

das ist line 51:
if (mysql_select_db ($db, $dbanfrage, $conn))

und das steht jeweils in den eingabefeldern:
<br /><b>Notice</b>: Uninitialized string offset: 0 in <b>/www/htdocs/v034996/test2/eingabe.php</b> on line <b>27</b><br />

 
MelloPie
24-08-2003, 12:24 
 
MAch mal statt:

if (mysql_select_db ($db, $dbanfrage, $conn)) {
print ("Datenbankeintrag erfolgreich.");
} else {
print ("Eintragung nicht erfolgreich.");
}
mysql_close ($conn);

das hier:

mysql_query($dbanfrage,$conn) or die (mysql_error());
mysql_close ($conn);


und lies mal über die Mysql Funktionen

 
blackhole
24-08-2003, 12:25 
 
Du versuchst du Variablen im Formular auszugeben, die gar nicht existieren, und zum Ausführen einer MySQL-Abfrage gibts mysql_query (http://php.net/mysql_query). Und du solltest prüfen, ob das Formular überhaupt abgeschickt wurde, bevor du die Daten in die Datenbank einträgst. :-)
Mach es ungefähr so:


<?php
error_reporting(E_ALL);

if(isset($_REQUEST['Submit']))
{
include("config.inc.php");
$conn = mysql_connect($host,$user,$pw) or die ("Keine Verbindung");
@mysql_select_db("$db") or die ("Datenbank konnte nicht gefunden werden.");
$query = mysql_query("INSERT INTO test (name,text,grafik,link) VALUES ('".$_POST['name']."','".$_POST['text']."','".$_POST['grafik']."','".$_POST['link']."')");
mysql_close($conn)
print ($query == true) ? "Datenbankeintrag erfolgreich." : "Eintragung nicht erfolgreich: ".mysql_error();
}
?>

<form name="form1" method="post" action="<?php echo $PHP_SELF; ?>">
<br>
<br>
<table width="30%" border="0" align="center" cellpadding="5" cellspacing="0">
<tr>
<td>Name</td>
<td><input name="name" type="text" value="<?php echo (isset($_POST['name'])) ? $_POST['name'] : ''; ?>" maxlength="150"></td>
</tr>
<tr>
<td>Text</td>
<td><input name="text" type="text" value="<?php echo (isset($_POST['name'])) ? $_POST['text'] : ''; ?>" maxlength="150"></td>
</tr>
<tr>
<td>Grafik</td>
<td><input name="grafik" type="text" value="<?php echo (isset($_POST['grafik'])) ? $_POST['grafik'] : ''; ?>" maxlength="150"></td>
</tr>
<tr>
<td>Link</td>
<td><input name="link" type="text" value="<?php echo (isset($_POST['link'])) ? $_POST['link'] : ''; ?>" maxlength="150"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Abschicken"></td>
</tr>
</table>
</form>

 
andred82
25-08-2003, 00:06 
 
Hallo,

danke für die Antworten! Es funktioniert. Vielen Dank. Werde mir jetzt mal die einzelnen Funktionen was genauer angucken, dadurch werd ich's dann hoffentlich besser lernen. Das mit mich einen großen Schritt nach vorne gebracht. Nochmal vielen Dank!!!

Gruß
André

 
andred82
27-08-2003, 03:26 
 
So das hat ja soweit schon ganz gut geklappt und ich denke ich habs auch verstanden. Jetzt habe ich aber noch vor mit Hilfe eines Sprungmenüs auszuwählen in welche Tabelle der DB die Daten gespeichert werden. Gehen wir mal davon aus, dass alle Tabellen, die gleichen spalten bezeichnungen haben, nur mit unterschiedlichem inhalt.

Folgende Zeile hab ich dem Script jetzt noch zugefügt:
(Ist zwar kein php, kann man aber so bestimmt besser unterscheiden.)

<tr>
<td>Kategorie:</td>
<td><select name="menu1" onChange="MM_jumpMenu('parent',this,0)">
<option value="wenn die DB-Tabelle ausgewählt wird, lade es dort hin" selected>Bildschirmschoner Film</option>
<option value="wenn die DB-Tabelle ausgewählt wird, lade es dort hin">Bildschirmschoner Serien</option>
<option value="wenn die DB-Tabelle ausgewählt wird, lade es dort hin">Bildschirmschoner Actors</option>
</select></td>
</tr>


vor allem wie muss ich diese Zeile verändern:


$query = mysql_query("INSERT INTO test (name,text,grafik,link) VALUES ('".$_POST['name']."','".$_POST['text']."','".$_POST['grafik']."','".$_POST['link']."')");


denke das ich die Tabelle test vielleicht durch ne Variable ersetzen muss!? Dann weiß ich aber wieder nicht wie ich die $tabelle definieren soll...
Zerbrech mir hier den Kopf, komm aber nicht weiter. Bitte um Hilfe. Werd jetzt mal schlafen. Ist schon was spät.
Hoffe noch einmal auf eure Hilfe!!!


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:27 Uhr.