Dit is de regel:

$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

Webmakerij schreef op 23.02.2008 21:03
Doe eens voor de echte error:

$resultaat = mysql_query("SELECT COUNT(naam) FROM producten ORDER BY naam WHERE categorie = $get ") or die mysql_error();
$rows = mysql_result($resultaat,0);


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
want in me URL heb ik echt wel index.php?p=gebak&page=1
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.

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
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
[quote='mark schreef op 23.02.2008 21:22']want in me URL heb ik echt wel index.php?p=gebak&page=1
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.

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.[/quote]

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)
ORDER BY naam
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);


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
Het gaat voor de WHERE fout, daar staat een ORDER BY. Die volgorde is niet goed, je krijgt altijd eerst de WHERE-clausules en dan pas later de ORDER BY.

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.
Een WHERE hoort in een query altijd ergens voor een ORDER BY te komen, dus dat is de fout die je nu maakt.

Sla ook de handleiding er eens op na als je niet zeker bent over de te gebruiken syntax...
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:
<?
$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.
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:
<?
$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..

<?
//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>&nbsp";
}
for ($i = 1; $i <= $pages; $i++) {
if ($page == $i) {
if ($i == $pages) {
echo "<b>" . $i . "</b>&nbsp";
} else {
echo "<b>" . $i . "</b>,&nbsp";
}
} else {
if ($i == $pages) {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $i . "&p=" . $get . "\">" . $i . "</a>&nbsp";
} else {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $i . "&p=" . $get . "\">" . $i . "</a>,&nbsp";
}
}
}
if ($page < $pages) {
$next = $page + 1;
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?page=" . $next . "&p=" . $get . "\">>></a>";
}
?>

Reageren