insert op twee tabellen
Frank56 - 03/12/2012 10:38
Nieuw lid
Ik probeer met twee query's in twee tabellen hok en parkiet een nieuwe rij in te voegen, maar ik krijg alleen een rij in hok.
Wat doe ik fout?
Of is het niet mogelijk om tegelijkertijd in twee tabellen een insert te gebruiken?
<?php
include ("db_connect.inc.php");
if (isset($_POST['bevestiging'])){
$query = "INSERT INTO hok (hokid, buitenhok, binnenhok, glazenhok, gaashok, schuurhok)
VALUES (
'". $_POST[hokid] ."',
'". $_POST[buitenhok] ."',
'". $_POST[binnenhok] ."',
'". $_POST[glazenhok] ."',
'". $_POST[gaashok] ."',
0
)";
"INSERT INTO parkiet (parkietid, geleparkiet, blauweparkiet, groeneparkiet, witteparkiet, oranjeparkiet)
VALUES (
'". $_POST[parkietid] ."',
'". $_POST[geleparkiet] ."',
'". $_POST[blauweparkiet] ."',
'". $_POST[groeneparkiet] ."',
'". $_POST[witteparkiet] ."',
0
)";
$result = mysql_query($query) or die ("Fout: ".mysql_error());
if ($result) {
echo "Er is een nieuwe bij.<br />";
echo "<a href=\"vogel.php\">Een nieuwe.</a>";}
}
else{
$id = mysql_insert_id();
?>
<h2>Maak een nieuwe.</h2>
<form action="<?php echo($_SERVER['PHP_SELF']);?>" method="post">
<input type="hidden" name="bevestiging" value="1">
<input type="hidden" name="id" value="<?php
echo $_GET['id'];?>">
<input type="text" name="buitenhok"
value="" size="9">
<input type="checkbox" name="binnenhok"
value="x"/>binnenhok
<input type="checkbox" name="glazenhok"
value="x"/>glazenhok
<input type="checkbox" name="gaashok"
value="x"/>gaashok
<input type="text" name="geleparkiet"
value="" size="9">
<input type="checkbox" name="blauweparkiet"
value="x"/>blauweparkiet
<input type="checkbox" name="groeneparkiet"
value="x"/>groeneparkiet
<input type="checkbox" name="witteparkiet"
value="x"/>witteparkiet
<hr>
<input type="Submit" value="Registreer de gegevens.">
</form>
<?php
}// else-blok afsluiten
?>
<?php
include ( "db_connect.inc.php" ) ;
if ( isset ( $_POST [ 'bevestiging' ] ) ) {
$query = "INSERT INTO hok (hokid, buitenhok, binnenhok, glazenhok, gaashok, schuurhok)
VALUES (
'" . $_POST [ hokid] . "',
'" . $_POST [ buitenhok] . "',
'" . $_POST [ binnenhok] . "',
'" . $_POST [ glazenhok] . "',
'" . $_POST [ gaashok] . "',
0
)" ;
"INSERT INTO parkiet (parkietid, geleparkiet, blauweparkiet, groeneparkiet, witteparkiet, oranjeparkiet)
VALUES (
'" . $_POST [ parkietid] . "',
'" . $_POST [ geleparkiet] . "',
'" . $_POST [ blauweparkiet] . "',
'" . $_POST [ groeneparkiet] . "',
'" . $_POST [ witteparkiet] . "',
0
)" ;
if ( $result ) {
echo "Er is een nieuwe bij.<br />" ; echo "<a href=\" vogel.php\" >Een nieuwe.</a>" ; } }
else {
?>
<h2>Maak een nieuwe.</h2>
<form action="
<?php echo ( $_SERVER [ 'PHP_SELF' ] ) ; ?
> " method="post">
<input type="hidden" name="bevestiging" value="1">
<input type="hidden" name="id" value="<?php
<input type="text" name="buitenhok"
value="" size="9">
<input type="checkbox" name="binnenhok"
value="x"/>binnenhok
<input type="checkbox" name="glazenhok"
value="x"/>glazenhok
<input type="checkbox" name="gaashok"
value="x"/>gaashok
<input type="text" name="geleparkiet"
value="" size="9">
<input type="checkbox" name="blauweparkiet"
value="x"/>blauweparkiet
<input type="checkbox" name="groeneparkiet"
value="x"/>groeneparkiet
<input type="checkbox" name="witteparkiet"
value="x"/>witteparkiet
<hr>
<input type="Submit" value="Registreer de gegevens.">
</form>
<?php
} // else-blok afsluiten
?>
5 antwoorden
Gesponsorde links
Maarten - 03/12/2012 11:34
Erelid
Je wijst de 2de query niet toe aan $query lijkt mij.. er staat gewoon "INSERT blablabla" ipv $query = "INSERT ..";
marten - 03/12/2012 15:29
Beheerder
Uit veiligheidsoverwegingen kan je niet meerdere queries tegelijk uitvoeren. Je zal hetzelfde moeten doen voor de tweede query als voor de eerste. Dus toewijzen en uitvoeren. Wanneer het belangrijk is dat beide 'tegelijk' horen ( zie je vaak bij bank af en bijschrijven ) worden de queries 'gewrapped' in een transactie. Je hebt hier wel een transactionele database voor nodig en bijvoorbeeld PDO.
$db->beginTransaction();
$db->query($query1);
$db->query($query2);
$db->query($query3);
$db->commit();
$db -> beginTransaction ( ) ;
$db -> query ( $query1 ) ;
$db -> query ( $query2 ) ;
$db -> query ( $query3 ) ;
$db -> commit ( ) ;
Frank56 - 03/12/2012 20:37 (laatste wijziging 03/12/2012 20:37)
Nieuw lid
Ik heb de database toegewezen en nu doet alleen 'parkiet' het.
Dat zal wel komen, omdat ik geen transactionele database heb. Ik gebruik gewoon PHPMyAdmin.
Is er een mogelijkheid om dit ook in PHPMyAdmin te doen? Ik heb transactionele database op internet gezocht, maar krijg geen treffers.
$query = "INSERT INTO hok (hokid, buitenhok, binnenhok, glazenhok, gaashok, schuurhok)
VALUES (
'". $_POST['hokid'] ."',
'". $_POST['buitenhok'] ."',
'". $_POST['binnenhok'] ."',
'". $_POST['glazenhok'] ."',
'". $_POST['gaashok'] ."',
0
)";
$query ="INSERT INTO parkiet (parkietid, geleparkiet, blauweparkiet, groeneparkiet, witteparkiet, oranjeparkiet)
VALUES (
'". $_POST['parkietid'] ."',
'". $_POST['geleparkiet'] ."',
'". $_POST['blauweparkiet'] ."',
'". $_POST['groeneparkiet'] ."',
'". $_POST['witteparkiet'] ."',
0
)";
$query = "INSERT INTO hok (hokid, buitenhok, binnenhok, glazenhok, gaashok, schuurhok)
VALUES (
'" . $_POST [ 'hokid' ] . "',
'" . $_POST [ 'buitenhok' ] . "',
'" . $_POST [ 'binnenhok' ] . "',
'" . $_POST [ 'glazenhok' ] . "',
'" . $_POST [ 'gaashok' ] . "',
0
)" ;
$query = "INSERT INTO parkiet (parkietid, geleparkiet, blauweparkiet, groeneparkiet, witteparkiet, oranjeparkiet)
VALUES (
'" . $_POST [ 'parkietid' ] . "',
'" . $_POST [ 'geleparkiet' ] . "',
'" . $_POST [ 'blauweparkiet' ] . "',
'" . $_POST [ 'groeneparkiet' ] . "',
'" . $_POST [ 'witteparkiet' ] . "',
0
)" ;
marten - 03/12/2012 20:58
Beheerder
$query = "INSERT INTO hok (hokid, buitenhok, binnenhok, glazenhok, gaashok, schuurhok)
VALUES (
'". $_POST['hokid'] ."',
'". $_POST['buitenhok'] ."',
'". $_POST['binnenhok'] ."',
'". $_POST['glazenhok'] ."',
'". $_POST['gaashok'] ."',
0
)";
$query2 ="INSERT INTO parkiet (parkietid, geleparkiet, blauweparkiet, groeneparkiet, witteparkiet, oranjeparkiet)
VALUES (
'". $_POST['parkietid'] ."',
'". $_POST['geleparkiet'] ."',
'". $_POST['blauweparkiet'] ."',
'". $_POST['groeneparkiet'] ."',
'". $_POST['witteparkiet'] ."',
0
)";
$rResult1 = mysql_query($query1);
$rResult2 = mysql_query($query2);
$query = "INSERT INTO hok (hokid, buitenhok, binnenhok, glazenhok, gaashok, schuurhok)
VALUES (
'" . $_POST [ 'hokid' ] . "',
'" . $_POST [ 'buitenhok' ] . "',
'" . $_POST [ 'binnenhok' ] . "',
'" . $_POST [ 'glazenhok' ] . "',
'" . $_POST [ 'gaashok' ] . "',
0
)" ;
$query2 = "INSERT INTO parkiet (parkietid, geleparkiet, blauweparkiet, groeneparkiet, witteparkiet, oranjeparkiet)
VALUES (
'" . $_POST [ 'parkietid' ] . "',
'" . $_POST [ 'geleparkiet' ] . "',
'" . $_POST [ 'blauweparkiet' ] . "',
'" . $_POST [ 'groeneparkiet' ] . "',
'" . $_POST [ 'witteparkiet' ] . "',
0
)" ;
Probeer het zo eens. Bekijk ook de veiligheid eens van je POST variabelen. Dit kan door middel van PHP.net: filter_input
Frank56 - 04/12/2012 07:05
Nieuw lid
Ik had inderdaad die aanhalingstekens weg moeten halen.
Maar met de results erbij blijft alleen de parkiet het doen. In de database hok komt geen extra rij.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.