Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169

    pagina lenta dove è l'errore?

    Ciao a tutti,

    Ho creato una pagina dove questa estrae dal database un elenco di utente in base a delle variabili definite su file.txt però la pagina è lenta.

    Ho trovato le varie idee di applicazioni via internet però non credo che siano corrette o almeno deve esserci un modo più veloce per ottenere lo stesso risultato, ecco il codice incriminato :

    Codice PHP:
    // Estrae le informazioni dell'utente
     
    // $categoriazona viene recuperato da file.txt con applicazione ad inizio di questa pagina        

        $sql="SELECT ID, NomeAttivita, Prezzo, ValutaMetodoLav, Email, TelefonoCellulare, DataScadenza, Categoria, Provincia1, Provincia2, Provincia3, Provincia4
        FROM Utenti
        WHERE Categoria = '$categoria'  
        AND Attivo = '1' AND ConfermaRegistrazione = '1' AND DataScadenza >= '$DataOdierna' 
        AND (Provincia1 = '$provincia' OR Provincia2 = '$provincia' OR Provincia3 = '$provincia' OR Provincia4 = '$provincia') 
        ORDER BY Prezzo ASC, NomeAttivita ASC";
        $result=mysql_query($sql);
        while($rows=mysql_fetch_array($result)){
                        
        //echo $rows['Prezzo']; 
    ?>
                  
                  
                  <div class="post hentry category-adipiscing-aliquet category-aliquam-congue category-fermentum-nisl category-mauris-accumsan category-sed-in-lacus-ut-enim" id="post-6">
                    <div class="title1">
                      
                      
                      <div class="title2"> <font size="+2">[b]<?php echo $rows['NomeAttivita'];?>[/b]</font>

                        

                        


                          <?php include("Txt/ComprendeEscluso.txt"); ?>
                        </p>
                        

                      </div>
                      
                      <div class="titlebutton">
                        
                        <a href="#" onclick="TINY.box.show({iframe:'Send.php?id=<?php echo $rows['ID'];?>',boxid:'frameless',width:650,height:420,fixed:false,maskid:'bluemask',maskopacity:40,closejs:function(){closeJS()}})">
                          <?php // Trasforma il . del decimale in , esempio 5.00 a 5,00 Euro
                   
    $numero$rows['Prezzo']; 
                    echo 
    number_format($numero2',''.'); 
                     
    //in output risulta 3.601,21  
                      
    ?>
                          <?php echo $rows['ValutaMetodoLav'];?></a>
                        
                      </div>
                      <div class="contatti">
                        <ul>
                          
                          [img]images/IMessaggio.png[/img] [url="#"]',boxid:'frameless',width:650,height:420,fixed:false,maskid:'bluemask',maskopacity:40,closejs:function(){closeJS()}})">[b]CLICCA QUI E INVIA UN MESSAGGIO[/b][/url]
                          
                          <?php
                    
    // Funziona che fà visualizzare il numero di telefono oppure no    
                    
                        // Prendo ultimo IDProdotto
                            
    $idrec $rows['ID']; 
                            
    //echo $idrec;
                                            
                         // Estrae il numero di telefono         
                    
                               //Connessione Database
                               
    include("Conn/xxx.php");
                    
                                
    $sqltelefono="SELECT ID, VisualizzaCellulare, TelefonoCellulare
                                FROM Utenti
                                WHERE ID = '
    $idrec' AND VisualizzaCellulare = '1'";
                                
    $resulttelefono=mysql_query($sqltelefono);
                                while(
    $rowstelefono=mysql_fetch_array($resulttelefono)){
                                                
                                
    //echo $rowstelefono['TelefonoCellulare']; 
                                
                       
    ?>
                           [img]images/ITelefono.png[/img] <font size="+1" color="#e47e00">
                            <?php // Funziona che mette uno psazio tra i numeri di cellulare tipo 335 123 45 678
                                  
    $numerocell $rowstelefono['TelefonoCellulare'];
                                   
    $space "";
                                        echo 
    substr ($numerocell03).$space.   
                                             
    substr ($numerocell32).$space.   
                                             
    substr ($numerocell53).$space.   
                                             
    substr ($numerocell83);
                                        
    ?>
                            </font>
                          <?php
                               
    }  // Fine funzione visualizza telefono
                               
    ?>
                        [/list]
                      </div>
                    </div>
                    
                  </div>
                  
                  
                  
                  

                  <?php
              
    }  // Fine funzione che strapola dati utente
              
    ?>

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Ho guardato il codice velocemente, ma penso che il problema sia legato al fatto che esegui una query iniziale e poi per ogni elemento ne esegui un altra.
    Questo significa che se la prima query ti trova 1000 soggetti vengono eseguite 1000 query, e questo è un problema.
    Ti converrebbe caricare prima i numeri di telefono se non sono molti e poi ciclarli per trovare quelli con l'ID da visualizzare, in questo modo eseguiresti solo una volta la query tenendoti i risultati.

  3. #3
    Innanzitutto per la query interna non è necessario reimportare il file della connessione al DB in quanto essa è già aperta (stai scorrendo il resultset della prima query).
    Comunque la query interna è assolutamente inutile, dato che la effettui sulla stessa tabella di quella esterna e com lo stesso ID solo per recuperare il valore della colonna VisualizzaCellulare. A questo punto modifica la query esterna aggiungendo ache tale campo:

    Codice PHP:
    SELECT IDNomeAttivitaPrezzoValutaMetodoLavEmailTelefonoCellulareDataScadenzaCategoriaProvincia1Provincia2Provincia3Provincia4VisualizzaCellulare 
        FROM Utenti
        WHERE Categoria 
    '$categoria'  
        
    AND Attivo '1' AND ConfermaRegistrazione '1' AND DataScadenza >= '$DataOdierna' 
        
    AND (Provincia1 '$provincia' OR Provincia2 '$provincia' OR Provincia3 '$provincia' OR Provincia4 '$provincia'
        
    ORDER BY Prezzo ASCNomeAttivita ASC"; 
    elimina la query interna e sostituiscila con un semplice:

    Codice PHP:
    if (VisualizzaCellulare == '1') {
        ...

    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169
    Grazie satifal, però non mi funziona non mi visualizza il numero di cellulare dove sbaglio?

    Codice PHP:
                      <?php
     
    // Estrae le informazioni dell'utente
         
        // $categoriazona viene recuperato da file.txt con applicazione ad inizio di questa pagina        

            
    $sql="SELECT ID, NomeAttivita, Prezzo, ValutaMetodoLav, Email, TelefonoCellulare, DataScadenza, Categoria, Provincia1, Provincia2, Provincia3, Provincia4, VisualizzaCellulare  
                  FROM Utenti 
                  WHERE Categoria = '
    $categoria'   
                  AND Attivo = '1' AND ConfermaRegistrazione = '1' AND DataScadenza >= '
    $DataOdierna'  
                  AND (Provincia1 = '
    $provincia' OR Provincia2 = '$provincia' OR Provincia3 = '$provincia' OR Provincia4 = '$provincia')  
                  ORDER BY Prezzo ASC, NomeAttivita ASC"
    ;
            
    $result=mysql_query($sql);
            while(
    $rows=mysql_fetch_array($result)){
                

                            
            
    //echo $rows['Prezzo']; 
     
    ?>
                      
                      
                      <div class="post hentry category-adipiscing-aliquet category-aliquam-congue category-fermentum-nisl category-mauris-accumsan category-sed-in-lacus-ut-enim" id="post-6">
                        <div class="title1">
                          
                          
                          <div class="title2"> <font size="+2">[b]<?php echo $rows['NomeAttivita'];?>[/b]</font>

                            

                            


                              <?php include("Txt/ComprendeEscluso.txt"); ?>
                            </p>
                            

                          </div>
                          
                          <div class="titlebutton">
                            
                            <a href="#" onclick="TINY.box.show({iframe:'Send.php?id=<?php echo $rows['ID'];?>',boxid:'frameless',width:650,height:420,fixed:false,maskid:'bluemask',maskopacity:40,closejs:function(){closeJS()}})">
                              <?php // Trasforma il . del decimale in , esempio 5.00 a 5,00 Euro
                       
    $numero$rows['Prezzo']; 
                        echo 
    number_format($numero2',''.'); 
                         
    //in output risulta 3.601,21  
                          
    ?>
                              <?php echo $rows['ValutaMetodoLav'];?></a>
                            
                          </div>
                          <div class="contatti">
                            <ul>
                              
                              [img]images/IMessaggio.png[/img] [url="#"]',boxid:'frameless',width:650,height:420,fixed:false,maskid:'bluemask',maskopacity:40,closejs:function(){closeJS()}})">[b]CLICCA QUI E INVIA UN MESSAGGIO[/b][/url]
                              
                              <?php
                              
                        
    // Funziona che fà visualizzare il numero di telefono oppure no    

                             // Estrae il numero di telefono         
                             
    if (VisualizzaCellulare == '1') { 
                                                    
                                    
                           
    ?>
                               [img]images/ITelefono.png[/img] <font size="+1" color="#e47e00">
                                <?php // Funziona che mette uno psazio tra i numeri di cellulare tipo 335 123 45 678
                                      
    $numerocell $rows['TelefonoCellulare'];
                                       
    $space "";
                                            echo 
    substr ($numerocell03).$space.   
                                                 
    substr ($numerocell32).$space.   
                                                 
    substr ($numerocell53).$space.   
                                                 
    substr ($numerocell83);
                                            
    ?>
                                </font>
                              <?php
                                   
    }  // Fine funzione visualizza telefono
                                   
    ?>[/list]
                                      </div>
                                    </div>
                                    
                                  </div>
                                  
                                  
                                  
                                  

                                  <?php
                              
    }  // Fine funzione che estrapola dati utente
                              
    ?>

  5. #5
    Modifica l'if:

    Codice PHP:
    if ($rows['VisualizzaCellulare'] == '1') {  
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169
    funziona !

    Grazie satifal

    sei stato prezioso come sempre !

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 © 2025 vBulletin Solutions, Inc. All rights reserved.