Door
bart de kinkelaar
op 28-12-2016 15:51
gewijzigd op 28-12-2016 16:34
3.033 views
Normaal gesproken werken SQL-queries op mijn localhost gewoon zoals het hoort, dus zonder extra keer F5.
Maar nu heb ik een pagina met 2 sql queries.
De ene is:
<?php
$query2 = "SELECT naam, Prijs, product_id, fotonaam FROM webshop WHERE fotonaam='$naam'";
$result2 = mysqli_query($con,$query2) or die ("Error in query: $query2. ".mysqli_error($con));
if (mysqli_num_rows($result2) > 0) {
while($row2 = mysqli_fetch_array($result2))
{?>
En de tweede is:
<?php
mysqli_select_db($con, 'webshop') or die ("Kan niet verbinden met de database!");
$query = "INSERT INTO winkelwagen (productnaam, product_id, user_id, prijs)
VALUES ('$F_Naam', '$P_id', '$id', '$Prijs')";
$result = mysqli_query($con,$query) or die ("Error in query: $query. ".mysqli_error($con));
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_array($result))
{
?>
De eerste pakt hij gewoon. De tweede alleen na een keertje F5, waarbij de error
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\webshop\BestelProducten.php on line 56
gewoon blijft staan.
Waarom verwerkt hij de query pas na f5 (de insert query) en waarom geeft hij de error?
De hele pagina:
<?php
session_start();
HTMLCODE
include 'style2.css'; include 'style.css';
$con=mysqli_connect("localhost","root","superbart","webshop");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
};
include 'conn.php';
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
}
if(isset($_GET['naam']))
{
$naam = $_GET['naam'];
}include 'navigatie.php';?>
<div class="col-md-12">
<div class="thumbnail">
<?php
mysqli_select_db($con, 'webshop') or die ("Kan niet verbinden met de database!");
$query2 = "SELECT naam, Prijs, product_id, fotonaam FROM webshop WHERE fotonaam='$naam'";
$result2 = mysqli_query($con,$query2) or die ("Error in query: $query2. ".mysqli_error($con));
if (mysqli_num_rows($result2) > 0) {
while($row2 = mysqli_fetch_array($result2))
{
echo "<h3>Artikelgegevens:</h3>";
$Naam = $row2['naam'];
$P_id = $row2['product_id'];
$F_Naam = $row2['fotonaam'];
$Prijs = $row2['Prijs'];
echo "$Naam";
}
}
else
{
echo "<center>Het legen van de winkelwagen is mislukt.</center>";
};
mysqli_select_db($con, 'webshop') or die ("Kan niet verbinden met de database!");
$query = "INSERT INTO winkelwagen (productnaam, product_id, user_id, prijs)
VALUES ('$F_Naam', '$P_id', '$id', '$Prijs')";
$result = mysqli_query($con,$query) or die ("Error in query: $query. ".mysqli_error($con));
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_array($result))
{
echo "Het product is succesvol toegevoegd aan uw winkelwagen.<br> Je word automatisch teruggestuurd naar de webshop!";
}
} else
{
echo "ERROR: Could not able to execute $query. " . mysqli_error($con);
}
?>
Ik tel het aantal personen in de auto. Ik kom aan twee personen. Daarna stap ik in de auto. Hoeveel personen zitten er in de auto?
Volgens mij is dit een beetje het verhaal waarop het misloopt. Je zult eerst de INSERT moeten doen en dan pas de SELECT. Overigens gaat het dan niet om de twee queries die je hier laat zien. Je laat namelijk niet zien hoe/waar je je gegevens weer uit de tabel winkelwagen haalt.
De pagina waarop de producten worden weergeven, zegmaar de homepagina van de webshop productenpagina, update de producten pas na een refresh.
Of volledig uitgelegd:
Ik voeg via het admin panel een product teo aan de databasetabel, wanneer ik vervolgens weer op Webshop klik, dan wil ik het liefst dat i khet toegevoegde product meteen zie, maar die zie ik pas na f5 (een refresh). De code van de webshop:
<?php
session_start();
?>
HTML
<?php
include 'style2.css'; include 'style.css';
$con=mysqli_connect("localhost","root","superbart","webshop");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
};
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
// getting info from db
}
if(isset($_GET['Merk']))
{
$Merk = $_GET['Merk']);
// getting info from db
}
if(isset($_GET['Prijs']))
{
$Prijs = intval($_GET['Prijs']);
// getting info from db
}
include 'navigatie.php';?>
HTML
<?php
include 'menu.php';
include 'conn.php';
mysqli_select_db($con, 'webshop') or die ("Unable to select database!");
$Merk = $_GET['Merk'];
$Prijs = $_GET['Prijs'];
if(isset($_GET['Merk']) && isset($_GET['Prijs']))
{
$Merk = $_GET['Merk'];
$Prijs = $_GET['Prijs'];
if($Merk == "LG" && $Prijs == "250")
{
$query = "select * FROM webshop WHERE Merk = 'LG' AND Prijs < 250";
}
if($Merk == "LG" && $Prijs == "500")
{
$query = "select * FROM webshop WHERE Merk = 'LG' AND Prijs < 500";
}
if($Merk == "LG" && $Prijs == "1000")
{
$query = "select * FROM webshop WHERE Merk = 'LG' AND Prijs < 1000";
}
if($Merk == "LG" && $Prijs == "1200")
{
$query = "select * FROM webshop WHERE Merk = 'LG' AND Prijs < 1200";
}
if($Merk == "LG" && $Prijs == "Alle")
{
$query = "select * FROM webshop WHERE Merk = 'LG'";
}
if($Merk == "Samsung" && $Prijs == "250")
{
$query = "select * FROM webshop WHERE Merk = 'Samsung' AND Prijs < 250";
}
if($Merk == "Samsung" && $Prijs == "500")
{
$query = "select * FROM webshop WHERE Merk = 'Samsung' AND Prijs < 500";
}
if($Merk == "Samsung" && $Prijs == "1000")
{
$query = "select * FROM webshop WHERE Merk = 'Samsung' AND Prijs < 1000";
}
if($Merk == "Samsung" && $Prijs == "1200")
{
$query = "select * FROM webshop WHERE Merk = 'Samsung' AND Prijs < 1200";
}
if($Merk == "Samsung" && $Prijs == "Alle")
{
$query = "select * FROM webshop WHERE Merk = 'Samsung'";
}
En dat voor alle merken en prijzenopties.
}
else
{
$query = "select * FROM webshop";
}
$result = mysqli_query($con,$query) or die ("Error in query: $query. ".mysqli_error());
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_array($result))
{
$fnaam = $row["fotonaam"];
$naam = $row["naam"];
$prijs = $row["Prijs"];
echo "<table border='1px'><tr><td class='imagetd' style='background-color:#ffffff' border-color:#0576b6 border='1px'><h5><b><center><img class='imagetabel' src='".$fnaam.".jpg' height='125px'/></center></b></h4</td></tr>";
echo "<tr><td style='background-color:#ffffff' border='1px'><h5><b><center>".$naam."</center></b></h4></td></tr>";
echo "<tr><td style='background-color:#ffffff' border='1px'><h5><b><center>€".$prijs."</center></b></h4></td></tr>";
echo "<tr><td style='background-color:#ffffff' border='1px'><center><a href='BestelProducten.php?id=$id&&naam=$fnaam'><button>Bestellen</button></center></a></td></tr></table>";
}
echo "</center>";
}
else
{
echo "<img src='ProductNietBeschikbaar.png'/>";
}
mysqli_free_result($result);
mysqli_close($con);
?>
Dit is de pagina waarop alle artikelen laat zien.
Het toevoegen van producten via de admin pagina doe ik dmv een formuliertje.
Het formuliertje verschijnt in een popup op de Admin.php pagina. En wanneer op de submit knop is gedrukt:
Even samengevat wat de fout op dit moment is waar ik me op richt:
De eerste keer dat ik na het inloggen de S6 toevoeg aan mn winkelmandje, doet hij dat ook.
Maar doe ik het een tweede keer, dan voegt hij hem niet toe aan het winkelmandje.
De enige keer dat hij hem dan nog toevoegt, is als ik de pagina waarop de melding staat "Toegevoegd aan winkelmandje" f5.Hoe kan dit?
De webshop (homepage):
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Webshop - Webshop</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<style>
table
{
float:left;
width:24%;
}
</style>
<body>
<?php
include 'style2.css'; include 'style.css';
$con=mysqli_connect("localhost","root","superbart","webshop");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
};
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
// getting info from db
}
if(isset($_GET['Merk']))
{
$Merk = $_GET['Merk'];
// getting info from db
}
if(isset($_GET['Prijs']))
{
$Prijs = intval($_GET['Prijs']);
// getting info from db
}
include 'navigatie.php';?>
<div class="col-md-12">
<div class="thumbnail">
<?php
include 'menu.php';
include 'conn.php';
mysqli_select_db($con, 'webshop') or die ("Unable to select database!");
$Merk = $_GET['Merk'];
$Prijs = $_GET['Prijs'];
if(isset($_GET['Merk']) && isset($_GET['Prijs']))
{
$Merk = $_GET['Merk'];
$Prijs = $_GET['Prijs'];
if($Merk == "LG" && $Prijs == "250")
{
$query = "select * FROM webshop WHERE Merk = 'LG' AND Prijs < 250";
}
if($Merk == "LG" && $Prijs == "500")
{
$query = "select * FROM webshop WHERE Merk = 'LG' AND Prijs < 500";
}
if($Merk == "LG" && $Prijs == "1000")
{
$query = "select * FROM webshop WHERE Merk = 'LG' AND Prijs < 1000";
}
if($Merk == "LG" && $Prijs == "1200")
{
$query = "select * FROM webshop WHERE Merk = 'LG' AND Prijs < 1200";
}
if($Merk == "LG" && $Prijs == "Alle")
{
$query = "select * FROM webshop WHERE Merk = 'LG'";
}
if($Merk == "Samsung" && $Prijs == "250")
{
$query = "select * FROM webshop WHERE Merk = 'Samsung' AND Prijs < 250";
}
if($Merk == "Samsung" && $Prijs == "500")
{
$query = "select * FROM webshop WHERE Merk = 'Samsung' AND Prijs < 500";
}
if($Merk == "Samsung" && $Prijs == "1000")
{
$query = "select * FROM webshop WHERE Merk = 'Samsung' AND Prijs < 1000";
}
if($Merk == "Samsung" && $Prijs == "1200")
{
$query = "select * FROM webshop WHERE Merk = 'Samsung' AND Prijs < 1200";
}
if($Merk == "Samsung" && $Prijs == "Alle")
{
$query = "select * FROM webshop WHERE Merk = 'Samsung'";
}
if($Merk == "Apple" && $Prijs == "250")
{
$query = "select * FROM webshop WHERE Merk = 'Apple' AND Prijs < 250";
}
if($Merk == "Apple" && $Prijs == "500")
{
$query = "select * FROM webshop WHERE Merk = 'Apple' AND Prijs < 500";
}
if($Merk == "Apple" && $Prijs == "1000")
{
$query = "select * FROM webshop WHERE Merk = 'Apple' AND Prijs < 1000";
}
if($Merk == "Apple" && $Prijs == "1200")
{
$query = "select * FROM webshop WHERE Merk = 'Apple' AND Prijs < 1200";
}
if($Merk == "Apple" && $Prijs == "Alle")
{
$query = "select * FROM webshop WHERE Merk = 'Apple'";
}
if($Merk == "HTC" && $Prijs == "250")
{
$query = "select * FROM webshop WHERE Merk = 'HTC' AND Prijs < 250";
}
if($Merk == "HTC" && $Prijs == "500")
{
$query = "select * FROM webshop WHERE Merk = 'HTC' AND Prijs < 500";
}
if($Merk == "HTC" && $Prijs == "1000")
{
$query = "select * FROM webshop WHERE Merk = 'HTC' AND Prijs < 1000";
}
if($Merk == "HTC" && $Prijs == "1200")
{
$query = "select * FROM webshop WHERE Merk = 'HTC' AND Prijs < 1200";
}
if($Merk == "HTC" && $Prijs == "Alle")
{
$query = "select * FROM webshop WHERE Merk = 'HTC'";
}
if($Merk == "Huawei" && $Prijs == "250")
{
$query = "select * FROM webshop WHERE Merk = 'Huawei' AND Prijs < 250";
}
if($Merk == "Huawei" && $Prijs == "500")
{
$query = "select * FROM webshop WHERE Merk = 'Huawei' AND Prijs < 500";
}
if($Merk == "Huawei" && $Prijs == "1000")
{
$query = "select * FROM webshop WHERE Merk = 'Huawei' AND Prijs < 1000";
}
if($Merk == "Huawei" && $Prijs == "1200")
{
$query = "select * FROM webshop WHERE Merk = 'Huawei' AND Prijs < 1200";
}
if($Merk == "Huawei" && $Prijs == "Alle")
{
$query = "select * FROM webshop WHERE Merk = 'Huawei'";
}
if($Merk == "Alle" && $Prijs == "Alle")
{
$query = "select * FROM webshop";
}
if($Merk == "Alle" && $Prijs == "250")
{
$query = "select * FROM webshop WHERE Prijs = '250'";
}
if($Merk == "Alle" && $Prijs == "500")
{
$query = "select * FROM webshop WHERE Prijs = '500'";
}
if($Merk == "Alle" && $Prijs == "1000")
{
$query = "select * FROM webshop WHERE Prijs = '1000'";
}
if($Merk == "Alle" && $Prijs == "1200")
{
$query = "select * FROM webshop WHERE Prijs = '1200'";
}
}
else
{
$query = "select * FROM webshop";
}
$result = mysqli_query($con,$query) or die ("Error in query: $query. ".mysqli_error());
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_array($result))
{
$fnaam = $row["fotonaam"];
$naam = $row["naam"];
$prijs = $row["Prijs"];
echo "<table border='1px'><tr><td class='imagetd' style='background-color:#ffffff' border-color:#0576b6 border='1px'><h5><b><center><img class='imagetabel' src='".$fnaam.".jpg' height='125px'/></center></b></h4</td></tr>";
echo "<tr><td style='background-color:#ffffff' border='1px'><h5><b><center>".$naam."</center></b></h4></td></tr>";
echo "<tr><td style='background-color:#ffffff' border='1px'><h5><b><center>€".$prijs."</center></b></h4></td></tr>";
echo "<tr><td style='background-color:#ffffff' border='1px'><center><a href='BestelProducten.php?id=$id&&naam=$fnaam'><button>Bestellen</button></center></a></td></tr></table>";
}
echo "</center>";
}
else
{
echo "<img src='ProductNietBeschikbaar.png'/>";
}
mysqli_free_result($result);
mysqli_close($con);
?></div>
<?php include 'footer.php'?>
</div>
</body>
</html>
Bevestigingspagina, de pagina waarop je komt nadat je op bestellen hebt gedrukt:
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Product Bestellen - Webshop</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<?php
include 'style2.css'; include 'style.css';
$con=mysqli_connect("localhost","root","superbart","webshop");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
};
include 'conn.php';
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
}
if(isset($_GET['naam']))
{
$naam = $_GET['naam'];
}include 'navigatie.php';?>
<div class="col-md-12">
<div class="thumbnail">
<?php
mysqli_select_db($con, 'webshop') or die ("Kan niet verbinden met de database!");
$query2 = "SELECT naam, Prijs, product_id, fotonaam FROM webshop WHERE fotonaam='$naam'";
$result2 = mysqli_query($con,$query2) or die ("Error in query: $query2. ".mysqli_error($con));
if (mysqli_num_rows($result2) > 0) {
while($row2 = mysqli_fetch_array($result2))
{
echo "<h3>Artikelgegevens:</h3>";
$Naam = $row2['naam'];
$P_id = $row2['product_id'];
$F_Naam = $row2['fotonaam'];
$Prijs = $row2['Prijs'];
}
}
else
{
echo "<center>Het legen van de winkelwagen is mislukt.</center>";
};
mysqli_select_db($con, 'webshop') or die ("Kan niet verbinden met de database!");
$query = "INSERT INTO winkelwagen (productnaam, product_id, user_id, prijs)
VALUES ('".$F_Naam."', '".$P_id."', '".$id."', '".$Prijs."')";
if ($con->query($query) === TRUE) {
echo "<br><b>De registratie is geslaagd!</b><br>";
}
else
{
echo "Error: " . $query . "<br>" . $con->error;
};
?>
</body>
</html>
De winkelwagen-overzichtpagina:
<?php
include 'conn.php';
if(isset($_GET['id']))
{
$id = intval($_GET['id']);
}
mysqli_select_db($con, 'webshop') or die ("Kan niet verbinden met de database!");
$query = "SELECT winkelwagen_id, productnaam, product_id, user_id, prijs, COUNT(productnaam) FROM winkelwagen WHERE user_id=$id GROUP BY productnaam";
$result = mysqli_query($con,$query) or die ("Error in query: $query. ".mysqli_error());
if (mysqli_num_rows($result) > 0)
{
echo "<table class='tabel' width='500px'>";
echo "<tr><td><center><b><i>#</center><i></b></td>";
echo "<td><center><b><i>Product</center><i></b></td>";
echo "<td><center><b><i>Prijs</center><i></b></td>";
echo "<td><center><b><i>Aantal</center><i></b></td></tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td style='background-color:#dee1e1'><h5><b><center><img src='" . $row['productnaam'] . ".jpg' height='80px'/></center></b></h5></td>";
echo "<td style='background-color:#dee1e1'><h5><b><center>" . $row['productnaam'] . "</center></b></h5></td>";
echo "<td style='background-color:#dee1e1'><h5><b><center>€" . $row['prijs'] . "</center></b></h5></td>";
echo "<td style='background-color:#dee1e1'><h5><b><center>". $row['COUNT(productnaam)'] ." stuks</center></b></h5></td>";
echo "</tr>";
}
echo "</table>";
echo "<br><b>Soms is een refresh van de pagina nodig om de up-to-date winkelwagen & totaal te zien.</b>";
}
else
{
echo "Geen producten beschikbaar!";
}
$query2 = "SELECT SUM(prijs) AS prijs FROM winkelwagen WHERE user_id=$id";
$result2 = mysqli_query($con,$query2) or die ("Error in query: $query2. ".mysqli_error());
if (mysqli_num_rows($result2) > 0) {
echo "<table height=5px>";
while($row2 = mysqli_fetch_array($result2))
{
echo "<tr><center><h3><b>Totaal:</b> €".$row2['prijs'].",-</h3></center></tr>";
}
echo "<tr><button class='button'><span>Bestellen</span></button></tr></table>";
}
else
{
echo "Je winkelwagen is leeg!";
};
mysqli_close($con);?>
<?php echo "<form method='post' class='form-horizontal' action='winkelwagenlegen.php?id=$id' role='form'>
<center><button type='submit' class='btn btn-default' id='btnlogin' name='Btnlogin'>Winkelwagen legen</button></center>
</form>";?>