Hulp nodig bij een foutmelding!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Mark

mark

23/02/2008 21:00:00
Quote Anchor link
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
 
PHP hulp

PHP hulp

16/01/2025 14:04:51
 
Frank -

Frank -

23/02/2008 21:02:00
Quote Anchor link
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.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 

23/02/2008 21:03:00
Quote Anchor link
Doe eens voor de echte error:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$resultaat = mysql_query("SELECT COUNT(naam) FROM producten ORDER BY naam WHERE categorie = $get ") or die mysql_error();
$rows = mysql_result($resultaat,0);
 
Noppes

Noppes

23/02/2008 21:12:00
Quote Anchor link
Welk nut heeft het om ORDER BY te doen in het volgende statament

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)
PHP script in nieuw venster Selecteer het PHP script
1
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

}
?>


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.
 
Mark

mark

23/02/2008 21:15:00
Quote Anchor link
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.


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
 
Frank -

Frank -

23/02/2008 21:16:00
Quote Anchor link
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...
 
Mark

mark

23/02/2008 21:16:00
Quote Anchor link
Oke hier is dan hele script

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
?>



<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">&nbsp;</td>
<td width="285">&nbsp;</td>
<td width="467"><div align="right"><strong>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? if($session->logged_in){ ?>
Welkom <i><u>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo "$session->username"; ?>
</u></i>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? }else{ ?>
<a href="inloggen.php">Inloggen</a>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? } ?>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? if($session->isAdmin()){ ?>
| <a href="controlepaneel.php">Controle Paneel</a>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? } ?>
| <a href="adres.php">Adres</a> | <a href="faxlijst.php">Faxlijst</a>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? if($session->logged_in){ ?>
| </strong><a href="process.php"><strong>Uitloggen</strong></a><strong>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? } ?>

</strong></div></td>
<td width="35">&nbsp;</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">&nbsp;</td>
<td width="765" colspan="7"></td>
<td width="22">&nbsp;</td>
</tr>

<tr>
<td>&nbsp;</td>
<td colspan="7">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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">&nbsp;</td><td width="329"><b>Naam:</b> ';
    echo $naam;
    echo '</td></tr><tr><td>&nbsp;</td><td><b>Prijs:</b> ';
    if($session->logged_in){
    echo $prijs;
    }
else{
    echo "<s>U moet ingelogd zijn</s>";
    }

    echo '</td></tr><tr><td>&nbsp;</td><td><b>Inhoud:</b> ';
    echo $inhoud;
    echo '</td></tr><tr><td>&nbsp;</td><td><b>Descriptie:</b><br>';
    echo $descriptie;
    echo '</td></tr><tr><td><b>Artikel nummer:</b> ';
    echo $artikel;
    echo '</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</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>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan="7">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?
//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>&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>";
}

?>
</td>
<td>&nbsp;</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>&nbsp;</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>
 
Frank -

Frank -

23/02/2008 21:19:00
Quote Anchor link
mark schreef op 23.02.2008 21:15:
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
Leg dan eens uit hoe het kan dat jij geen fatsoenlijke foutmelding op je scherm of in een logboek krijgt.

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

mark

23/02/2008 21:19:00
Quote Anchor link
Waarschijnlijk hebben jullie geen idee waar het over gaat want jullie andwoorden zijn een beetje in een hele verkeerde richting

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
 

23/02/2008 21:20:00
Quote Anchor link
En dacht je echt dat we dit helemaal gingen lezen?

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.
 
Mark

mark

23/02/2008 21:22:00
Quote Anchor link
pgFrank schreef op 23.02.2008 21:19:
mark schreef op 23.02.2008 21:15:
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
Leg dan eens uit hoe het kan dat jij geen fatsoenlijke foutmelding op je scherm of in een logboek krijgt.

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
 
Mark

mark

23/02/2008 21:24:00
Quote Anchor link
Webmakerij schreef op 23.02.2008 21:03:
Doe eens voor de echte error:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$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
 
Frank -

Frank -

23/02/2008 21:27:00
Quote Anchor link
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.
 

23/02/2008 21:41:00
Quote Anchor link
@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);
 
Mark

mark

23/02/2008 21:43:00
Quote Anchor link
pgFrank schreef op 23.02.2008 21:27:
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.


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)
 
Frank -

Frank -

23/02/2008 21:43:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
 
Mark

mark

23/02/2008 21:44:00
Quote Anchor link
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
 
Frank -

Frank -

23/02/2008 21:47:00
Quote Anchor link
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.
 
Joren de Wit

Joren de Wit

23/02/2008 21:48:00
Quote Anchor link
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...
 
Frank -

Frank -

23/02/2008 21:52:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
$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 -
 
Mark

mark

23/02/2008 22:23:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
$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)
PHP script in nieuw venster Selecteer het PHP script
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
<?
//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>";
}

?>
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.