Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Ridurre query

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433

    Ridurre query

    Ciao a tutti ...
    come posso fare per ottimizzare questo "spezzone di codice"???
    in pratica ho una tabella "sogcli " con una serie di soggetti , creo 2 query per estrarli prima ordinati per nome(nomes) e poi provincia(pros) e una per provincia(pros) e poi per nome(nomes)
    e inserisco i risultati in 2 SELECT distinte

    Note:
    $sonris + $sontab sono i risultati per nome
    $sopris + $soptab sono i risultati per provincia


    Codice PHP:
    $son="SELECT idsc,ricerca FROM sogcli where idc='$idcl' order by nomes,pros";
    $sonris=mysql_query($son,$con);

    $sop="SELECT idsc,ricerca FROM sogcli where idc='$idcl' order by pros,nomes";
    $sopris=mysql_query($sop,$con);

    echo
    "<SELECT size=1 cols=150 NAME='autom1'>"
    while(
    $sontab=mysql_fetch_array($sonris,MYSQL_ASSOC)){
                                                            
    $idsc=$sontab['idsc'];
                                                            
    $sonvis=$sontab['ricerca'];
                                                            echo
    "<OPTION value=".$idsc.">".$sonvis;
                                                         }
    echo
    "</select>";

    echo
    "<SELECT size=1 cols=150 NAME='autom2'>"
    while(
    $soptab=mysql_fetch_array($sopris,MYSQL_ASSOC)){
                                                            
    $idsc=$soptab['idsc'];
                                                            
    $sopvis=$soptab['ricerca'];
                                                            echo
    "<OPTION value=".$idsc.">".$sopvis;
                                                         }
    echo
    "</select>"
    poco più sotto però devo rifare la stessa operazione e quindi devo ripetere il codice uguale identico (a parte il nome delle SELECT ovviamente)

    in pratica il primo pezzo serve per trovare velocemente un soggetto "mittente" e il secondo pezzo (quello dove ripeto le query identiche) per un soggetto "destinatario"

    per cui diventano 4 query che si ripetono a 2 a 2... è possibile ridurle ???


    grazie
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  2. #2
    Utente di HTML.it L'avatar di Leo15
    Registrato dal
    Sep 2005
    Messaggi
    307
    Anzichè stampare direttamente i risultati delle query nella SELECT inseriscili in 2 array. In questo modo potrai riutilizzarli tutte le volte che serve.
    La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
    Isaac Asimov

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    esempio please???

    :master:
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  4. #4
    ma non ti basta rifare i cicli??

    magari sto dicendo una ca...a colossale perchè non ho mai provato
    però puoi testarla e vedere

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    se io ripeto i cicli senza rifare le query le Select sono vuote....

    leggendo in giro ho ""capito"" che il puntatore interno del array del risultato dopo il primo ciclo è alla fine e quindi nel secondo ciclo non visualizza i dati (dato che uscirebbe subito dal While)

    almeno così ho capito eh....

    idee???
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  6. #6
    Utente di HTML.it L'avatar di Leo15
    Registrato dal
    Sep 2005
    Messaggi
    307
    Originariamente inviato da Urbanus
    esempio please???

    :master:
    Ad esempio così:
    Codice PHP:
    $son="SELECT idsc,ricerca FROM sogcli where idc='$idcl' order by nomes,pros";
    $sonris=mysql_query($son,$con);

    $sop="SELECT idsc,ricerca FROM sogcli where idc='$idcl' order by pros,nomes";
    $sopris=mysql_query($sop,$con);

    $son_array = array();
    while(
    $sontab=mysql_fetch_array($sonris,MYSQL_ASSOC)){
                                                            
    $son_array[] = $sontab;
                                                         }

    $sop_array = array();
    while(
    $soptab=mysql_fetch_array($sopris,MYSQL_ASSOC)){
                                                            
    $sop_array[] = $soptab;
                                                         }


    echo
    "<SELECT size=1 cols=150 NAME='autom1'>";
    foreach(
    $son_array as $sontab){
                                                            
    $idsc=$sontab['idsc'];
                                                            
    $sonvis=$sontab['ricerca'];
                                                            echo
    "<OPTION value=".$idsc.">".$sonvis;
                                                         }
    echo
    "</select>";

    echo
    "<SELECT size=1 cols=150 NAME='autom2'>";
    foreach(
    $sop_array as $soptab){
                                                            
    $idsc=$soptab['idsc'];
                                                            
    $sopvis=$soptab['ricerca'];
                                                            echo
    "<OPTION value=".$idsc.">".$sopvis;
                                                         }
    echo
    "</select>"
    Ogni volta che vuoi puoi riutilizzare i 2 array con un foreach per creare le SELECT che ti servono.
    La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
    Isaac Asimov

  7. #7
    sbatti tutto in qualke array come gia ti avevano detto

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    grazie mille!!!

    che pigro che sono!!!
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

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.