mysql_num_rows(): supplied argument is not a valid MySQL result resource in..

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

22/11/2006 14:20:00
Quote Anchor link
Wie weet wat er hier niet goed is?

Dit is de foutmelding:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in....

Dit is de regel: } elseif (mysql_num_rows($data) >= 1) {


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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
case ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['submit'] == 'Zoeken') :
          //-- $_POST['zoekterm'] even door beveiliging(etje) halen.
      $zoekterm=mysql_real_escape_string($_POST['zoekterm']);
      //-- $_POST['zoekterm'] is de naam van het zoekveld in het formulier wat we
      //-- hebben gemaakt in het vorige 'hoofdstuk'. Dit is dus de SQL code:

      $db->sql_opdracht = ("SELECT * FROM linken WHERE link_omschrijving LIKE '%" . $_POST['zoekterm'] . "%'");
      $data = $db->sql_gegevens();
      //-- voer de SQL code uit en zet dit in een variabele zodat we zometeen kunnen
      //-- kijken of er een resultaat is
      //-- EDIT: zo niet een TRIGGER_ERROR weergeven, dan loopt de rest van je code wel gewoon door
      
      //-- bekijk nu of er een resultaat is, of het zoekwoord dus gevonden is of niet

      if (empty($_POST['zoekterm'])) {
          echo '<table class="zoek" align="center" width="450" border="0" cellspacing="0" cellpadding="4">';
          echo '<tr>';
          echo '<td>';
          echo '<p align="center"><b>U heeft vergeten iets in te vullen</b><br /><br />';
          echo '</td>';
          echo '</tr>';
          echo '</table>';
      }
elseif (mysql_num_rows($data) >= 1) {
          //-- er is een resultaat gevonden, toon de resultaten via een while () loop
        
         echo '<h1>U zocht op:&nbsp;' . $_POST['zoekterm'] . '</h1>';
        
        
      echo '<table width="100%"  class="tabelgroot" align="center" cellspacing="0" cellpadding="0">';
      echo '<tr>';
      $kolommen = 3;
        
              while ($data = $db->sql_gegevens()){
                    echo '<td valign="top" align="center">';
                    echo '<table class="kadobon" align="left" width="">';
                  echo '<tr>';
                  echo '<td width="120" height="90"><img src="'.$data['link_plaatje'].'"  border="0" alt="'.$data['link_naam'].'" /></td>';
                  echo '</tr>'.PHP_EOL;
                  echo '<tr>';
                  echo '<td class="naam">'.$data['link_naam'].'</td>';
                  echo '</tr>'.PHP_EOL;
                  echo '<tr>';
                  echo '<td class="omschrijving">'.$data['link_omschrijving'].'</td>';
                  echo '</tr>'.PHP_EOL;
                  echo '<tr>';
                  echo '<td class="prijs">'.$data['link_prijs'].'</td>';
                  echo '</tr>'.PHP_EOL;
                  echo '<tr>';
                  echo '<td class="linkbon"><a href="kadobon.php?kadobon=' . $data['link_id'] . '" target="_blank" ><img src="plaatjes/kadobon.gif" border="0" alt="Meteen naar de kadobon" title="Meteen naar de kadobon" /></a>&nbsp;/&nbsp;<a href="website.php?website=' . $data['link_id'] . '" target="_blank" ><img src="plaatjes/website.gif" border="0" alt="Naar de website" title="Naar de website" /></a></td>';
                  echo '</tr></table>';
            
        
    
$counter++;
    if($counter==$kolommen)
    {

    echo '</td></tr></table>'.PHP_EOL.'<table class="tabelgroot" align="left" cellspacing="0" cellpadding="0"><tr>'.PHP_EOL;
      $counter = 0;  
    }

                
}
//einde while lus
echo '</td></tr></table>';
?>
 
PHP hulp

PHP hulp

19/11/2024 02:33:48
 
Frank -

Frank -

22/11/2006 14:27:00
Quote Anchor link
Is de query wel gelukt? Oftwel, bevat $data wel de juiste gegevens?
 
Joren de Wit

Joren de Wit

22/11/2006 14:27:00
Quote Anchor link
Hoe komt je aan het object $db? Ik zie nergens dat je een nieuwe instantie van een bepaalde klasse aanmaakt?

De melding zegt dat $data geen geldig mysql resultaat is, dus of er is wat fout met je query of je gebruikt de methodes uit je klasse niet goed (er vanuit gaande dat $db wel een instantie van je klasse is).
 
- SanThe -

- SanThe -

22/11/2006 14:28:00
Quote Anchor link
Wat heeft dit voor zin?
$zoekterm=mysql_real_escape_string($_POST['zoekterm']);

Je gaat namelijk gewoon verder met $_POST['zoekterm'] in de query en in de if().
 
Jason de Ridder

Jason de Ridder

22/11/2006 14:34:00
 

22/11/2006 14:37:00
Quote Anchor link
Ik ben in een boek bezig en met classes werken is voor mij nieuw. Het leek me wel makkelijk maar ik begin alweer te twijfelen of het wel iets voor me is.

Eigenlijk werkt de pagina al niet meer goed.

Dit is de classe pagina:

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
class mijn_toegang{
//Variabelen voor toegangsgegevens
var $user=""; //Gebruikersnaam voor MySql
var $password=""; //Wachtwoord
var $host="localhost"; //Naam (ip-adres) van computer met MySql
var $dbname=""; //Naam van de database
//Overige variabelen

var $db_verbinding=false; //Resultaat van verbinding
var $sql_result=false; //Resultaat van uitgevoerde Sql-opdracht

//Constructor definiëren

function mijn_toegang(){
    //Functie verbinden wordt uitgevoerd bij aanroepen klasse
            $this->verbinden();
}

//Als verbinding niet bestaat,
//verbinding opzetten en database als standaard definiëren

function verbinden(){
if ($this->db_verbinding==false){
    $this->db_verbinding = @mysql_connect($this->host, $this->user, $this->password);
    if (empty($this->db_verbinding)){
        $this->fout("Bij opzetten verbinding");
    }

    $keuze = @mysql_select_db($this->dbname, $this->db_verbinding);
    if(empty ($keuze)){
        $this->fout("Bij selecteren van DB");
    }

    return $this->db_verbinding;
}
}


//Geef foutmelding weer en sluit script af
function fout($foutpunt){
    echo $foutpunt . " is een fout opgetreden!<br />";
    echo mysql_error() . "<br />";    //beschrijving van fout
    echo mysql_errno();                //foutnummer
    echo "</body></html>";            //html-tags sluiten
    exit;
}
    

//Sql-opdracht uitvoeren
function sql_opdracht ($sql){
$this->sql_result = @mysql_query($sql, $this->db_verbinding);
if (empty($this->sql_result)){
        $this->fout("Bij verzenden query");
}

return $this->sql_result;
}


//Als er al eerder een Sql-opdracht is uitgevoerd,
//wordt hier de array met de records weergegeven

function sql_gegevens(){
if(!empty($this->sql_result)){
            $sql_array=@mysql_fetch_array($this->sql_result);
            return $sql_array;
}
else{
            $this->fout ("Bij het weergeven van de records");
}
}
}

//Aan het einde van het script wordt de klasse direct aangeroepen
$db=new mijn_toegang();                                                    
?>


@SanThe Geen idee maar iemand heeft me eens geholpen met dit script en heeft dit erin gezet.
Gewijzigd op 01/01/1970 01:00:00 door
 
Frank -

Frank -

22/11/2006 14:40:00
Quote Anchor link
Quote:
Het leek me wel makkelijk maar ik begin alweer te twijfelen of het wel iets voor me is.
Wanneer je eenmaal onder de knie hebt en de logica snapt, dan werkt het een stuk eenvoudiger. Ook het onderhoud e.d. is een stuk eenvoudiger. Ga dus niet twijfelen aan jezelf, het is gewoon een lastig onderwerp. Nu even doorbijten en straks heb je daar een hoop plezier van.

Succes!
 

22/11/2006 14:45:00
Quote Anchor link
@Frank :) bedankt :)
 
Joren de Wit

Joren de Wit

22/11/2006 14:46:00
Quote Anchor link
Ok je hebt een database klasse. Maar om die klasse te gebruiken heb je in je script er wel een instantie van nodig. Ik zie in je script wel dat je $db gebruikt als instantie van je klasse, maar waar heb je $db aangemaakt dan?

Ik mis dus iets als:
$db = new mijn_toegang();

Ik ook even je gebruikersnaam en wachtwoord uit bovenstaand voorbeeld halen, dat is niet zo handig om publiekelijk online te zetten ;)
 

22/11/2006 14:51:00
Quote Anchor link
@Blanche

Dat zinnetje staat toch onderaan de pagina mijn_toegang.inc.php ?
Of moet die in de index.php staan.
 
- SanThe -

- SanThe -

22/11/2006 14:51:00
Quote Anchor link
@Elsy: Edit je password en dergelijke even weg. *******
 
Majid Ahddin

Majid Ahddin

22/11/2006 15:13:00
 
Joren de Wit

Joren de Wit

22/11/2006 15:17:00
Quote Anchor link
Het is netter om in je index.php gewoon je klasse te includen en dan gewoon in index.php een nieuwe instantie aanmaken. Het mooie van OOP is dat je meerdere instanties van 1 klasse aan kunt maken.

In het geval van een database connectie: bijvoorbeeld een connectie met 2 verschillende databases.

Een voorbeeld uit de boeken: als ik de klasse 'Fiets' heb, kan ik natuurlijk meerdere fietsen (instanties van de klasse 'Fiets') aanmaken.
 



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.