Ik heb een database daarin staan twee tabellen. Beide tabellen worden vanuit 1 form gevoed. Gegevens uit 1 tabel invoeren gaat goed, maar zodra ik de tweede tabel wil aanvullen krijg ik een error. Kom er niet uit heb ook weing ervaring met PHP/MySQL. Dit is het script. Weet iemand waar het foet gaat?
<?php
$con = mysql_connect("localhost","*****","*****");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}mysql_select_db("database", $con);
$sql="INSERT INTO kweker (naam, adres, postcode,woonplaats,telefoon,seclidnr,email,lidnb,kweeknr)
VALUES
('$_POST[naam]','$_POST[adres]','$_POST[postcode]','$_POST[woonplaats]','$_POST[telefoon]','$_POST[seclidnummer]','$_POST[email]','ja','$_POST[kweeknummer]')";
$sql2="INSERT INTO bestelling (soort, ringmaat, volgnummer, aantal, gekleurd, geannodiseerd, aluminium, rvs, bedrag, kweker_id)
VALUES
('$_POST[naamvogel1]','$_POST[volgnummer1]','$_POST[aantal1]','$_POST[gekl1]','$_POST[gekleurdgeanodisseerd1]','$_POST[aluminium1]','$_POST[RVS1]','$_POST[prijsvogel1]')";
if (!mysql_query($sql,sql2,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";mysql_close($con)
?>
Op het eerste gezicht komt bij de 2e insert opdracht "
soort, ringmaat, volgnummer, aantal, gekleurd, geannodiseerd, aluminium, rvs, bedrag, kweker_id" niet overeen met de geposte variabelen uit het formulier. Die reeks bevat
'$_POST[naamvogel1]','$_POST[volgnummer1]','$_POST[aantal1]','$_POST[gekl1]','$_POST[gekleurdgeanodisseerd1]','$_POST[aluminium1]','$_POST[RVS1]','$_POST[prijsvogel1]')";
zo komt de waarde van naamvogel 1 in veld soort; volgnummer1 komt in ringmaat, etc.. Dat lijkt niet de bedoeling.
Ja, ik zie wat je bedoelt. Volgens mij heeft de mysql_query teveel parameters.
Als je het volgende stukje:
if (!mysql_query($sql,sql2,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";mysql_close($con)
nu vervangt door wat hier onder staat, lukt het dan?
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added in kweker";
if (!mysql_query($sql2,$con))
{
die('Error: ' . mysql_error());
}
echo "<br>1 record added in bestelling";
mysql_close($con);
Ha John, kom ik toch weer bij mijn allereerste opmerking. Je insert opdracht wil 8 variabelen in 10 velden zetten. dat is niet toegestaan in deze querie.
Als je dit gebruikt:
$sql2="INSERT INTO bestelling (volgnummer)
VALUES
('$_POST[volgnummer1]')";
zul je geen foutmelding krijgen (mits het veld volgnummer bestaat). Alleen wordt er nu maar 1 waarde in je rij gezet. Je hoeft alleen maar je instructie uit te breiden met de velden die je ook wilt vullen. Maar de volgorde en het aantal van de velden moet precies overeenkomen met de volgorde van de variabelen en het aantal variabelen. In de eerste insert ($sql) klopt het wel precies.
bedankt John, je bent een kei !! en nu snap ik ook dat je heel secuur en systematisch te werk moet gaan. Ik moet nu alleen nog de checkboxen in een waarde overzetten, die in de tabel kan worden gezet. Bij een aangevinkte checkbox krijg ik nu een nul, terwijl ik in mijn formulier de gechecte waarde op "ja" heb gezet. Is hier ook een oplossing voor?
THNKS
john
Begrijp ik het goed? Qua functioneel ontwerp: jouw bezoeker krijgt een webformulier. Daarop staan een aantal te bestellen zaken (1e vraag: zijn deze bestellingen hard ingeprogrammeerd of worden deze met een select opdracht uit een tabel gehaald?). Jouw bezoeker vinkt vervolgens uit bijv. 10 te bestellen artikelen het artikel 3, 5 en 8 aan (voorbeeld). De bezoeker bevestigt de bestelling via de submit knop. Vervolgens wil je iedere bestelling in de tabel bestelling opslaan (in dit geval worden er dus 3 rijen toegevoegd). Klopt dit?
Er staan ook een aantal checkboxes om het overzichtelijk te houden. De waarde van de checkbox (in dit geval gedefinieerd als "ja") zou ik graag in de tebel willen invoeren, nu krijg ik op die plek een 0. Je merkt wel dat ik heel nieuw ben he, maar ik leer er toch iedere keer weer iets bij.
groeten
John
Hoi ook John: de checkbox werkt iets anders.
Jij schrijft:<input name="gekleurdgeanodiseerd2" type="checkbox" id="gekleurdgeanodiseerd2" value="ja">
Maar bij de checkbox gaat het er om dat deze aangevinkt of uitgevinkt kan staan (als de checkbox "gekleurdgeanodiseerd2" altijd de waarde ja heeft, aangevinkt of niet, dan levert dat, na submit, geen bruikbare informatie op.
Ik zou het zo doen:
<input name="gekleurdgeanodiseerd2" type="checkbox" id="gekleurdgeanodiseerd2"> (dus zonder value)
De aangevinkte checkbox heeft na submit, via de methode POST, de waarde 'on'. De niet aangevinkte checkbox geeft geen waarde door.
Dit kun je gebruiken in een if else functie.
Bijvoorbeeld:
if($_POST['gekleurdgeanodiseerd2']=='on'){
$gekleurdgeanodiseerd2='ja';//(of 1 dat kun je zelf kiezen)
}else{
$gekleurdgeanodiseerd2='nee';//(of 0 als je kiest tussen 1 of 0)
}
En dan zet je in je insert of update instructie dat de variabel $gekleurdgeanodiseerd2 in je tabel in het bijhorende veld moet komen. Kun je later per rij uitlezen of de waarde ja/nee of 0/1 is.
Overigens loont het de moeite om ook eens radiobuttons te bestuderen, want checkboxen maken meerdere keuzes mogelijk, en radiobuttons maken dat slechts 1 optie kan worden gekozen. Dat is bij een vraag: bent u lid? natuurlijk wel fijn.