Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di ertos
    Registrato dal
    Nov 2005
    Messaggi
    448

    Query provincia comuni che non viene eseguita al 100%

    Ciao ragazzi ho un problema con una query che non viene eseguita tutta al 100% forse perchè troppo lunga da svilupparsi.

    Ho un modulo provincie-città, in cui attraverso dei checkbox seleziono le singole città che mi interessano, questo form invia i dati ad una pagina php che inserisce gli id delle città nel database in una stringa separata da virgola (1,2,3,..)

    qui cè il codice della pagina di invio
    Codice PHP:
    $query_co mysql_query("SELECT * FROM comuni ORDER BY id_com ASC");
            while ( 
    $row_co = @mysql_fetch_array($query_co) ) 
                {
                
    $id_comune $row_co['id_com'];                        
                     if(isset(
    $_REQUEST['co_'.$id_comune.''])){               
                    
    $lista_comune .=  "$id_comune,";                  
                    }                
                 } 
    Cioè mi fa un controllo della tabella dei comuni e se la checkbox è selezionata allora mi crea la lista.

    Questo codicie funziona perfettamente, ma se inserisco molte provincie e quindi molte città la stringa non viene eseguita correttamente e molti id dei comuni non vengono scritti.

    C vorrebbe qualcosa che fa eseguire la query col tempo, qualcosa che la fa eseguire tutta anche se perde 1 o 1 minuti.

    Ho prevato a mettere come cella sia TEXT che LONGTEST ma nulla

    Come posso fare grazie

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Cioè, tu scorri un'intera tabella per trovare quei valori che sono selezionati da un utente?
    In teoria, per tre checkbox scorri migliaia di record?
    Se fai realmente questo, ci sono soluzioni molto più efficienti

    Ma spero di aver capito male...

  3. #3
    Utente di HTML.it L'avatar di ertos
    Registrato dal
    Nov 2005
    Messaggi
    448
    Si faccio questo, altre soluzioni non so, accetto consigli su come fare
    Io devo selezionare delle provincie con le rispettive citta (8000 comuni circa) e salvare questi dati nel database

    Se per esempio seleziono le citta della provincia di milano: Abbiategrasso Albairate Arconate ecc ecc... queste le devo salvare nel database, quindi io mi faccio quel controllo che ho scritto sopra

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Si scelgono città o province ? Se si scelgono città, quante si possono scegliere ?
    E poi, cosa ne fai della stringa ? Come fai per inserirla nel db ?
    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

  5. #5
    Utente di HTML.it L'avatar di ertos
    Registrato dal
    Nov 2005
    Messaggi
    448
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Si scelgono città o province ? Se si scelgono città, quante si possono scegliere ?
    E poi, cosa ne fai della stringa ? Come fai per inserirla nel db ?
    Si scelgono città o province ?
    Allora si scelgono le città, ho inserito dei tab regione e provincie ma i checkbox da selezionare sono solo nelle citta

    Se si scelgono città, quante si possono scegliere

    Non cè limite, si può scegliere una sola città ma si possono selezionare anche tutti gli 8000 comuni italiani

    E poi, cosa ne fai della stringa ?

    Una volta che seleziono le checkbox salvo i dati nel db, per esempio (1,2,3,4 ecc) significa che ho selezionato la citta 1 - citta 2 - citta 3- etc etc.
    Con la stringa poi ci lavoro, e la inserisco nel db con un semplice insert
    Codice PHP:
    $query "INSERT INTO nometabella (nome, comuni) VALUES ('$nome,  '$lista_comune')";    
       if (
    mysql_query($query$idconnessione)){
        echo 
    "";
        }
      else
      {
        echo 
    "Errore durante l'inserimento";
        } 

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Qual'è lo scopo di salvare i dati con quel formato? Non sarebbe la lunghezza del campo del db ad essere troppa piccola ?

    Secondo me potresti riempire la stringa senza dover leggere la tabella (ovviamente se lo scopo è di fare un controllo sui dati immessi dall'utente è lecito farlo anzi obbligatorio).

    Non testato.
    Codice PHP:
    $lista_comune "";
    $array $_REQUEST;
    foreach(
    $array as $key => $value) {
     
    $pippo substr($key,0,3);
     
    $caio substr($key,3);
     if (
    $pippo == 'co_') {
      
    $lista_comune .=  "$caio,";                  
     }

    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 L'avatar di ertos
    Registrato dal
    Nov 2005
    Messaggi
    448
    Scusa non capisco come faccio il ciclo degli 8000 comuni italiani?
    $pippo e 4caio cosa sono?

    Ti spiego meglio, ho un form con 8000 checkbox che indicano tutti i comuni italiani (non preoccupatevi per la visualizzazione utilizzo tab divisi per regioni e provincie quindi nessun problema)
    Ora a me serve la query che se selezionati mi salva i dati (ID) delle checkbox nel database cosi che me li posso recuperare in qualsiasi momento.



    Quote Originariamente inviata da badaze Visualizza il messaggio
    Qual'è lo scopo di salvare i dati con quel formato? Non sarebbe la lunghezza del campo del db ad essere troppa piccola ?

    Secondo me potresti riempire la stringa senza dover leggere la tabella (ovviamente se lo scopo è di fare un controllo sui dati immessi dall'utente è lecito farlo anzi obbligatorio).

    Non testato.
    Codice PHP:
    $lista_comune "";
    $array $_REQUEST;
    foreach(
    $array as $key => $value) {
     
    $pippo substr($key,0,3);
     
    $caio substr($key,3);
     if (
    $pippo == 'co_') {
      
    $lista_comune .=  "$caio,";                  
     }


  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    L'array $REQUEST contiene l'id dei comuni selezionati preceduto da co_. La tua query legge tutti gli 8000 id dei comuni per poi confrontarli con gli id presenti in $REQUEST. Quindi se prendi le chiavi di $REQUEST che cominciano da co_ e prendi la parte che non contiene co_ allora hai la tua lista.
    pippo e caio sono nomi di variabili in quanto ho poca immaginazione. Pippo potrebbe essere prefisso e caio idcomune.
    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

  9. #9
    Utente di HTML.it L'avatar di ertos
    Registrato dal
    Nov 2005
    Messaggi
    448
    Scusa non capisco, ma mi sembra la stessa cosa che facevo io, tu fai il controllo degli 8000 comuni dal $REQUEST mentre io lo facevo da una tabella presente nel database, il problema secondo me è che bisogna fare piu di 8000 confronti e quindi alcuni dati nella stringa non vengono salvati.

    Inoltre non capisco come scrivi la variabile $REQUEST

    Io nel for ho questo
    codice HTML:
    <label><input name="co_3518" id="co_3518" value="3518" type="checkbox">Albairate</label>
    <label><input name="co_3519" id="co_3519" value="3519" type="checkbox">&nbsp;Arconate</label>
    <label><input name="co_3520" id="co_3520" value="3520" type="checkbox">&nbsp;Arese</label>
    <label><input name="co_3521" id="co_3521" value="3521" type="checkbox">&nbsp;Arluno</label>
    Come rcupero i dati? Il metodo che ho fatto inizialmente io come è?


    Quote Originariamente inviata da badaze Visualizza il messaggio
    L'array $REQUEST contiene l'id dei comuni selezionati preceduto da co_. La tua query legge tutti gli 8000 id dei comuni per poi confrontarli con gli id presenti in $REQUEST. Quindi se prendi le chiavi di $REQUEST che cominciano da co_ e prendi la parte che non contiene co_ allora hai la tua lista.
    pippo e caio sono nomi di variabili in quanto ho poca immaginazione. Pippo potrebbe essere prefisso e caio idcomune.

  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    C'è una grande differenza. Quello che faccio io non va a leggere dati nel db. Comunque puo' essere opportuno farlo. Il mio intento era solo di farti vedere che era possibile fare a meno del caricamento di 8000 record in memoria e quindi velocizzare il tutto.
    Tornando in tema. $REQUEST è l'array che usi tu. Avrei anche potuto scrivere foreach($REQUEST as $key => $value).

    Hai controllato la lunghezza del campo nel db ? Dovrebbe essere lungo circa 40 KBytes.
    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

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.