Hulp nodig bij een foutmelding!
$rows = mysql_result(mysql_query("SELECT COUNT(naam) FROM producten ORDER BY naam WHERE categorie = $get "),0);
En dit de foutmelding:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/banketpa/public_html/new/testpagina.php on line 99
Als ik WHERE categorie = $get weghaal werkt hij wel maar ik moet hem erin hebben staan iemand enig idee
En waar moet $get vandaan komen? En waarom controleer jij niet of deze wel bestaat en een geldige waarde heeft? Een controle of er wel resultaten zijn gevonden, kan evenmin kwaad...
Kortom, het grootste deel van je code ontbreekt nog. Zie de tutorials hoe je e.e.a. wel dient op te bouwen.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Doe eens voor de echte error:
SELECT COUNT(naam)
FROM producten
ORDER BY naam
WHERE categorie = .........
1. ORDER BY slaat in dit geval nergens op
2. het is altijd
SELECT
FROM
[opt] WHERE
[opt] GROUP BY
[opt] ORDER BY
dus ik snap niet dat je presteerd om
ORDER BY
WHERE
te doen
En pruts a.u.b. je code nooit zo in elkaar als je nu hebt maar
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
define('DEBUG',true);
$sql = "SELECT COUNT(naam) FROM producten ORDER BY naam WHERE categorie = ". $get; // php variabelen buiten qoutes
if ($result = mysql_query($sql)) {
while ($row = mysql_fetch_assoc($result)) {
var_dump($row); // als voorbeeld
}
}
elseif (DEBUG && mysql_errno() >0) {
echo 'MySql Error: '. mysql_error().'<br />';
echo $sql;
}
else {
// doe hier iets met variabelen die niet gezet zijn
// doordat de query fout is gegaan
}
?>
define('DEBUG',true);
$sql = "SELECT COUNT(naam) FROM producten ORDER BY naam WHERE categorie = ". $get; // php variabelen buiten qoutes
if ($result = mysql_query($sql)) {
while ($row = mysql_fetch_assoc($result)) {
var_dump($row); // als voorbeeld
}
}
elseif (DEBUG && mysql_errno() >0) {
echo 'MySql Error: '. mysql_error().'<br />';
echo $sql;
}
else {
// doe hier iets met variabelen die niet gezet zijn
// doordat de query fout is gegaan
}
?>
op deze manier kan je dus ook de query eens goed bekijken en is de mysql_error() in veel gevallen ook nog eens te verklaren.
pgFrank schreef op 23.02.2008 21:02:
De query is mislukt, maar dat controleer jij nergens. De helft van je code, de belangrijkste helft, ontbreekt dus nog.
En waar moet $get vandaan komen? En waarom controleer jij niet of deze wel bestaat en een geldige waarde heeft? Een controle of er wel resultaten zijn gevonden, kan evenmin kwaad...
Kortom, het grootste deel van je code ontbreekt nog. Zie de tutorials hoe je e.e.a. wel dient op te bouwen.
En waar moet $get vandaan komen? En waarom controleer jij niet of deze wel bestaat en een geldige waarde heeft? Een controle of er wel resultaten zijn gevonden, kan evenmin kwaad...
Kortom, het grootste deel van je code ontbreekt nog. Zie de tutorials hoe je e.e.a. wel dient op te bouwen.
Er ontbreekt niks maar het gaat alleen om die regel de variable get staat gewoon in me script $get = $_GET['p'];
maar dat hoeven jullie niet te weten
Sterker nog, de hele ORDER BY slaat nergens op, er valt niks te sorteren! Je krijgt maar 1 resultaat retour, het aantal records dat aan de voorwaarde voldoet. En 1 resultaat valt niet te sorteren...
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?
session_start();
include("include/session.php");
$page = (!isset($_GET['page'])) ? 1 : $_GET['page'];
//aantal records per pagina
$max = 6;
$start = ($max * $page) - $max;
?>
session_start();
include("include/session.php");
$page = (!isset($_GET['page'])) ? 1 : $_GET['page'];
//aantal records per pagina
$max = 6;
$start = ($max * $page) - $max;
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Banket Partners B.V.</title>
<link href="banketpartners.css" rel="stylesheet" type="text/css">
</head>
<body topmargin="0">
<table width="800" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td><img src="images/website/Navigatie.png" width="800" height="41" border="0" usemap="#navigatie"></td>
</tr>
<tr>
<td background="images/website/login.png" height="58"><table width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="13"> </td>
<td width="285"> </td>
<td width="467"><div align="right"><strong>
Welkom <i><u></u></i><a href="inloggen.php">Inloggen</a> | <a href="controlepaneel.php">Controle Paneel</a> | <a href="adres.php">Adres</a> | <a href="faxlijst.php">Faxlijst</a>
| </strong><a href="process.php"><strong>Uitloggen</strong></a><strong>
</strong></div></td>
<td width="35"> </td>
</tr>
</table></td>
</tr>
<tr>
<td><img src="images/website/banner.png" width="800" height="136"></td>
</tr>
<tr valign="top">
<td background="images/website/bg.png" height="502"><div id="gebak"><table width="800" border="0" cellspacing="0" cellpadding="0" >
<tr>
<td width="13"> </td>
<td width="765" colspan="7"></td>
<td width="22"> </td>
</tr>
<tr>
<td> </td>
<td colspan="7">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
$get = $_GET['p'];
$sql = "SELECT * FROM `producten` WHERE `categorie` = '$get' ORDER BY `artikelnummer` LIMIT " . $start . "," . $max . "";
$resultaat = mysql_query($sql) or die(mysql_error());
echo '<table border="0" cellspacing="0" cellpadding="0" width="500">';
while ($rij = mysql_fetch_assoc($resultaat)) {
$naam = $rij["naam"];
$prijs = $rij["prijs"];
$afbeelding = $rij["afbeelding"];
$toegevoegd = $rij["toegevoegd"];
$descriptie = $rij["descriptie"];
$inhoud = $rij["inhoud"];
$artikel = $rij["artikelnummer"];
echo '<tr>';
echo '<td width="158" rowspan="4"><img src="images/';
echo $afbeelding;
echo '" width="158" height="128"></td><td width="13"> </td><td width="329"><b>Naam:</b> ';
echo $naam;
echo '</td></tr><tr><td> </td><td><b>Prijs:</b> ';
if($session->logged_in){
echo $prijs;
}else{
echo "<s>U moet ingelogd zijn</s>";
}
echo '</td></tr><tr><td> </td><td><b>Inhoud:</b> ';
echo $inhoud;
echo '</td></tr><tr><td> </td><td><b>Descriptie:</b><br>';
echo $descriptie;
echo '</td></tr><tr><td><b>Artikel nummer:</b> ';
echo $artikel;
echo '</td><td> </td><td> </td></tr><tr><td> </td><td> </td><td><b>Toegevoegd op:</b> ';
echo $toegevoegd;
echo '</td></tr><tr><td colspan="3"><hr><br></td></tr>';
}
echo "\n";
echo '</table>';
?>
$get = $_GET['p'];
$sql = "SELECT * FROM `producten` WHERE `categorie` = '$get' ORDER BY `artikelnummer` LIMIT " . $start . "," . $max . "";
$resultaat = mysql_query($sql) or die(mysql_error());
echo '<table border="0" cellspacing="0" cellpadding="0" width="500">';
while ($rij = mysql_fetch_assoc($resultaat)) {
$naam = $rij["naam"];
$prijs = $rij["prijs"];
$afbeelding = $rij["afbeelding"];
$toegevoegd = $rij["toegevoegd"];
$descriptie = $rij["descriptie"];
$inhoud = $rij["inhoud"];
$artikel = $rij["artikelnummer"];
echo '<tr>';
echo '<td width="158" rowspan="4"><img src="images/';
echo $afbeelding;
echo '" width="158" height="128"></td><td width="13"> </td><td width="329"><b>Naam:</b> ';
echo $naam;
echo '</td></tr><tr><td> </td><td><b>Prijs:</b> ';
if($session->logged_in){
echo $prijs;
}else{
echo "<s>U moet ingelogd zijn</s>";
}
echo '</td></tr><tr><td> </td><td><b>Inhoud:</b> ';
echo $inhoud;
echo '</td></tr><tr><td> </td><td><b>Descriptie:</b><br>';
echo $descriptie;
echo '</td></tr><tr><td><b>Artikel nummer:</b> ';
echo $artikel;
echo '</td><td> </td><td> </td></tr><tr><td> </td><td> </td><td><b>Toegevoegd op:</b> ';
echo $toegevoegd;
echo '</td></tr><tr><td colspan="3"><hr><br></td></tr>';
}
echo "\n";
echo '</table>';
?>
<td> </td>
</tr>
<tr>
<td> </td>
<td colspan="7">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?
//hier aan jou mysql gegevens aanpassen
$rows = mysql_result(mysql_query("SELECT COUNT(naam) FROM producten WHERE categorie = " . $get . " ORDER BY naam "),0);
$pages = ceil($rows / $max);
if ($page > 1) {
$previous = $page - 1;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $previous . "&p=" . $get . "\"><<</a> ";
}
for ($i = 1; $i <= $pages; $i++) {
if ($page == $i) {
if ($i == $pages) {
echo "<b>" . $i . "</b> ";
} else {
echo "<b>" . $i . "</b>, ";
}
} else {
if ($i == $pages) {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $i . "&p=" . $get . "\">" . $i . "</a> ";
} else {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $i . "&p=" . $get . "\">" . $i . "</a>, ";
}
}
}
if ($page < $pages) {
$next = $page + 1;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $next . "&p=" . $get . "\">>></a>";
}
?>
//hier aan jou mysql gegevens aanpassen
$rows = mysql_result(mysql_query("SELECT COUNT(naam) FROM producten WHERE categorie = " . $get . " ORDER BY naam "),0);
$pages = ceil($rows / $max);
if ($page > 1) {
$previous = $page - 1;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $previous . "&p=" . $get . "\"><<</a> ";
}
for ($i = 1; $i <= $pages; $i++) {
if ($page == $i) {
if ($i == $pages) {
echo "<b>" . $i . "</b> ";
} else {
echo "<b>" . $i . "</b>, ";
}
} else {
if ($i == $pages) {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $i . "&p=" . $get . "\">" . $i . "</a> ";
} else {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $i . "&p=" . $get . "\">" . $i . "</a>, ";
}
}
}
if ($page < $pages) {
$next = $page + 1;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $next . "&p=" . $get . "\">>></a>";
}
?>
<td> </td>
</tr>
</table></div>
<br></td>
</tr>
<tr>
<td><img src="images/website/copyright.png" width="800" height="76" border="0" usemap="#copyright"></td>
</tr>
</table>
<p> </p>
<map name="navigatie"><area shape="rect" coords="101,8,147,33" href="index.php">
<area shape="rect" coords="173,9,242,31" href="producten.php">
<area shape="rect" coords="265,10,331,31" href="informatie.php">
<area shape="rect" coords="355,9,407,31" href="nieuws.php">
<area shape="rect" coords="423,8,514,32" href="klantworden.php">
<area shape="rect" coords="532,9,585,30" href="contact.php">
<area shape="rect" coords="603,11,669,31" href="vacatures.php">
</map>
<map name="copyright"><area shape="rect" coords="111,11,216,26" href="http://www.banketpartners.nl">
<area shape="rect" coords="677,4,772,43" href="feed.xml">
<area shape="rect" coords="649,45,783,60" href="http://www.marksweb.nl" target="_blank" alt="Designer's Homepage">
</map></body>
</html>
mark schreef op 23.02.2008 21:15:
Leg dan eens uit hoe het kan dat jij geen fatsoenlijke foutmelding op je scherm of in een logboek krijgt.Er ontbreekt niks maar het gaat alleen om die regel de variable get staat gewoon in me script $get = $_GET['p'];
maar dat hoeven jullie niet te weten
maar dat hoeven jullie niet te weten
En wanneer jij hulp nodig hebt, zul je wel relevante informatie moeten geven. $get = $_GET['p']; is leuk en aardig, maar wie zegt dat $_GET['p'] bestaat en een geldige waarde heeft? Dat controleer jij nergens, daar ontbreekt dus een stuk code.
Ps. Eigenwijs gaan doen op het moment dat je het niet meer snapt, is niet zo handig...
officiele script http://www.sitemasters.be/?pagina=scripts/scripts&cat=19&id=249
dat is hem met een paar aanpassingen waaronder die where...
en die order by zit erop zodat hij alle artikelen ken sorteren op nummer en hij krijgt er neit 1 binnen maar 30
Je script lijkt gevoelig voor SQL injectie.
Je hebt nog geen echte SQL fout gegeven. Lees de post van Noppes daar staat in wat er fout is.
pgFrank schreef op 23.02.2008 21:19:
En wanneer jij hulp nodig hebt, zul je wel relevante informatie moeten geven. $get = $_GET['p']; is leuk en aardig, maar wie zegt dat $_GET['p'] bestaat en een geldige waarde heeft? Dat controleer jij nergens, daar ontbreekt dus een stuk code.
Ps. Eigenwijs gaan doen op het moment dat je het niet meer snapt, is niet zo handig...
mark schreef op 23.02.2008 21:15:
Leg dan eens uit hoe het kan dat jij geen fatsoenlijke foutmelding op je scherm of in een logboek krijgt.Er ontbreekt niks maar het gaat alleen om die regel de variable get staat gewoon in me script $get = $_GET['p'];
maar dat hoeven jullie niet te weten
maar dat hoeven jullie niet te weten
En wanneer jij hulp nodig hebt, zul je wel relevante informatie moeten geven. $get = $_GET['p']; is leuk en aardig, maar wie zegt dat $_GET['p'] bestaat en een geldige waarde heeft? Dat controleer jij nergens, daar ontbreekt dus een stuk code.
Ps. Eigenwijs gaan doen op het moment dat je het niet meer snapt, is niet zo handig...
Ach naja ik wil alleen weten wat ik vraag wat ik eraan ken doen niet of jullie hele lessen willen geven over controleren want in me URL heb ik echt wel index.php?p=gebak&page=1
En bovendien werkt de script 100% behalve als ik dus WHERE categorie " . $get . " erin zet
Webmakerij schreef op 23.02.2008 21:03:
dit zei hij toen ik jouw aanpassing deed Parse error: syntax error, unexpected T_STRING in /home/banketpa/public_html/new/testpagina.php on line 99
mark schreef op 23.02.2008 21:22:
Is dat zo? En wat als ik nu eens index.php?p=broodje&page=aap invul? De bezoeker van jouw site bepaalt wat er in de url staat, niet jij.want in me URL heb ik echt wel index.php?p=gebak&page=1
SQL-injection is ook zo'n fraai onderwerp, heb je daar wel eens van gehoord?
Ps. Waarom echo je de query niet? Dan zie je in 1x wat er ontbreekt aan de query.
Mijn welgemeende excusses, ik was idd de ( en ) vergeten:
$resultaat = mysql_query("SELECT COUNT(naam) FROM producten ORDER BY naam WHERE categorie = $get ") or die(mysql_error());
$rows = mysql_result($resultaat,0);
pgFrank schreef op 23.02.2008 21:27:
SQL-injection is ook zo'n fraai onderwerp, heb je daar wel eens van gehoord?
Ps. Waarom echo je de query niet? Dan zie je in 1x wat er ontbreekt aan de query.
mark schreef op 23.02.2008 21:22:
Is dat zo? En wat als ik nu eens index.php?p=broodje&page=aap invul? De bezoeker van jouw site bepaalt wat er in de url staat, niet jij.want in me URL heb ik echt wel index.php?p=gebak&page=1
SQL-injection is ook zo'n fraai onderwerp, heb je daar wel eens van gehoord?
Ps. Waarom echo je de query niet? Dan zie je in 1x wat er ontbreekt aan de query.
Nee heb nog nooit van SQL-injection gehoord ben beginner mysql maar wil het wel graag leren.
En inderdaad wat jij zegt is waar over de URL maar als ik de hyperlink maak index.php?p=gebak&page=1 dan moet ie het inprecipe doen lijkt me zo of niet?
(Away From Keyboard rond half 11 terug)
kan nog steeds richting schroothoop, het doet helemaal niks. Het kan zelfs helemaal niks doen, 1 rij sorteren op naam of welk willekeurig gegeven dan ook, zal altijd dezelfde resultaten geven. Ook van laag naar hoog of hoog naar laag zal weinig verschil uitmaken. 1 rij = 1 rij
Webmakerij schreef op 23.02.2008 21:41:
@mark
Mijn welgemeende excusses, ik was idd de ( en ) vergeten:
$resultaat = mysql_query("SELECT COUNT(naam) FROM producten ORDER BY naam WHERE categorie = $get ") or die(mysql_error());
$rows = mysql_result($resultaat,0);
Mijn welgemeende excusses, ik was idd de ( en ) vergeten:
$resultaat = mysql_query("SELECT COUNT(naam) FROM producten ORDER BY naam WHERE categorie = $get ") or die(mysql_error());
$rows = mysql_result($resultaat,0);
Nu krijg ik het volgende op m'n scherm
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE categorie = punten' at line 1
In dit geval kan de ORDER BY naam helemaal weg, deze kan toch niks doen in deze query, je krijgt tenslotte maar 1 rij in je resultset retour.
Dit is wat je nodig hebt:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
$query = "
SELECT
COUNT(naam)
FROM
producten
WHERE
categorie = '".mysql_real_escape_string($_GET['p'])."';
";
?>
$query = "
SELECT
COUNT(naam)
FROM
producten
WHERE
categorie = '".mysql_real_escape_string($_GET['p'])."';
";
?>
Niet meer klooien met $get, maar $_GET['p'] netjes beveiligen en netjes en overzichtelijk in de query zetten.
Edit: En dus zonder ORDER BY, dat sloeg nergens op.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
pgFrank schreef op 23.02.2008 21:52:
Het valt me nu ook op dat de categorie punten niet tussen quotes staat. Het lijkt me een string, quotes ' zijn dan op hun plaats.
Dit is wat je nodig hebt:
Niet meer klooien met $get, maar $_GET['p'] netjes beveiligen en netjes en overzichtelijk in de query zetten.
Edit: En dus zonder ORDER BY, dat sloeg nergens op.
Dit is wat je nodig hebt:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
$query = "
SELECT
COUNT(naam)
FROM
producten
WHERE
categorie = '".mysql_real_escape_string($_GET['p'])."';
";
?>
$query = "
SELECT
COUNT(naam)
FROM
producten
WHERE
categorie = '".mysql_real_escape_string($_GET['p'])."';
";
?>
Niet meer klooien met $get, maar $_GET['p'] netjes beveiligen en netjes en overzichtelijk in de query zetten.
Edit: En dus zonder ORDER BY, dat sloeg nergens op.
Oke bedankt voor de uitleg zoals ik al zei ben een beginner dus leer nu veel hiervan..
Nu nog 1 probleem :D de error is nu weg maar hij echoed mijn 1-2-3 vorige volgende niet..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?
//hier aan jou mysql gegevens aanpassen
$rows = "SELECT COUNT(naam) FROM producten WHERE categorie = '".mysql_real_escape_string($_GET['p'])."';
";
$pages = ceil($rows / $max);
if ($page > 1) {
$previous = $page - 1;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $previous . "&p=" . $get . "\"><<</a> ";
}
for ($i = 1; $i <= $pages; $i++) {
if ($page == $i) {
if ($i == $pages) {
echo "<b>" . $i . "</b> ";
} else {
echo "<b>" . $i . "</b>, ";
}
} else {
if ($i == $pages) {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $i . "&p=" . $get . "\">" . $i . "</a> ";
} else {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $i . "&p=" . $get . "\">" . $i . "</a>, ";
}
}
}
if ($page < $pages) {
$next = $page + 1;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $next . "&p=" . $get . "\">>></a>";
}
?>
//hier aan jou mysql gegevens aanpassen
$rows = "SELECT COUNT(naam) FROM producten WHERE categorie = '".mysql_real_escape_string($_GET['p'])."';
";
$pages = ceil($rows / $max);
if ($page > 1) {
$previous = $page - 1;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $previous . "&p=" . $get . "\"><<</a> ";
}
for ($i = 1; $i <= $pages; $i++) {
if ($page == $i) {
if ($i == $pages) {
echo "<b>" . $i . "</b> ";
} else {
echo "<b>" . $i . "</b>, ";
}
} else {
if ($i == $pages) {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $i . "&p=" . $get . "\">" . $i . "</a> ";
} else {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $i . "&p=" . $get . "\">" . $i . "</a>, ";
}
}
}
if ($page < $pages) {
$next = $page + 1;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $next . "&p=" . $get . "\">>></a>";
}
?>