[MySQL] Onbekent insert probleem
Op mijn website heb ik een kleine database waar ik wat gegevens ga dumpen.
Het probleem is dat het niet werkt.
Ik heb de volgende code:
Code (php)
1
2
3
4
2
3
4
<?php
$insert = "INSERT INTO ".$DB_naam." (id,product_naam,product_nr,prijs,aantal,maat,datum,ip) VALUES ('','".$_POST['product_naam']."','".$_POST['product_nr']."','".$_POST['prijs']."','".$_POST['aantal']."','"$_POST['maat']."', CURDATE(),'".$_SERVER['REMOTE_ADDR']."')";
mysql_query($insert) or die(mysql_error());
?>
$insert = "INSERT INTO ".$DB_naam." (id,product_naam,product_nr,prijs,aantal,maat,datum,ip) VALUES ('','".$_POST['product_naam']."','".$_POST['product_nr']."','".$_POST['prijs']."','".$_POST['aantal']."','"$_POST['maat']."', CURDATE(),'".$_SERVER['REMOTE_ADDR']."')";
mysql_query($insert) or die(mysql_error());
?>
Wanneer ik deze code uitvoer op mijn website dan is er een soort van error. Het grote probleem is dat de broncode van de betreffende pagina gewoon leeg is en dat er ook geen tekst komt te staan. Wanneer ik voor de $insert variabel 2 // zet (dus dat deze als commentaar wordt beschouwd) dan werkt de volledige pagina.
Ik weet niet of het een probleem kan zijn dat alle namen (zoals $_post['product_naam']) meerdere malen gebruikt worden. De formulieren met deze namen worden meerdere malen gemaakt voor verschillende producten met verschillende gegevens.
Ik heb al diverse dingen geprobeerd, maar ik kom er niet uit. Ik heb er al voor gezorgd dat ieder formulier en de namen andere namen kregen en een aparte $insert variabel. Helaas mocht dit niet baten.
Wanneer ik het aantal producten terug dring naar 1 werkt het vreemd genoeg ook niet.
Ziet iemand anders het probleem?
Laat wat meer van je code zien zonder username password van je db.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//PRODUCTEN KLANTEN DATABASE//
if (isset($_POST['winkelwagen'])) {
if ($_POST['aantal'] != "" OR $_POST['maat'] != ""){
$insert = "INSERT INTO ".$DB_naam." (id,product_naam,product_nr,prijs,aantal,maat,datum,ip) VALUES ('','".$_POST['product_naam']."','".$_POST['product_nr']."','".$_POST['prijs']."','".$_POST['aantal']."','"$_POST['maat']."', CURDATE(),'".$_SERVER['REMOTE_ADDR']."')";
mysql_query($insert) or die(mysql_error());
echo "<script>location.href='http://www.wallys-suits.nl/index.php?pagina=bestellen'</script>";
}
}
else{
//tabel met alle formulier gegevens, deze staat in een while lus waardoor hij 7x wordt weergegeven, aan iedere tabel is andere data gelinkt.
}
?>
//PRODUCTEN KLANTEN DATABASE//
if (isset($_POST['winkelwagen'])) {
if ($_POST['aantal'] != "" OR $_POST['maat'] != ""){
$insert = "INSERT INTO ".$DB_naam." (id,product_naam,product_nr,prijs,aantal,maat,datum,ip) VALUES ('','".$_POST['product_naam']."','".$_POST['product_nr']."','".$_POST['prijs']."','".$_POST['aantal']."','"$_POST['maat']."', CURDATE(),'".$_SERVER['REMOTE_ADDR']."')";
mysql_query($insert) or die(mysql_error());
echo "<script>location.href='http://www.wallys-suits.nl/index.php?pagina=bestellen'</script>";
}
}
else{
//tabel met alle formulier gegevens, deze staat in een while lus waardoor hij 7x wordt weergegeven, aan iedere tabel is andere data gelinkt.
}
?>
Uiteraard wordt er verbinding gemaakt met de database. Ik heb met succes een andere pagina getest waar de data die hier de database wordt ingestampt wordt weergegeven. De data die ik daar weergeef heb ik er tijdelijk zelf in gezet via PHPMyAdmin.
Zet helemaal bovenin:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?PHP
error_reporting(E_ALL);
ini_set("display_errors", 1);
[/code]
en doe eens een echo $insert om je insert query te beoordelen.
error_reporting(E_ALL);
ini_set("display_errors", 1);
[/code]
en doe eens een echo $insert om je insert query te beoordelen.
Gewijzigd op 01/01/1970 01:00:00 door John D
Wanneer ik in de broncode kijk van de index.php pagina zie ik ook dat de container (waar mijn pagina wordt geinclude) in een keer de code af wordt gekapt. De container sluit niet eens meer en de HTML sluit tags staan er ook niet meer in.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
//PRODUCTEN KLANTEN DATABASE//
if (isset($_POST['winkelwagen'])) {
if (!empty($_POST['aantal']) && !empty($_POST['maat'])) {
if (mysql_query("INSERT INTO ".$DB_naam." (product_naam, product_nr, prijs, aantal, maat, datum, ip) VALUES ('".mysql_real_escape_string($_POST['product_naam'])."', '".mysql_real_escape_string($_POST['product_nr'])."', '".mysql_real_escape_string($_POST['prijs'])."', '".mysql_real_escape_string($_POST['aantal'])."', '".mysql_real_escape_string($_POST['maat'])."', NOW(), '".$_SERVER['REMOTE_ADDR']."')")) {
echo '<script>location.href=\'http://www.wallys-suits.nl/index.php?pagina=bestellen\'</script>';
} else {
echo 'Er gaat iets fout, probeer het later opnieuw!';
}
}
} else {
//tabel met alle formulier gegevens, deze staat in een while lus waardoor hij 7x wordt weergegeven, aan iedere tabel is andere data gelinkt.
}
?>
//PRODUCTEN KLANTEN DATABASE//
if (isset($_POST['winkelwagen'])) {
if (!empty($_POST['aantal']) && !empty($_POST['maat'])) {
if (mysql_query("INSERT INTO ".$DB_naam." (product_naam, product_nr, prijs, aantal, maat, datum, ip) VALUES ('".mysql_real_escape_string($_POST['product_naam'])."', '".mysql_real_escape_string($_POST['product_nr'])."', '".mysql_real_escape_string($_POST['prijs'])."', '".mysql_real_escape_string($_POST['aantal'])."', '".mysql_real_escape_string($_POST['maat'])."', NOW(), '".$_SERVER['REMOTE_ADDR']."')")) {
echo '<script>location.href=\'http://www.wallys-suits.nl/index.php?pagina=bestellen\'</script>';
} else {
echo 'Er gaat iets fout, probeer het later opnieuw!';
}
}
} else {
//tabel met alle formulier gegevens, deze staat in een while lus waardoor hij 7x wordt weergegeven, aan iedere tabel is andere data gelinkt.
}
?>
Werk trouwens met spaties in een query zodat het er overzichtelijker uitziet, iedere POST en GET escape je met mysql_real_escape_string(), query's controleren doe je met if (mysql_query()) en niet met or die().
Je fout zat in de query, je was een punt vergeten bij $_POST['aantal'].
Ik heb je script nu draaiend. Het werkt alleen niet naar behoren. Wanneer een product in de winkelwage wil leggen dan krijg ik een hele rits commando's in de titel balk, hij voert zijn script niet uit want ik ga direct naar de home pagina (omdat het script geen ?pagina=producten meer ziet).
Nu heb ik het volgende in het formulier toegevoegd:
Dan blijft hij wel op de product pagina, maar er komt niks in mijn database terecht. Een beetje vreemd, ik zie namelijk zelf geen fouten meer in dit script.
De rits commando's blijven wel boven in de adres balk staan (product_naam, product_nr, etc. etc.).
Ik heb ook al geprobeerd om $_POST[] te vervangen voor $_GET[], maar dat werkt ook niet (hij zal de waarde niet snel genoeg uit de adres balk kunnen halen).
Gewijzigd op 01/01/1970 01:00:00 door Nieko
Quote:
Dan verstuur je je formulier blijkbaar via de GET methode. Slimmer is om de gegevens gewoon via POST te versturen door het method attribuut van je <form> tag aan te passen:De rits commando's blijven wel boven in de adres balk staan (product_naam, product_nr, etc. etc.).
Nou werkt hij al wat stabieler. Hij heeft enkel nog niet zo veel zin om alles in de database te zetten.
Het if() statement met de MySQL query opdracht er in lijkt niet goed te functioneren. Want na het uitvoeren van deze opdracht moet hij of "Er gaat iets fout, probeer het later opnieuw." weergeven of hij moet naar de bestel pagina gaan. Geen van beide is het geval, hij refreshed de pagina enkel.
Waar gaat bij input tags overigens het voorkeur naar uit? Moet ik de input tags labelen met het "name" label of de "id" labels? Ik gebruik op het moment id.
//EDIT,,
Na de labels id weer terug veranderd te hebben naar name werkt het al weer wat beter. Het probleem is nu is dat hij iedere keer de volgende melding weergeeft:
"Er gaat iets fout, probeer het later opnieuw!"
Als het goed is kan dit niet komen doordat er op 1 pagina vaker de labels product_naam, product_nr, etc. etc. voorkomen. Als ik alles zo instel dat er maar 1 product wordt weergegeven dan geeft hij nog steeds deze melding.
Hartelijk dank voor jullie hulp zo ver!
Gewijzigd op 01/01/1970 01:00:00 door Nieko
Het bleek dat ik de maat colom niet in de database had staan.. Zoals normaal weer een lullig foutje -.-.
Maar goed, zonder jullie hulp was ik er denk ik nog wel langer mee bezig geweest.
Super bedankt!