Visualizzazione risultati 1 fino 21 di 21

Discussione: riempire le select tramite input

  1. #1
    Guest

    Predefinito riempire le select tramite input

    Salve ragazzi,

    Avrei questo piccolo problema. Dovrei riempire delle select tramite input da tastiera. Mi spiego, vorrei creare un db con tuttie le città inserite dagli utenti che si registreranno, ma se la città è già presente nel db dovrebbe apparire solo la select per poterla selezionare. Ora il punto è che non ho idea di come si possa riempire. Qualcuno cortesemente mi potrebbe fare un semplice esempio per capire come dovrei poi procedere ???? So che si può fare, spero in qualche buon anima pia grazie. Non posto codici perchè purtroppo non ho niente da postare in quanto le ricercche che ho effettuato su internet risultano non molto chiare e molto spesso non funzionano. Quindi sarebbe una perdita di tempo per me e per voi. Grazie Chiedo scusa sin da ora.

  2. #2
    Guest

    Predefinito

    Non ho capito bene cosa vuoi fare con la select, puoi spiegare meglio il passaggio?

  3. #3
    Guest

    Predefinito

    Ciao classe1cmcurie,

    Cerco di spiegarmi il meglio possibile. Da un modulo d'iscrizione dove viene richiesto d'inserire la città, la nazionalità e la provincia, vorrei fare in modo che gli utenti da un campo input text quindi dove si scrive, iniziassero a compilare il tutto in un db. Poi se l'utente successivo proviene dalla stessa città,nazione dovrebbe comparire solo la select quella con la freccetta in basso per intenderci. Faccio un esempio con la mia città e un'altra città

    Inserire città: roma

    Inserire nazione: Italia

    Inserire provincia: RM

    Ora se questi non sono presenti nel db dovrebbero essere memorizzate e poi inserite nelle tre liste. Se invece sono presente tutte e tre o solo due dovrebbe comparire il campo input text per far si che l'utente compili quello che manca. E' un po' complicato o mi sono forse espresso male io ma spero di essere stato chiaro quello che vorrei fare. Fammi sapere grazie.

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da magnare Visualizza messaggio
    vorrei fare in modo che gli utenti da un campo input text quindi dove si scrive, iniziassero a compilare il tutto in un db.
    Per "per compilare il tutto in un db" intendi che si registrano?

    Credo di aver capito, o forse no..
    Io che sono un primo utente che viene da Roma mi registro con città=Roma, nazione=Italia e provincia=RM
    Poi arriva un secondo utente che SI DEVE ANCORA REGISTRARE...
    Questo utente dovrà comunque inserire Roma, Italia e RM in una textbox perché io prima della registrazione non so da dove venga...poi una volta detto questo posso andare a verificare se nel mio database è già stato inserito uno dei 3 campi e quindi vado a salvare nel db solo quello che mi serve!

    Ho capito bene?

  5. #5
    Guest

    Predefinito

    Si l'intento è quello. Anche se secondo me con un piccolo aiuto di ajax che digiti le prime tre lettere nella textbox si potrebbe abilitare la select e quindi continuare la registrazione di ciò che manca. Tu mi sapresti aiutare ???? Io ho già realizzato la tabella e quella è na cavolata a farla e a dire il vero una piccola parte. m ami sono subito bloccato. Perchè in pratica nel campo città se digito come un secondo utente un'altra città non me la fa registrare. Cioè mi esegue solo la prima volta. Ti posto quello che ho fatto così lo puoi provare e magari migliorare:

    Tabella località:

    Codice PHP:
    CREATE TABLE localita(

    id int(10) NOT NULL AUTO_INCREMENT,
    nazione VARCHAR( 30 ) NOT NULL ,
    nuovanazione VARCHAR( 30 ) NOT NULL ,
    citta VARCHAR( 30 ) NOT NULL ,
    nuovacitta VARCHAR( 30 ) NOT NULL ,
    provincia VARCHAR( 2 ) NOT NULL ,
    nuovaprovincia VARCHAR( 2 ) NOT NULL ,
    PRIMARY KEY ( id ) ENGINE = MYISAM ;
    )
    provainsdati.php
    Codice PHP:

    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

    </head>
    <body>

    <!--<form action="aggiungicitta.php" method="post">-->

    <form action="" method="post">

    <label for="citta">Città: <input type="text" id="citta" name="citta" > </label>


    <!--<div align="center">

    <input name='submit' type='submit' value='Salva' />
    </div>-->

    <?php
    include_once("connetti.php");
    if(isset(
    $_POST['submit'])) {



    $citta =mysql_real_escape_string(strtolower(trim ($_POST['citta'])));



    #$q=mysql_query("SELECT descrizione FROM tblcategoria ORDER BY descrizione");

    $q=mysql_query("SELECT citta FROM localita ORDER BY citta");
    $vuota=mysql_num_rows($q);
    if(
    $vuota > 0){//fa vedere la select solo se ci sono categorie e mostra solo il'input nuovacategoria, in pratica solo la prima volta
    echo "Città: <select name=\"citta\">";
    echo
    "<option value=\"\">-seleziona-</option>";
    while(
    $riga=mysql_fetch_array($q)){
    echo
    "<option value=\"".$riga['citta']."\">".$riga['citta']."</option>";
    }
    //fine while
    echo "</select> ";
    }
    //fine if vuota

    else{
    $q_i=mysql_query("INSERT INTO localita(citta) VALUES('$citta')");
    echo
    "<h1>nuovo record inserito</h1>";//e torno al form
    }


    }
    //fine if submit
    ?>
    <div align="center">

    <input name='submit' type='submit' value='Salva' />
    </div>
    </form>
    </body>
    </html>
    Come potrai notare è fatta in mysql (ancora quello vecchio) bisognerebbe passarlo in mysqli ma questo è un passo successivo visto che ancora non si conosce del tutto bene.

  6. #6
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    In quale di queste "fasi" ti trovi?

    - Fase 1: Inserire i dati nel database
    - Fase 2: Estrarre i dati dal database
    - Fase 3: Creare una select
    - Fase 4: Inserire i dati nella select
    - Fase 5: Selezionare un dato generico della select
    - Fase 6: Selezionare un dato specifico della select
    - Fase 7: Impedire l'inserimento di dati uguali nel database
    - Fase 8: tutto il resto
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  7. #7
    Guest

    Predefinito

    Ciao Luffio,

    Non mi prendere per semplicistico, ma escludendo la quinta e l'ottava opzione direi mi ritrovo in tutto.

    - Fase 1: Inserire i dati nel database
    - Fase 2: Estrarre i dati dal database
    - Fase 3: Creare una select
    - Fase 4: Inserire i dati nella select
    - Fase 5: Selezionare un dato generico della select --> non so csa intendi per dato generico
    - Fase 6: Selezionare un dato specifico della select
    - Fase 7: Impedire l'inserimento di dati uguali nel database
    - Fase 8: tutto il resto --> non so cosa intendi per tutto il resto

  8. #8
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Nel tuo codice (che ho guardato meglio adesso) devi cambiare mysql_fetch_array con mysql_fetch_assoc, poi non capisco perché tu abbia tolto l'action dal form (se non gli dici a chi inviare i dati, come fa a inviarli??)

    C'è un altro inghippo, tu stai facendo questo: Prendo tutte le città del database in ordine alfabetico; se non ci sono città nel database, allora aggiungo la mia città.

    Dovresti mettere (ad esempio):
    Codice PHP:
    [...]

    $citta =mysql_real_escape_string(strtolower(trim ($_POST['citta'])));
    $ce_gia = false;

    [...]
    while(
    $riga=mysql_fetch_assoc($q)){
    echo
    "<option value=\"".$riga['citta']."\">".$riga['citta']."</option>";
    if(
    $riga['citta'] == $citta)
    ce_gia = false;
    }
    //fine while
    [...]

    if(!
    $ce_gia){
    $q_i=mysql_query("INSERT INTO localita(citta) VALUES('$citta')");
    echo
    "<h1>nuovo record inserito</h1>";//e torno al form
    }
    allora sì che avrebbe un senso!


    Citazione Originalmente inviato da magnare Visualizza messaggio
    Ciao Luffio,

    Non mi prendere per semplicistico, ma escludendo la quinta e l'ottava opzione direi mi ritrovo in tutto.
    [...]- Fase 5: Selezionare un dato generico della select --> non so csa intendi per dato generico
    [...]- Fase 8: tutto il resto --> non so cosa intendi per tutto il resto
    Le fasi che ho elencato sarebbero da considerare in ordine cronologico, del tipo che se prima non riesci con un dato generico figuriamoci con un dato specifico! La fase 8 è tutto il resto che non ho scritto, quindi se non c'è altro pace. Quindi sei alla fase 7? Buon per te.
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  9. #9
    Guest

    Predefinito Predefinito riempire le select tramite input

    Ciao Luffio,

    A dire il vero non sto alla fase 7, sarebbe troppo bello. perchè già mi blocco al primo inserimento della città in quanto non mi fa inserire altre città dopo quella (come utente nuovo ovviamente). Penso che ci siano dei bug su quello che ho postato come codice. Gentilmente mi potresti spiegare la differenze tra:

    mysql_fetch_array e mysql_fetch_assoc ??? Grazie.


    Inoltre, ho lasciato l'action vuoto in quanto vorrei fare tutto in una pagina. Se vedi bene il submit viene gestitodove c'è il require della connessione al db. Eventualmente cosa dovrei mettere a posto del vuoto considerando che vorrei mantenere tutto in una pagina per una gestione a mio avviso migliore ????

    provo a modificare come date suggeritomi e ti faccio sapere. Ma eventualmente si può applicare che appena digiti il nome della città fa la verifica e ti compare la select a fianco ???? Avevo pensato con ajax o qualcosa del genere. o c'è qualcosa di più semplice ???? Grazie della tua cortese attenzione e sopratutto del tuo interessamento.

  10. #10
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Citazione Originalmente inviato da magnare Visualizza messaggio
    Gentilmente mi potresti spiegare la differenze tra: mysql_fetch_array e mysql_fetch_assoc ??? Grazie.
    La prima usa indici numerici anziché indici associativi, quindi anziché $riga['citta'] dovresti mettere $riga[0].

    Citazione Originalmente inviato da magnare Visualizza messaggio
    Inoltre, ho lasciato l'action vuoto in quanto vorrei fare tutto in una pagina. Se vedi bene il submit viene gestitodove c'è il require della connessione al db. Eventualmente cosa dovrei mettere a posto del vuoto considerando che vorrei mantenere tutto in una pagina per una gestione a mio avviso migliore ????
    Anch'io tendo a tenere tutto in una pagina. Solitamente uso
    Codice PHP:
    <form action='<?php echo $_SERVER['REQUEST_URI'];?>' method=post>
    per rimandare il form alla pagina stessa, comprese eventuali variabili GET (se è quello che intendi fare).

    Citazione Originalmente inviato da magnare Visualizza messaggio
    provo a modificare come date suggeritomi e ti faccio sapere. Ma eventualmente si può applicare che appena digiti il nome della città fa la verifica e ti compare la select a fianco ???? Avevo pensato con ajax o qualcosa del genere. o c'è qualcosa di più semplice ???? Grazie della tua cortese attenzione e sopratutto del tuo interessamento.
    A mio parere, se hai già difficoltà con PHP difficilmente riuscirai a usare AJAX una cosa alla volta... Se riesci a completare le 7 fasi della lista (nell'ordine che ho scelto) allora sarai a buon punto (PS: nella fase 8 del "tutto il resto" è sicuramente compresa la registrazione degli utenti, che è l'ultimo dei tuoi problemi!)
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  11. #11
    Guest

    Predefinito

    Ciao,

    Sì difatti é l'ultimo dei miei problemi la registrazione. Spero di risolvere invece la cittá. Ti faró sapere piú tardi. Grazie.

  12. #12
    Guest

    Predefinito

    Ciao Luffio,

    Allora credo di essere arrivatoa ciò che volevo ma mi manca unn ulteriore controllo enlla fase di digitazione di quando scrivi la città e dovrebbe comparire se c'è nella lista. Questo è quanto ho fatto è un po un codice incasinato frse. Probabile anche che non sia scritto a regola d'arte. Ma questo è quello che sono riuscito a sistemare da un vecchio codice. Vorrei se per favore mi dessi un'occhiata grazie ed eventualmente se c'è da sistemare qualcosa. Grazie.

    Codice PHP:

    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

    </head>
    <body>

    <!--<form action="aggiungicitta.php" method="post">-->

    <form action='<?php echo $_SERVER['REQUEST_URI'];?>' method=post>

    <label for="citta">Inserisci Città: <input type="text" id="citta" name="citta" > </label>

    <?php
    include_once("connetti.php");
    if(isset(
    $_POST['submit'])) {



    $citta =mysql_real_escape_string(strtolower(trim ($_POST['citta'])));
    $fbnuovacitta =mysql_real_escape_string(strtolower(trim ($_POST['nuovacitta'])));

    #$q=mysql_query("SELECT descrizione FROM tblcategoria ORDER BY descrizione");

    $q=mysql_query("SELECT citta FROM localita ORDER BY citta");
    $vuota=mysql_num_rows($q);

    if(
    $vuota > 0){//fa vedere la select solo se ci sono categorie e mostra solo il'input nuovacategoria, in pratica solo la prima volta
    echo "Città: <select name=\"citta\">";
    echo
    "<option value=\"\">-seleziona-</option>";
    while(
    $riga=mysql_fetch_assoc($q)){
    echo
    "<option value=\"".$riga['citta']."\">".$riga['citta']."</option>";
    }
    //fine while
    echo "</select> ";

    //verifica inserimento nuova città

    if($citta=="" && $fbnuovacitta !=""){//sto cercasndo di inserire una nuova categoria
    $q_cat=mysql_query("SELECT citta FROM localita WHERE citta'$fbnuovacitta'");
    $esiste=mysql_num_rows($q_cat);
    if(
    $esiste==0){//non esiste quindi l'aggiungo
    $q_i=mysql_query("INSERT INTO localita (citta) VALUES('$fbnuovacitta')");
    $citta=$fbnuovacitta;//questo è il valore che andro ad inesrire nella tabella tblrivista
    }else{//se esiste vuol dire che hai messo nel campo un valore che era nella selecct del form quindi
    $citta=$fbnuovacitta;//questo è il valore che andro ad inesrire nella tabella tblrivista
    }
    }
    }
    //fine if vuota
    $q_i=mysql_query("INSERT INTO localita(citta, nuovacitta) VALUES('$citta','$nuovacitta')");
    echo
    "<h1>nuovo record inserito</h1>";//e torno al form
    } //fine if submit
    ?>
    <div align="center">

    <input name='submit' type='submit' value='Salva' />
    </div>
    </form>
    </body>
    </html>
    Il menu lista si aggiorna al prossimo rinvio vorrei sapere se si può aggiornare subito dopo che hai messo il dato. Aspetto tua risposta. Grazie.

  13. #13
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    L'hai provato questo codice? Perché a prima vista non può funzionare perché ad esempio c'è un errore di sintassi in una query e c'è una variabile non inizializzata che però hai utilizzato. Comunque puoi ricaricare la pagina usando
    Codice PHP:
    header('Location: '.$_SERVER['REQUEST_URI']);exit;
    dove vuoi fare il refresh.
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  14. #14
    Guest

    Predefinito

    Ciao,

    ovviamente l'ho provato prima di inviare solo che mi fa due difetti. Il primo la select dopo che un altro utente si iscrive scompare. Quindi ad esempio se io riscrivo Roma di nuovo e do "OK", lui la risalva e riappare la select. Dov'è l'errore nella query e la variabile non inizializzata ??? E poi quando lo vado a selezionare dalla lista non me la salva nel db

  15. #15
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    I due errori che ho trovato nello script sopra sono:
    Codice PHP:
    if($citta=="" && $fbnuovacitta !=""){//sto cercasndo di inserire una nuova categoria
    $q_cat=mysql_query("SELECT citta FROM localita WHERE citta'$fbnuovacitta'");
    nel SELECT manca l'uguale, dovrebbe essere WHERE citta = '$fbnuovacitta'
    e poi
    Codice PHP:
    }//fine if vuota
    $q_i=mysql_query("INSERT INTO localita(citta, nuovacitta) VALUES('$citta','$nuovacitta')");
    echo
    "<h1>nuovo record inserito</h1>";//e torno al form
    } //fine if submit
    hai messo $nuovacitta, ma ovviamente volevi mettere $fbnuovacitta
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  16. #16
    Guest

    Predefinito riempire le select tramite input

    Ciao Luffio,

    Allora alla prima si avevi ragione mi sono mangiato un "=" forse nel cancellare o sostituire non so. Però mi sono accorto che con $fbnuovacitta non memorizzava niente. Quindi ho dovuto mettere così:


    Codice PHP:

    $nuovacitta
    =mysql_real_escape_string(strtolower(trim ($_POST['nuovacitta'])));
    anzicchè:

    Codice PHP:

    $fbnuovacitta
    =mysql_real_escape_string(strtolower(trim ($_POST['nuovacitta'])));
    Probabile che se mancava il segno "=" era quello per cui non mi mmeorizzava nel db. Dopo verifico. Ovviamente anche l'inserimento dati è stato rimodificato come nuovacitta (visto che non memorizzava) anchicchè fbnuovacitta.

    Una cosa ho provato il tuo refresh ma non mi si aggiorna il menu a discesa. C'è qualche altro metodo per aggiornare la lista dopo aver premuto "salva" ???

  17. #17
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    1) Dove l'hai messo il "mio refresh"?
    2) Il modo più banale possibile è che PRIMA modifichi/inserisci i nuovi dati, e DOPO stampi tutto quanto, del tipo
    Codice PHP:
    <?php
    if(isset($_POST['submit'])) {

    blablabla

    }
    ?>
    <html>
    blablabla
    </html>
    3) Ho capito perché non funziona header: perché stai facendo output (stampando codice HTML) e quindi non va (l'ho capito mentre scrivevo il punto 2 :D)
    Ultima modifica di Luffio : 12-10-2014 alle ore 13.53.30
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  18. #18
    Guest

    Predefinito

    Ciao,

    Non c'è perchè alla fine mi dava problemi e non sapevo dove metterlo. Quindi l'ho tolto. Appunto non c'è.

  19. #19
    Guest

    Predefinito

    Ciao Luffio,

    Una parte come ti dicevo ci sono riuscito. A parte il refresh del menu a lesezione che debbo ancora sistemare. Ma se io volessi invece tenere fisso l'elenco benchè sia vuota la lista come posso fae ???

  20. #20
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Citazione Originalmente inviato da magnare Visualizza messaggio
    Ciao Luffio,

    Ma se io volessi invece tenere fisso l'elenco benchè sia vuota la lista come posso fae ???
    Ti spiace spiegarti meglio? Forse basta togliere l'if($vuota > 0)
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  21. #21
    Guest

    Predefinito

    Avevo pensato pure io la stessa cosa. Ho provato ma non va :( Comunque hai capito benissimo cosa intendevo fare. Oppure anche fare il ocntrario. Ossia una volta che ha appurato ch eil db non è più vuoto la dovrebbe mantenere fissa.

    Questoo è il pezzo di codice che gestisce la visualizzazione della select:

    Codice PHP:

    #$nuovacitta =mysql_real_escape_string(strtolower(trim ($_POST['nuovacitta'])));
    $citta =mysql_real_escape_string(strtolower(trim ($_POST['citta'])));


    $fbnuovacitta =mysql_real_escape_string(strtolower(trim ($_POST['nuovacitta'])));


    $q=mysql_query("SELECT citta FROM localita ORDER BY citta");
    $vuota=mysql_num_rows($q);

    if(
    $vuota > 0){//fa vedere la select solo se ci sono categorie e mostra solo il'input nuovacategoria, in pratica solo la prima volta
    echo "Seleziona Città: <select name=\"citta\">";
    echo
    "<option value=\"\">-seleziona-</option>";


    while(
    $riga=mysql_fetch_assoc($q)){
    echo
    "<option value=\"".$riga['citta']."\">".$riga['citta']."</option>";

    }
    //fine while

    echo "</select> ";



    //verifica inserimento nuova città

    if($citta=="" && $fbnuovacitta !=""){//sto cercasndo di inserire una nuova categoria
    $q_cat=mysql_query("SELECT nuovacitta FROM localita WHERE nuovacitta = '$fbnuovacitta'");
    $esiste=mysql_num_rows($q_cat);
    if(
    $esiste==0){//non esiste quindi l'aggiungo


    }

    }
    //fine if vuota
    $q_i=mysql_query("INSERT INTO localita(citta, nuovacitta) VALUES('$citta','$fbnuovacitta')");
    echo
    "<h1>nuovo record inserito</h1>";//e torno al form
    } //fine if submit
    }
    P.S.: Ho riprovato a mettere il tuo header ma non va mi dice "la pagina non carica correttamente.".
    Ultima modifica di magnare : 13-10-2014 alle ore 14.24.43

Regole di scrittura

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