Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777

    si può pulire questo codice?

    salve, mi chiedevo se c' è un modo più semplice per scrivere il codice seguente...funziona perfettamente...la mia è semplice curiosità e poi meno scrivi meno byte consumi
    Codice PHP:

    $var
    =$_GET['pagina'];
      

    $query2 "SELECT * FROM pillole WHERE ID < $var ORDER BY ID DESC LIMIT 1 ";
    $query3 "SELECT * FROM pillole WHERE ID > $var ORDER BY ID ASC LIMIT 1" ;



    $risultato2 mysql_query$query2 );
    $risultato3 mysql_query$query3 );

        
                if(
    mysql_num_rows($risultato2)>0){
                        

                    while(
    $scatola_temporanea=mysql_fetch_array($risultato2)){
                        
    $titolo2=$scatola_temporanea['titolo'];
                        
    $id2=$scatola_temporanea['ID'];
                        echo 
    "<div class=\"left\"><a href=\"pillole.php?pagina=" $id2 "\">« $titolo2</a></div>";
                        }
                        }


        
                if(
    mysql_num_rows($risultato3)>0){
                        

                    while(
    $scatola_temporanea=mysql_fetch_array($risultato3)){
                        
    $titolo3=$scatola_temporanea['titolo'];
                        
    $id3=$scatola_temporanea['ID'];
                        echo 
    "<div class=\"right\"><a href=\"pillole.php?pagina=" $id3 "\">$titolo3 »</a></div>";
                        }
                        } 

  2. #2
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    un inizio potrebbe essere questo:

    Codice PHP:

    $query2 
    "SELECT * FROM pillole WHERE ID < ".$_GET['pagina']." ORDER BY ID DESC LIMIT 1 ";
    $query3 "SELECT * FROM pillole WHERE ID > ".$_GET['pagina']." ORDER BY ID ASC LIMIT 1" ;

    $risultato2 mysql_query$query2 );
    $risultato3 mysql_query$query3 );

                 while(
    $scatola_temporanea=mysql_fetch_array($risultato2)){
                        echo 
    "<div class=\"left\"><a href=\"pillole.php?pagina=" $scatola_temporanea['ID']. "\">« ".$scatola_temporanea['titolo']."</a></div>";
                        }
                

                    while(
    $scatola_temporanea=mysql_fetch_array($risultato3)){
                        echo 
    "<div class=\"right\"><a href=\"pillole.php?pagina=" $scatola_temporanea['ID']. "\">".$scatola_temporanea['titolo']." »</a></div>";
                        } 
    poi se oltre al codice vuoi 'risparmiare anche risorse' eviterei di fare due query praticamente identiche, fai un unica query metti tutto dentro un array e poi ti cicli l'arrey in base alle tue esigenze.

    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  3. #3
    Beh ad esempio potresti eliminare gli inutili cicli while visto che da ogni query estrai solo un elemento.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777

    giusto

    hai ragione dato che estraggo un solo elemento posso togliere il while

    cmq grazie per l'aiuto

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    Originariamente inviato da las
    un inizio potrebbe essere questo:

    Codice PHP:

    $query2 
    "SELECT * FROM pillole WHERE ID < ".$_GET['pagina']." ORDER BY ID DESC LIMIT 1 ";
    $query3 "SELECT * FROM pillole WHERE ID > ".$_GET['pagina']." ORDER BY ID ASC LIMIT 1" ;

    $risultato2 mysql_query$query2 );
    $risultato3 mysql_query$query3 );

                 while(
    $scatola_temporanea=mysql_fetch_array($risultato2)){
                        echo 
    "<div class=\"left\"><a href=\"pillole.php?pagina=" $scatola_temporanea['ID']. "\">« ".$scatola_temporanea['titolo']."</a></div>";
                        }
                

                    while(
    $scatola_temporanea=mysql_fetch_array($risultato3)){
                        echo 
    "<div class=\"right\"><a href=\"pillole.php?pagina=" $scatola_temporanea['ID']. "\">".$scatola_temporanea['titolo']." »</a></div>";
                        } 
    poi se oltre al codice vuoi 'risparmiare anche risorse' eviterei di fare due query praticamente identiche, fai un unica query metti tutto dentro un array e poi ti cicli l'arrey in base alle tue esigenze.

    io ho messo $var perchè non vado molto d'accord con ". . " perchè se poi mi dimentico anche un particolare ci metto ore a capire che è li l'errore

  6. #6
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Originariamente inviato da amphioxus
    io ho messo $var perchè non vado molto d'accord con ". . " perchè se poi mi dimentico anche un particolare ci metto ore a capire che è li l'errore
    se vuoi puoi usare gli array anche dentro le stringhe di testo, basta che ti ricordi di non mettere gli indici tra virgolette:

    Codice PHP:
    $query2 "SELECT * FROM pillole WHERE ID < $_GET[pagina] ORDER BY ID DESC LIMIT 1 "
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  7. #7
    Il tutto ovviamente facendo finta che usare direttamente valori ottenuti via GET sia una buona idea.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    Originariamente inviato da k.b
    Il tutto ovviamente facendo finta che usare direttamente valori ottenuti via GET sia una buona idea.
    in che senso scusami?

  9. #9
    I miei consigli:
    - filtrare la variabile get per evitare sql injection non sarebbe male;
    - limitandomi a leggere il codice postato le variabili utilizzate estratte dalla query sono ID e titolo... quindi perchè utilizzare * (che estrae tutto?);
    - ciò che ti ha detto k.b: il ciclo while serve quando si è stratto più di un record per scorrere ognuno di essi, ma essendo che la query prevede un LIMIT 1 (oppure le query fatte su uguaglianza di ID) non ha se senso utilizzare un ciclo che si ha la certezza che avrà un solo ciclo... in ogni caso si tratta di un "cavilllo" cmq...
    Codice PHP:
    $var_get = isset($_GET['pagina']) ? intval($_GET['pagina']) : 0;

    $query2 "SELECT * FROM pillole WHERE ID < ".$var_get." ORDER BY ID DESC LIMIT 1 "
    $query3 "SELECT * FROM pillole WHERE ID > ".$var_get." ORDER BY ID ASC LIMIT 1" 

    $risultato2 mysql_query$query2 ); 
    $risultato3 mysql_query$query3 ); 

    $scatola_temporanea2=mysql_fetch_array($risultato2);
    if(!
    $scatola_temporanea2){
    echo 
    "<div class=\"left\"><a href=\"pillole.php?pagina=" $scatola_temporanea['ID']. "\">« ".$scatola_temporanea['titolo']."</a></div>"
    }

    $scatola_temporanea3=mysql_fetch_array($risultato3);
    if(!
    $scatola_temporanea3){
    echo 
    "<div class=\"right\"><a href=\"pillole.php?pagina=" $scatola_temporanea['ID']. "\">".$scatola_temporanea['titolo']." »</a></div>";

    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  10. #10
    Originariamente inviato da amphioxus
    in che senso scusami?
    Cerca su google "SQL injection" e preparati all'apertura del vaso di Pandora

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.