Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139

    Problemi con mysqli_num_rows

    Ciao a tutti,

    ho un database con tre tabelle, e devo estrarre dati dalla tabella dispensa.

    Ho questo codice, che uso per estrarre i dati dalla tabella dispensa:
    codice:
    <html>
       <head>
             <img class="logosito" src="Logo.jpg" alt="Logo sito">
             <?php include "..\www.Test1.it\crea.php";
                   include "..\www.Test1.it\crea-tabelle.php";
                   //serve per aprire la connessione al database
                   include "..\www.Test1.it\Connetti.php";
                   include_once('C:\xampp\htdocs\www.Test1.it\FStile.css');
                   //include ('navbar.php');
             ?>
          <ul>
             <li><a class="active" href="..\index.php">Home</a></li>   
             <li><a href="..\Dispense.php">Dispense</a></li> 
             <li><a href="..\Esercizi.php">Esercizi</a></li> 
             <li><a href="..\Videolezioni.php">Videolezioni</a></li> 
             <li><a href="..\Tutorial.php">Tutorial</a></li>
         </ul>
       </head>
       <body>
           <div>
             <p class="large">Benvenuto su TuttoIngegneria.it, il portale dedicato agli studenti delle facoltà scientifiche.
             Qui troverai tutto il materiale necessario allo studio, e non solo, sono presenti dispense, eserciziari, videolezioni,
             tutoria e molto altro<br>
             La home contiene qui di seguito i caricamenti più recenti, che siano dispense, tutorial o contributi video
             <br>Buona Navigazione!! Non dimenticare di seguirici anche su youtube.</p>
           </div>
             
             <?php
                $query="SELECT COUNT idD FROM dispensa";
                $r=mysqli_query($conn,$query);
                $query1="SELECT * FROM dispensa BETWEEN ".(mysqli_num_rows($r)-9)." AND ".mysqli_num_rows($r)." ";
                $r1=mysqli_query($conn,$query1);
                
                if(mysqli_num_rows($r1)>0)
                {
                   $c=0;
                   //mandiamo i dati in output
                   echo "<ul>";
                   while($row=mysqli_fetch_assoc($r1))
                   {
                      if($c==0)
                      {
                         echo "<li class=\"result\"><a href=".$row['file']."><img src=".$row['immagine']."></a></li>";
                         $c++;
                      }else if($c==1)
                      {
                         echo "<li class=\"result\"><a href=".$row['file']."><img src=".$row['immagine']."></a></li>";
                         $c++;
                      }else if($c==2)
                      {
                         echo "<li class=\"result\"><a href=".$row['file']."><img src=".$row['immagine']."></a></li><br>";
                         $c=0;
                      }
                   }
                   echo "</ul>";
                }
             ?>
             
       </body>
    </html>
    mentre la pagina Connetti.php ha questo codice:
    codice:
    <?php
    
    
       $dbhost="www.Test1.it";
       $user='root';
       $psw='';
       $db="Test1";
       
       $conn=mysqli_connect($dbhost,$user,$psw,$db);
    ?>
    quando faccio girare il sito, ottengo questo errore:
    codice:
    Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\www.Test1.it\index.php on line 31
    
    Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\www.Test1.it\index.php on line 31
    
    Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\www.Test1.it\index.php on line 34
    però ci sono i dati nel database, quindi non capisco perché mi dia questo errore.

    Grazie per l'aiuto!!

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Il problema sta nelle query di sopra. In effetti mysqli_query torna un boolean (false) quando c'è un errore.
    Di più. La query SELECT COUNT idD FROM dispensa ti torna un solo valore. Quindi la parte nel between ti torna sempre -8 e 1 se funziona.

    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Il problema sta nelle query di sopra. In effetti mysqli_query torna un boolean (false) quando c'è un errore.
    Di più. La query SELECT COUNT idD FROM dispensa ti torna un solo valore. Quindi la parte nel between ti torna sempre -8 e 1 se funziona.

    Ciao badaze,

    allora la prima query,ovvero:
    codice:
    $query="SELECT COUNT 'idD' FROM 'dispensa' ";
    $r=mysqli_query($conn,$query);
    deve restituirmi semplicemente il numero di righe presenti nella tabella, infatti a me interessa semplicemente siano maggiori di zero, ovvero la tabella non sia vuota.
    Per ciò che riguarda la seconda query, cosa dovrei quindi modificare..?? posso utilizzare $r della prima query come valore da usare nel between della seconda query..??

    Infatti questo errore boolean mi ha spiazzato e non capisco da dove viene fuori.

    Ho provato anche a modificare il codice, se pongo le query in questo modo:
    codice:
                $query="SELECT COUNT 'idD' FROM 'dispensa' ";
                $r=mysqli_query($conn,$query);
                $query1="SELECT * FROM dispensa BETWEEN ".($r-9)." AND ".$r." ";
                $r1=mysqli_query($conn,$query1);
    ottengo errore sulla riga 34 della mia index, l'errore è:
    codice:
    Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result,
     boolean given in C:\xampp\htdocs\www.Test1.it\index.php on line 34
    Grazia ancora per l'aiuto!!
    Ultima modifica di EziT90; 11-08-2017 a 16:06

  4. #4
    SELECT COUNT(idD) FROM dispensa

  5. #5
    poi questo è arabo SELECT * FROM dispensa BETWEEN ".($r-9)." AND ".$r." "

    cosa vorresti fare?

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    @EziT90

    Volevo solo dire che : se mysqli_num_rows ti dice che gli hai passato un boolean (con il valore false nel tuo caso) anziché di un mysqli_result questo significa che la query soprastante ha un errore (guarda il messaggio di optime).

    PS : non so come non sono riuscito a vedere l'errore nella query. Devo avere pelle di salame davanti agli occhi !
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    Quote Originariamente inviata da optime Visualizza il messaggio
    poi questo è arabo SELECT * FROM dispensa BETWEEN ".($r-9)." AND ".$r." "

    cosa vorresti fare?
    Quote Originariamente inviata da badaze Visualizza il messaggio
    @EziT90

    Volevo solo dire che : se mysqli_num_rows ti dice che gli hai passato un boolean (con il valore false nel tuo caso) anziché di un mysqli_result questo significa che la query soprastante ha un errore (guarda il messaggio di optime).

    PS : non so come non sono riuscito a vedere l'errore nella query. Devo avere pelle di salame davanti agli occhi !
    Ragazzi, grazie per le risposte

    alla fine ho risolto tutto oggi pomeriggio, non avevo notato proprio l'errore sulla prima query, mentre nella seconda ho risolto ordinando i valori DESC e poi usando LIMIT 9 per visualizzare solo i primi 9.

  8. #8

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.