Php Und Mysql(insert)

adil

Grünschnabel
Hallo, ich habe ein kleines Problem bei Mysql und zwar:
ich habe zwei Tabelle eine die heisst auto mit den Attributten:id, kennzeichen, typ,modell,farbe. und die zweite Tabelle heisst: erfassung und besteht aus den Attributten id,kennzeichen, kmstand,fuellmenge, schaden.
in meinem Programm schreibe ich mysql_query("insert into erfassung values ('','$kennzeichen','$kmstand','$fuellmenge','$schaden')");
Meine Problem ist: ich gebe irgend einer kennzeichen in der Tabelle erfassung ein, die nicht in der Tabelle auto steht, und trotzdem wird die Daten in der Tabelle erfassung eingefügt.eigentlich will ich nur die kennzeichen, die in der Tabelle auto steht, in der Tabelle erfassung einfügen, wenn nicht der Fall ist, soll eine Fehlermeldung zeigen.
kann jemanden vielleicht mir helfen, mit diesem Problem zu lösen.
ich danke euch.
adil
 
Hallo,

adil hat gesagt.:
Meine Problem ist: ich gebe irgend einer kennzeichen in der Tabelle erfassung ein, die nicht in der Tabelle auto steht, und trotzdem wird die Daten in der Tabelle erfassung eingefügt.
Du gibst dem Datenbanksystem ja die Anweidung, die entsprechende Zeile einzutragen, darum macht es das auch – woher sollte es auch wissen, dass zwischen den beiden Tabellen diese Verknüpfung besteht?

Am besten fragst du vorher mit einem SELECT-Statement ab, ob es einen dem Kennzeichen entsprechenden Eintrag in der auto-Tabelle gibt. Übrigens wäre es empfehlenswert, in der Tabelle erfassung nicht das Kennzeichen, sondern die id des dazugehörigen Eintrags in der Tabelle auto abzuspeichern. Dadurch verhinderst du unnötige Datenduplikation.

Grüße,
Matthias
 
hallo, ich danke dir zuerst auf deine Antwort.
also ich habe versucht,was du mir geschrieben hast, zu realesieren aber leider ohne erfolg.
Da findest du meine Quelcode:

<?php
error_reporting(1);
error_reporting(E_ERROR | E_WARNING | E_PARSE);
echo $_POST["kennzeichen"];
echo "<br>";
echo $_POST["km_stand"];
echo "<br>";
echo $_POST["fuell_menge"];
echo "<br>";
echo $_POST["schaden"];
echo "<br>";
?>
<?php
include("C:\apache\htdocs\sasa\config.php");
mysql_pconnect($dbhost, $dbuname, $dbpw);
@mysql_select_db("$dbname") or die ("Unable to select database");
$datum = date(Y.m.d.H.i.s);
$kennzeichen = $_POST["kennzeichen"];
$kmstand = $_POST["kmstand"];
$fuellmenge = $_POST["fuellmenge"];
$schaden = $_POST["schaden"];
if ($_POST["kennzeichen"] == "" || $_POST["kmstand"] == "" || $_POST["fuellmenge"] == "" || $_POST["schaden"] == "" )
{

echo " <B><i><h1>Bitte füllen Sie alle Felder aus danke";
}


else {
mysql_query("INSERT INTO erfassung ( id,kennzeichen,kmstand,fuellmenge,schaden,datum ) (select kennzeichen from auto ");
mysql_close();
echo "<B><i><h1>Die Daten wurden erfolgreich abgespeichert";
}
?>

Mfg
Adil
 
Versuch's mal so:

PHP:
else {    	    

$query = "SELECT * FROM auto WHERE kennzeichen=$kennzeichen";
$vorhanden = mysql_query($query, $dbname) or die(mysql_error());

if (mysql_num_rows($vorhanden) != 1) { echo "Es ist ein Fehler aufgetreten. Es gibt ".mysql_num_rows($vorhanden)." Kennzeichen, die zur Anfrage passen"; die; }


            mysql_query("INSERT INTO erfassung ( id,kennzeichen,kmstand,fuellmenge,schaden,datum  )  (select kennzeichen from auto ");
      	    mysql_close();
      	    echo "<B><i><h1>Die Daten wurden erfolgreich abgespeichert";
    }
?>

PS: Schreib PHPCode in Zukunft bitte zwischen die PHP-Tags: (PHP)(/PHP)
Statt runde eckige Klammern vewenden! [ ]
 
ich danke dir für deine Antwort.
also ich habe es probiert, da gibt es bei eine ungültige kennzeichen oder gültige kennzeichen folgendes
PHP:
<?
error_reporting(1);
error_reporting(E_ERROR | E_WARNING | E_PARSE);
echo $_POST["kennzeichen"];
echo "<br>";
echo $_POST["km_stand"];
echo "<br>";
echo $_POST["fuell_menge"];
echo "<br>";
echo $_POST["schaden"];
echo "<br>";
?>
<?php
include("C:\apache\htdocs\Flughafen\config.php");
mysql_pconnect($dbhost, $dbuname, $dbpw);
@mysql_select_db("$dbname") or die ("Unable to select database");
$datum = date(Y.m.d.H.i.s);
$kennzeichen = $_POST["kennzeichen"];
$km_stand = $_POST["km_stand"];
$fuell_menge = $_POST["fuell_menge"];
$schaden = $_POST["schaden"];
if ($_POST["kennzeichen"] == "" || $_POST["km_stand"] == "" || $_POST["fuell_menge"] == "" || $_POST["schaden"] == "" )
 	{
 	 
  	    echo " <B><i><h1>Bitte füllen Sie alle Felder aus danke";
 	}
 	else {             

$query = "SELECT * FROM auto WHERE kennzeichen=$kennzeichen"; 

$vorhanden =@mysql_query($query,$dbname) or ("Unable to select database"); 

if(mysql_num_rows($vorhanden)!=1)
{ echo "Es ist ein Fehler aufgetreten.Es gibt".mysql_num_rows("$vorhanden")." Kennzeichen, die zur Anfrage passen"; die;} 
 mysql_query("INSERT INTO terminal1_erfassung (id,kennzeichen,km_stand,fuell_menge,schaden,datum)  (select kennzeichen from auto "); 
              mysql_close(); 
              echo "<B><i><h1>Die Daten wurden erfolgreich abgespeichert";
 }     
 
?>
<html>
<body>
<br>
<a href="schluessel_Annahme_T1_2.php"><b>Zurück</b></a>
<br>
</body>
</html>
y
y
y
nein

Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\flughafen\erfassung t1\testadil.php on line 33

Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\flughafen\erfassung t1\testadil.php on line 34
Es ist ein Fehler aufgetreten.Es gibt Kennzeichen, die zur Anfrage passen



f-fr34
y
y
nein

Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\flughafen\erfassung t1\testadil.php on line 33

Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\flughafen\erfassung t1\testadil.php on line 34
Es ist ein Fehler aufgetreten.Es gibt Kennzeichen, die zur Anfrage passen


also vielleicht bei if-Anweisung,was nicht korrekt ist
MfG
Adil
 
Zuletzt bearbeitet:
PHP:
$vorhanden =@mysql_query($query,$dbname) or ("Unable to select database");

ändere die Zeile mal in:
PHP:
$vorhanden =@mysql_query($query,$dbname) or die("Unable to select database");
 
Zurück