PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Liefert keine Datensätze an Mysql Datenbank


Haintz
2002-02-19, 19:51:54
Ich habe ich das problem das keine datensätze hinzugefügt werden wenn ich welche eingebe. Hier das überarbeitete Script. Es wird aber immer die Fehlermeldung der Schleife ausgegeben.


<html>
<head>
<?php

if(isset($gesendet))
{
$db = mysql_connect();

$sqlab = " insert ausgabe ";
$sqlab.= " (Datum, Beschreibung, Bildpfad, Preis) values ";
$sqlab.= " ('$da', '$be', '$bi', pr,)";
mysql_db_query("kamperkleinanzeiger", $sqlab);

$num = mysql_affected_rows();
if($num>0)
echo" Es wurde ein Eintrag hinzugefügt";
else
{
echo"Es ist ein Fehler aufgetreten,<br>";
echo"es wurde kein Eintrag hinzugefügt<br>";
}
mysql_close ($db);

}
?>
</head>
<body>
<p><b>Geben Sie einen vollständigen Datensatz ein und senden Sie das Formular
ab:</b></p>


<form action = "ausgabe.php" method = "post">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="82%" id="AutoNumber1">
<tr>
<td width="34%" align="right" valign="middle">
<font face="Arial" size="2"><b>Datum (in der Form JJJJ-MM-TT):</b></font></td>
<td width="66%" align="left">
<input name="da" size="14" style="float: left"></td>
</tr>
<tr>
<td width="34%" align="right" valign="middle">
<font face="Arial" size="2"><b>Beschreibung :</b></font><p> </td>
<td width="66%" align="left"><textarea rows="9" name="S1" cols="45"></textarea></td>
</tr>
<tr>
<td width="34%" align="right" valign="middle">
<font face="Arial" size="2"><b> Den Bildpfad:</b></font></td>
<td width="66%" align="left">
<input name="bi" size="38" style="float: left"></td>
</tr>
<tr>
<td width="34%" align="right" valign="middle">
<font face="Arial" size="2"><b> Den Preis (Nachkommastellen mit Punkt):</b></font></td>
<td width="66%" align="left">
<input name="pr" size="18" style="float: left"></td>
</tr>
</table>
<p>
<input type="submit" name="gesendet">
<input type="reset">
</form>


Alle Datensätze <a href="tabellen.php">anzeigen</a>
</body>
</html>

Wudu
2002-02-19, 20:51:15
so bist schneller:


<?
mysql_connect($server,$user,$paswd) or die ($errormsg_svr);
mysql_select_db($db) or die ($errormsg_db);

if(isset($gesendet))
{
$insert = mysql_query("INSERT INTO $table VALUES ('$da', '$be', '$bi', 'pr')");
if($insert){
echo" Es wurde ein Eintrag hinzugefügt";
}else echo mysqlerrno();
}
?>


So der source reicht zum adden in die DB, und sollte funzen! Die Variablen musst natürlich anpassen!

Haintz
2002-02-19, 21:34:29
Was muss ich da denn noch anpassen?? Ich check die ganze Art nicht!! Wo ist der pfad zur Datenbank?? Danke im vorraus

Captain America
2002-02-19, 22:16:08
Vergiss den Pfad zur Datenbank.

Die Datenbank ist nicht dazu da, dass du sie über das Dateisystem ansteuerst, sonder über das Netzwerk. Merk dir folgende Struktur:

Datenbank-Server (MySQL auf localhost)
&darr;
Datenbank (Kamperkleinanzeiger)
&darr;
Tabelle (ausgabe)
&darr;
Query ("SELECT", "INSERT", ...)

1. Der Server, zu ihm verbindest du über eine IP - also über das Netzwerk.

2. Die Datenbank. Ein Server kann beliebig viele Datenbanken enthalten. Eine Datenbank ist eine Ansammlung von Tabellen, und dient eigentlich nur dazu, Tabellen logisch zu trennen.

Klingt schwer, ist einfach: du hast sicher einen Ordner "MP3" für MP3s, und einen Ordner "Bilder" für Bilder.

Genau so würdest 2 Datenbanken erstellen, wenn du ein Programm "CD-Katalog" hast, und ein weiteres "Addressbuch". Natürlich kannst du alle Tabellen in eine Datenbank stopfen, aber das würdest du sicher mit den MP3s und Bilder auch nicht machen: es ist unübersichtlich.

3. Tabellen enthalten die Daten, z.B:


CD-Name |Artist |Tracks
--------------------------------------
Appetite For D...|Guns N' Roses| 12
Use Your Illus...|Guns N' Roses| 16


4. Query (Abfrage) der Daten.



So und nun zu dem Script, da fällt auf:

$sqlab = " insert INTO ausgabe ";
$sqlab.= " (Datum, Beschreibung, Bildpfad, Preis) values ";
$sqlab.= " ('$da', '$be', '$bi', '$pr'pr,)";

Fett rein, kursiv raus.

Wudu
2002-02-20, 01:05:26
Capam, sehr gute Erklärung und kompakte Erklärung zu Database! :-)

Es git so viele Wege in PHP die alle das selbe Ziel haben, nur is der Source total anders!

anpassen hier:


<?
//das kommt dazu

$server = "localhost";
$user ="dein_mysql_username";
$paswd ="dein_mysql_userpaswd";

$table = "der_name_der_datenbanktabelle_wo_das_rein_soll";

//die Variabeln $errormsg_svr und $errormsg_db beinhalten einen
//Fehlertext der ausgegeben wird wenn nicht zum datenbankserver
//verbunden werden kann oder die Datenbank nicht ausgewählt werden kann (keine Berechtigung)

// Die Values sind die Spalteninhalte die du einfügen willst (werden vom Formular übergeben)

mysql_connect($server,$user,$paswd) or die ($errormsg_svr);
mysql_select_db($db) or die ($errormsg_db);

if(isset($gesendet))
{
$insert = mysql_query("INSERT INTO $table VALUES ('$da', '$be', '$bi', '$pr')");
if($insert){
echo" Es wurde ein Eintrag hinzugefügt";
}else echo mysqlerrno();
}
?>

Captain America
2002-02-20, 11:56:53
Originally posted by Wudu
Capam, sehr gute Erklärung und kompakte Erklärung zu Database! :-)


:eyes:

Haintz
2002-02-20, 18:06:35
@wudu: Jetzt gibt er garnichts mehr aus. Die Html- Seite ist leer!!Trotzdem herzlichen dank für deine Bemühungen!!

@capam: Danke für die Fehler, aber es werden immer noch keine Daten in die Tabelle eingetragen!! Woran kann das nur liegen?? Kann das mit dem "index" oder "unique" unter phpmyadmin liegen??

Haintz
2002-02-20, 18:55:07
Kann das da was mit zu tun haben, oder woran liegt das???

SQL-Befehl: [Ändern]

DROP DATABASE `kamperkleinanzeiger`
MySQL meldet: Error dropping database (can't delete '.\kamperkleinanzeiger\ausgabe.MYI', errno: 4719440)

Ich kann die nicht löschen unter phpmyadmin!!

Captain America
2002-02-20, 20:10:46
Index ist dazu da, Felder schneller zu finden, z.B. bei Table-Joins oder Suchabfragen. Es ist nur hilfreich für die Datenbank, (Text-)Daten schneller zu finden.

Unique bedeutet, in einer Tabellen-Spalte darf ein Wert nur ein mal vorkommen. Um es am obigen Beispiel zu demonstrieren: Wäre die Spalte "CD-Name" Unique, dann könnte man die CD "Appetite for D..." nicht doppelt eintragen.

Da .MYI die Index-Datei ist, kann es wirklich sein, dass es etwas mit Index zu tun hat. Weiss nicht genau was.


Kann es sein, dass irgend ein Skript noch aktiv ist, und auf die Datenbank zugreift?

Was die Fehlermeldung angeht: 4719440 gibt es nicht. Hast du die einfach so abgetippt oder per Copy & Paste übernommen?

Phielleicht hilft es, einfach den Ordner kamperkleinanzeiger zu löschen (DB vorher runterfahren). DROP DATABASE macht nix anderes.

Wudu
2002-02-20, 23:54:23
Originally posted by Haintz
@wudu: Jetzt gibt er garnichts mehr aus. Die Html- Seite ist leer!!Trotzdem herzlichen dank für deine Bemühungen!!

@capam: Danke für die Fehler, aber es werden immer noch keine Daten in die Tabelle eingetragen!! Woran kann das nur liegen?? Kann das mit dem "index" oder "unique" unter phpmyadmin liegen??

is klar das sie leer ist, das was da droben steht ist auch nur der PHP source ohne dein formular!
Was ich dir hier her gecodet habe ist nur die syntax zum einfügen in die datenbank, du musst das in dein script einbauen!