Visualizzazione risultati 1 fino 16 di 16
Like Tree8Likes
  • 1 Post By mzanella
  • 1 Post By mzanella
  • 1 Post By mzanella
  • 1 Post By mzanella
  • 1 Post By mzanella
  • 1 Post By mzanella
  • 1 Post By mzanella
  • 1 Post By mzanella

Discussione: Problema con doppio if ($result->num_rows > 0)

  1. #1
    ums
    ums non è connesso Neofita
    Data registrazione
    11-04-2020
    Messaggi
    8

    Predefinito Problema con doppio if ($result->num_rows > 0)

    Buongiorno,
    ho un problema con il seguente codice:

    Codice:
    <?php include 'menu.html'; ?>
    
    <!DOCTYPE html>
    <html>
    <head>
    	<title> Componente/Prodotto</title>
    </head>
    <body style="margin:0;">
    	<div id="header" align=center>
    		<font color="black">
    		<h2>Componente/Prodotto</h2>
    	</div>
    	<div class="container-fluid">
            <table id="example" class="display nowrap" cellspacing="0" width="100%">
                <thead>
                <tr>
                        <!--th>id</th-->
    		    <th>Prodotto</th>
    		    <th>Descrizione prodotto</th>
    		    <th>Codice</th>
    		    <th>Descrizione</th>
    		    <th>Quantità</th>
                    </tr>
                </thead>
    	    <tfoot>
    		<tr>
    		    <th>Prodotto</th>
    		    <th>Descrizione prodotto</th>
    		    <th>Codice</th>					
    		    <th>Descrizione</th>
    		    <th>Quantità</th>
    		</tr>
    	    </tfoot>
                <tbody>
                    <?php 
    			$sql1 = "SELECT id, dist_base, descrizione
    			 	 FROM elenco_dist_base";
    			$result1 = $conn->query($sql1);
                            if ($result1->num_rows > 0) {
                            // output data of each row1
                            while($row1 = $result1->fetch_assoc()) {
    			    $id = $row1['id'];
                                $dist_base = $row1['dist_base'];
    			    $descr_dist_base = $row1['descrizione'];									
    					
    			    $sql = "SELECT id, pn_utterson, description, quantity
    				    FROM $dist_base ORDER BY pn_utterson";					
    			    $result = $conn->query($sql);
    			    if ($result->num_rows > 0) {
                                echo '<script language="javascript">alert("sono dentro l if")</script>';
    				// output data of each row
    				while($row = $result->fetch_assoc()) {
    				        $id = $row['id'];
    					$pn_utterson = $row['pn_utterson'];
    					$descrizione = $row['description'];
    					$quantita = $row['quantity'];
    					
    					echo "<tr>";
    						//echo "<td>" .$id ."</td>";
    						echo "<td>" .$dist_base ."</td>";
    						echo "<td>" .wordwrap($descr_dist_base, 35, "<br />", true) ."</td>";
    						echo "<td>" .$pn_utterson ."</td>";
    						echo "<td>" .wordwrap($descrizione, 35, "<br />", true) ."</td>";
    						echo "<td>" .$quantita ."</td>";
    					echo "</tr>";
    						
    				}
    			    } echo '<script language="javascript">alert("sono fuori")</script>';
    		       }
    	           }	
    	        ?>
                </tbody>
            </table>
        </div>
    </body>
    </html>
    il codice non entra nel secondo if ($result->num_rows > 0){
    e quindi mostra la tabella priva di dati.
    Il suddetto codice funziona perfettamente in locale con Xampp
    Ultima modifica di ums : 13-04-2020 alle ore 12.40.38

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    La query restituisce 0 righe, oppure fallisce.
    Verifica entrambi i casi.
    ums likes this.

    I suggerimenti che do più spesso:


  3. #3
    ums
    ums non è connesso Neofita
    Data registrazione
    11-04-2020
    Messaggi
    8

    Predefinito

    Perchè in locale (xampp) funziona tutto???

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    La vera domanda è: se intendi pubblicare presso un provider che usa una certa configurazione, perché sviluppi e testi usando un sistema configurato diversamente?
    ums likes this.

    I suggerimenti che do più spesso:


  5. #5
    ums
    ums non è connesso Neofita
    Data registrazione
    11-04-2020
    Messaggi
    8

    Predefinito

    perdonami ma non capisco. Ho sviluppato un gestionale usando xampp ed il mio PC come server. Ora vorrei mettere il tutto su un host. Immagino che ci sia un problema su quel codice che non riesco ad individuare.

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Hai verificato che la query interessata non produca errori?
    Se non ne produce, hai controllato che effettivamente ci siano record da restituire? Se la tabella interrogata non ne contiene, è normale che il corpo dell'if non venga eseguito.

    Usando XAMPP sul tuo PC hai testato il codice in un sistema potenzialmente diverso da quello usato su AlterVista. È come cucire un abito per una persona prendendo le misure su un'altra: se hanno corporatura simile funziona, sennò c'è il rischio che qualcosa sia troppo largo o troppo stretto. Le basi di dati usate in sviluppo e produzione hanno almeno lo stesso contenuto?
    ums likes this.

    I suggerimenti che do più spesso:


  7. #7
    ums
    ums non è connesso Neofita
    Data registrazione
    11-04-2020
    Messaggi
    8

    Predefinito

    Le tabelle ($dist_base) sono popolate.
    Se testo con
    if ($conn->connect_error)
    die("Errore: impossibile stabilire la connessione con il server.");
    Non ho errori.
    Non capisco perchè $result->num_rows risulta 0 o vuota o nulla

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Così stai verificando solo la riuscita della connessione, non della query.

    Modifica questo
    Codice PHP:
    $sql = "SELECT id, pn_utterson, description, quantity
    FROM
    $dist_base ORDER BY pn_utterson";
    $result = $conn->query($sql);
    in (suppongo tu stia usando mysqli):
    Codice PHP:
    $sql = "SELECT id, pn_utterson, description, quantity
    FROM
    $dist_base ORDER BY pn_utterson";
    $result = $conn->query($sql);
    if (
    $result === false) {
    die(
    "Errore: durante la query: " . $sql . ": " . $conn->error);
    }
    Una nota a parte: sicuro che avere un insieme di tabelle "referenziate" dalla colonna dist_base sia la scelta migliore? Non sarebbe più semplice normalizzare usando un'unica tabella con una colonna dist_base?
    ums likes this.

    I suggerimenti che do più spesso:


  9. #9
    ums
    ums non è connesso Neofita
    Data registrazione
    11-04-2020
    Messaggi
    8

    Predefinito

    adesso ho un errore

    Errore: durante la query: SELECT id, pn_utterson, description, quantity FROM Levia_Black_EU_R1 ORDER BY pn_utterson: Table 'my_ums.Levia_Black_EU_R1' doesn't exist

    dopo pranzo cerco di capire

    Grazie per la pazienza e la disponibilità

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Figurati! Sembra che la tabella in questione non esista...
    ums likes this.

  11. #11
    ums
    ums non è connesso Neofita
    Data registrazione
    11-04-2020
    Messaggi
    8

    Predefinito

    la tabella esiste
    nel SELECT FROM cerca solo il nome della tabella Levia_Black_EU_R1 ma poi nell'errore include anche il nome del data base my_ums.Levia_Black_EU_R1

  12. #12
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    la tabella esiste
    Table 'my_ums.Levia_Black_EU_R1' doesn't exist
    Uno di vuoi due sta mentendo .

    Il fatto che il messaggio d'errore riporti il nome del database è ininfluente, lo fa per completezza e chiarezza. Inutile discutere con PHP, se dice che quella tabella non esiste vuol dire che non c'è. Volendo tirare a indovinare posso immaginare che esista una tabella con nome simile ma tutto minuscolo, o maiuscolo, o con spazi o trattini al posto degli underscore, o qualcosa del genere. O forse, ancora più semplice, lo script che avrebbe dovuto creare la tabella non l'ha fatto. Verifica che la tabella esista davvero, case sensitive e con tutti i caratteri speciali corretti.

    E tieni a mente che sarebbe....
    [...] più semplice normalizzare usando un'unica tabella con una colonna dist_base
    evitando a priori questi problemi.
    ums likes this.

    I suggerimenti che do più spesso:


  13. #13
    ums
    ums non è connesso Neofita
    Data registrazione
    11-04-2020
    Messaggi
    8

    Predefinito

    mentre scrivevi io facevo i miei controlli e mi è saltato in mente il fatto delle maiuscole/minuscole
    nel database, i nomi delle tabelle sono tutti in minuscolo (anche se li scrivo in maiuscolo) mentre nella tabella elenco_dist_base il campo dist_base riporta i nomi con lettere maiuscole e minuscole (vedi Levia_Black_EU_R1)

    c'è un modo per risolvere il problema senza dover mettere mano al database?

  14. #14
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Quando costruisci la query cambia il nome della tabella in minuscolo:
    Codice PHP:
    $sql = "SELECT id, pn_utterson, description, quantity
    FROM "
    . strtolower($dist_base) . " ORDER BY pn_utterson";
    ums likes this.

    I suggerimenti che do più spesso:


  15. #15
    ums
    ums non è connesso Neofita
    Data registrazione
    11-04-2020
    Messaggi
    8

    Predefinito

    [RISOLTO]
    Grande, ora funziona tutto

    GRAZIE
    Ultima modifica di ums : 13-04-2020 alle ore 15.46.36 Motivo: RISOLTO

  16. #16
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Figurati .
    ums likes this.

    I suggerimenti che do più spesso:


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •