Visualizzazione risultati 1 fino 21 di 21

Discussione: la select che dovrebbe apaprire appare dopo l'inserimento di un record

  1. #1
    Guest

    Predefinito la select che dovrebbe apaprire appare dopo l'inserimento di un record

    Salve a tutti,

    Ho un campo chiamato "citta" dove digito la città, poi una select che all'inizio è vuota ma pia piano si deve popolare con il campo sudetto. Ora questa select box (menu a tendine che va in giù per intenderci), può essere sia visibile di primo acchitto anche se il db è vuoto, oppure può essere visibile al primo insermiento dati. Io posto un codice dove ci sono mezzo riuscito, ma non riesco a farla diventare fissa una volta che la select ha il suo dato. Mi potreste dare una mano per favore???? Sono giorni che ci sto lavorando ma senza ottenere un granchè di risultati.

    Questo è il codice:

    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'])) {


    #$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");

    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> ";

    $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


    ?>
    <div align="center">

    <input name='submit' type='submit' value='Salva' />
    </div>
    </form>
    </body>
    </html>
    Spero che qualcuno di voi mi possa aitare grazie.

  2. #2
    Guest

    Predefinito

    in pratica vuoi fare come qui:
    campi Da/A
    http://www.trenitalia.com/trenitalia21.html

  3. #3
    Guest

    Predefinito

    Si una cosa del genere, solo che l'utente che si registra deve inserire la città e la città inserita dall'utente deve essere visualizzatta anche nella select (ovviamente la select si dovrebbe riaggiornare in modo automatico dopo aver inserito il dato e non ricare l'intera pagina). Il tutto registrato nel db. Quando un altro utente digita la città ci dovrebbe essere la verifica indicandogli che la città esiste già ovviamente se è della stessa città di quello precedentemente registro. Ad esempio se quello di prima viene da Roma e quello successivo pure, dovrebbe fare in modo di bloccare l'input e di selezionarlo dalla select. Una parte ci sareoi riuscito ma ilr esto non me lo fa. :( Mi puoi dare una mano per favore ????

  4. #4
    Guest

    Predefinito

    Mi puoi dare una mano per favore ????
    Volentieri
    ma vorrei capire una cosa, c'è una motivazione valida che giustifica queste complicazioni ?
    Intendo il nome delle città è un 'qualcosa' che puoi tenere in una tabella città con 20.000 righe :)
    e quando l'utente scrive R gli escono tutte le città con R, l'utente continua a scrivere Ro e l'elenco si riduce a quelle che cominciano con Ro e cosi' via, il tutto non richiede il caricamento della pagina (ajax)

    proprio per questo motivo il 99% dei siti non si preoccupa nemmeno di usare una tabella sul db mysql, ma semplicemente un array in javascript che il browser percorre in locale in nanosecondi :)
    Ultima modifica di FormularioDiDrakensang : 14-10-2014 alle ore 18.23.02

  5. #5
    Guest

    Predefinito

    Purtroppo il listato che ho postato non fa tutto questo.Ed è quello che vorrei fare ed ottenere. in pratica come se fosse una rubrica del cellulare giusto ??? Il sistema è quello. Come si può applicare una cosa del genere a quello che voglio ottenere io ???? a dire il vero non so se raggiungerò le 20mila riga di cui parli. Era per capire più o meno come ottenere una cosa carina e utilie. In pratica far compilare all'utente stesso la tabella città.

  6. #6
    Guest

    Predefinito

    bho se vuoi seguire per forza questa via non ho altre obiezioni, solo dammi un po di tempo per scriverla

    io comunque consiglierei vivamente la soluzione che ho proposto, le tabelle dei nomi delle città si trovano già pronte e aggiornate senza che le compili tu

    anche perchè con la tua soluzione se un utente si registra con città Ruoma, Rroma, ecc avrai popolato la tua tabella di valori non validi,
    se invece lo costringi alla selezione da un insieme fisso questa possibilità di errore non esiste

    cmq la tua idea:

    registrati.php
    Codice:
    <form action = registrati.php method = post>
    ... ...<br>
    Città: <input type = text onkeyup=sc() onkeydown=cc() required id = "citta"><br>
    <div id = "lista"></div>
    <br>
    <input type = submit value = "Invia">
    </form>
    
    <script>
    
    var tT, interval = 500; // aspetto che l'utente finisca di scrivere
    function sc(){ cc(); tT= setTimeout(ctrl, interval); }
    function cc(){  clearTimeout(tT); cerca();  }
    function ctrl(){
    	val = document.getElementById('citta').value;
    	var http = new XMLHttpRequest();
    	http.open("GET","citta.php?nuova=" + val);
    	http.send();
    	http.onreadystatechange=function()
    	  {
    		  if (http.readyState==4 && http.status==200)
    		      res = http.responseText;
     	  }
    }
    function cerca(){
    	val = document.getElementById('citta').value;
    	var http = new XMLHttpRequest();
    	http.open("GET","citta.php?cerca=" + val);
    	http.send();
    	http.onreadystatechange=function()
    	  {
    		  if (http.readyState==4 && http.status==200)
    		      document.getElementById('lista').innerHTML = http.responseText;
     	  }
    }
    function completa()
    {
    	document.getElementById('citta').value = document.getElementById('listaCitta').value;
    }
    </script>
    citta.php
    Codice:
    <?php
    
    // ... tutta la parte di connessione al db poi
    
    if (isset($_GET['cerca']))
    {
    $cerca = mysql_real_escape_string($_GET['cerca']);
    //$rs = @mysql_query("SELECT * from localita WHERE citta LIKE '$cerca%'");
    // stampo tutte le città trovate con queste iniziali
    print "<select id = 'listaCitta' name = 'listaCitta' onClick=completa()>";
    //while ()
    // print <option value = ... ... $rs['citta'];
    print "<option value = 'rimini'>rimini</option>";
    print "<option value = 'roma'>roma</option>";
    print "</select>";
    die();
    }
    
    if (!isset($_GET['nuova'])) die();
    $citta = mysql_real_escape_string($_GET['nuova']);
    
    @mysql_query("REPLACE INTO localita(citta) VALUES ('$citta')");
    echo $citta;
    
    ?>
    ...> da completare con l'effettiva stampa dei risultati della ricerca (al posto dei risultati fittizi 'rimini' e 'roma'
    il campo 'citta' è assunto chiave di 'localita'
    Ultima modifica di FormularioDiDrakensang : 14-10-2014 alle ore 19.27.54

  7. #7
    Guest

    Predefinito

    E le tabelle giá pronte come s'inseriscono nella select ??? Potrei prendere anche in considerazione la tua idea, visto che non avevo previsto gli orrori di ortografia nel digitare la cittá

  8. #8
    Guest

    Predefinito

    con la parte cerca del codice esposto sopra

    e come evidenziato

    //while ()
    // print <option value = ... ... $rs['citta'];
    print "<option value = 'rimini'>rimini</option>";
    print "<option value = 'roma'>roma</option>";
    print "</select>";

    diventa
    while ( $row = mysql_fetch_array($rs) )
    {
    $cit = $row['citta'];
    print "<option value = '$cit'>$cit</option>";
    }

    ...

    qui un esempio di db già pronto
    http://lab.comuni-italiani.it/download/comuni.html
    che puo' essere implementato anche direttamente in javascript, evitando le query sul db
    (+ veloce)
    Ultima modifica di FormularioDiDrakensang : 14-10-2014 alle ore 19.53.05

  9. #9
    Guest

    Predefinito

    Grazie. Domani provo e ti faccio sapere com'è andata. Sempre se sto meglio. Questa settimana é stato un disastro. So stato più male che bene. Grazie comunque della collaborazione.

  10. #10
    Guest

    Predefinito

    prego, riposati :)

  11. #11
    Guest

    Predefinito

    Ciao FormularioDiDrakensang,

    perdonami se ti disturbo, ma stavo provando il tuo esempio unendo l'ultima parte mia che riguardava la memorizzazione nel db. Poi sarei passato al tuo suggerimento ma volevo capire come funzionava il primo. Per. c'è qualcosa di sbagliato. Non riesco a trovare l'inghippo. Mi ci puoi dare un'occhiata epr capire dove sbaglio per favore ??? Grazie.

    P.S.: Ho unito tutto in un unico file chiamao provainscitta.php Vorrei avere meno file da gestire e gestirli tutti iin un unico file come questo. Infatti il submit l'ho messo all'inizio di tutto.



    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>
    <script>
    Città: <input type = text onkeyup=sc() onkeydown=cc() required id = "citta"><br>
    <div id = "lista"></div>
    <br>
    <input type = submit value = "Invia">
    </form>

    <script>

    var tT, interval = 500; // aspetto che l'utente finisca di scrivere
    function sc(){ cc(); tT= setTimeout(ctrl, interval); }
    function cc(){ clearTimeout(tT); cerca(); }
    function ctrl(){
    val = document.getElementById('citta').value;
    var http = new XMLHttpRequest();
    http.open("GET","citta.php?nuova=" + val);
    http.send();
    http.onreadystatechange=function()
    {
    if (http.readyState==4 && http.status==200)
    res = http.responseText;
    }
    }
    function cerca(){
    val = document.getElementById('citta').value;
    var http = new XMLHttpRequest();
    http.open("GET","citta.php?cerca=" + val);
    http.send();
    http.onreadystatechange=function()
    {
    if (http.readyState==4 && http.status==200)
    document.getElementById('lista').innerHTML = http.responseText;
    }
    }
    function completa()
    {
    document.getElementById('citta').value = document.getElementById('listaCitta').value;
    }
    </script>

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

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



    <?php

    require_once("connetti.php);

    if(isset(
    $_POST['submit'])) {
    if (isset(
    $_GET['cerca'])){
    {
    $cerca = mysql_real_escape_string($_GET['cerca']);
    //
    $rs = @mysql_query("SELECT * from localita WHERE citta LIKE '$cerca%'");
    // stampo tutte le città trovate con queste iniziali
    print "
    <select id = 'listaCitta' name = 'listaCitta' onClick=completa()>";
    while(
    $riga=mysql_fetch_array($q)){
    echo "
    <option value=\"".$riga['citta']."\">".$riga['citta']."</option>";
    }
    //fine while
    print <option value = $rs['citta'];
    //print "<option value = 'rimini'>rimini</option>";
    //print "<option value = 'roma'>roma</option>";
    //print "</select>";
    die();
    }






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


    $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


    ?>
    <div align="center">

    <input name='submit' type='submit' value='Salva' />
    </div>
    </form>
    </body>
    </html>

  12. #12
    Guest

    Predefinito

    ci sono diversi errori
    i piu' gravi: " mancante in require
    campo lista commentato
    $q con la query non definito nel punto in cui serve - ergo while non può restituire niente
    la query insert devi chiamarla solo ad una richiesta nuova=qc
    di form ne basta uno

    note: il codice funziona cosi'
    all'utente che intende registrarsi mostri il campo città
    mentre scrive il codice in js fa due operazioni:
    - cerca le città che inziano con quanto scritto ad ogni lettera digitata
    - chiede al db di aggiungere una nuova città, è assunto che la nuova città sia quello che c'è scritto in città quando l'utente ha finito di scrivere

    meno gravi:
    jquery non ti serve le funzioni che si potevano delegare a jq le ho dichiarate esplicitamente, inoltre qnd si usa una libreria in generale conviene tenerne una copia sul proprio spazio, link a sito esterno libera al piu' dalla 'seccatura' di aggiornarla
    Ultima modifica di FormularioDiDrakensang : 15-10-2014 alle ore 13.43.51

  13. #13
    Guest

    Predefinito

    Ciao FormularioDiDrakensang,

    Ho preso in toto tutti e due i listati li ho uniti come potrai vedere. Ma l'insert non lo fa. credo che ci sia qualche problemino da rivedere. Grazie.

    Codice PHP:

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <br>
    Città: <input type = text onkeyup=sc() onkeydown=cc() required id = "citta"><br>
    <div id = "lista"></div>
    <br>
    <input type = "submit" value = "Invia">
    </form>

    <script>

    var tT, interval = 500; // aspetto che l'utente finisca di scrivere
    function sc(){ cc(); tT= setTimeout(ctrl, interval); }
    function cc(){ clearTimeout(tT); cerca(); }
    function ctrl(){
    val = document.getElementById('citta').value;
    var http = new XMLHttpRequest();
    http.open("GET","citta.php?nuova=" + val);
    http.send();
    http.onreadystatechange=function()
    {
    if (http.readyState==4 && http.status==200)
    res = http.responseText;
    }
    }
    function cerca(){
    val = document.getElementById('citta').value;
    var http = new XMLHttpRequest();
    http.open("GET","citta.php?cerca=" + val);
    http.send();
    http.onreadystatechange=function()
    {
    if (http.readyState==4 && http.status==200)
    document.getElementById('lista').innerHTML = http.responseText;
    }
    }
    function completa()
    {
    document.getElementById('citta').value = document.getElementById('listaCitta').value;
    }
    </script>

    <?php
    include("connetti.php");

    if(isset(
    $_POST['submit'])) {
    if (isset(
    $_GET['cerca']))
    {
    $cerca = mysql_real_escape_string($_GET['cerca']);
    //$rs = @mysql_query("SELECT * from localita WHERE citta LIKE '$cerca%'");
    // stampo tutte le città trovate con queste iniziali
    print "<select id = 'listaCitta' name = 'listaCitta' onClick=completa()>";
    //while ()
    // print <option value = ... ... $rs['citta'];
    print "<option value = 'rimini'>rimini</option>";
    print
    "<option value = 'roma'>roma</option>";
    print
    "</select>";
    die();
    }

    if (!isset(
    $_GET['nuova'])) die();
    $citta = mysql_real_escape_string($_GET['nuova']);

    @
    mysql_query("REPLACE INTO localita(citta) VALUES ('$citta')");
    echo
    $citta;
    }
    ?>

  14. #14
    Guest

    Predefinito

    insert prevede che il codice che hai incluso si trovi in uno script a parte denominato citta.php
    cui delego le funzioni di ricerca e inserimento :)

    se non fai cosi' chiami una pagina che non esiste - ergo nessun inserimento

    è possibile (non consigliato*) , volendo unire il tutto in un solo file ma il copia & incolla passivo non basta :)

    * è 'meglio' avere 100 script dedicati anche lunghi 4 righe cad, che uno da 400 :)
    Ultima modifica di FormularioDiDrakensang : 15-10-2014 alle ore 13.48.49

  15. #15
    Guest

    Predefinito

    Ciao FormularioDiDrakensang,

    Prenderò in seria considerazione il fatto di scaricare la lista da te indicatami e farla molto semplice senza impazzire. Forse è la cosa migliore. Visto che poi il restso del codice sarà tutto in ajax per lo meno l'iscrizione. Per adesso ti ringrazio ti farò sapere.

  16. #16
    Guest

    Predefinito

    Ciao FormularioDiDrakensang,


    Allora sono riuscito finalmente nel mio intentoe ho seguito la strada più breve e piùsemplice per evitare la salita ripida. Ossia ho scaricato il file delle città & provincie l'ho scompattato, schiaffato tutto nel file php e così si può selezionare sia la città che la provincia dalla lista. Ora rimane solo un piccolo problema. Cerco di spiegarmi al meglio. Quando vado sulla lista "città" e clicco la freccetta in basso, la lista che comapare rimane fissa fino a che tu non selezioni quello che vuoi. Cosa che non accade nella lista provincie. Ossia ci clicchi compare la lista per una frazione di secondi e poi scompare. Ovviamente ho fatto il copia e incolla della prima lista e poi c'ho schiaffato le provincie. Ma non va. Il focus tanto per intenderci rimane sulla prima select. Dove sbaglio ???' Questo è il listato completo. ovviamente metto 4 città e 4 provincie perchè sennò diventa lungo.

    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='<?php echo $_SERVER['REQUEST_URI'];?>' method=post>

    <label for="citta">Seleziona Città: <select id="citta" name="citta">


    <!--Inizio elenco città e provincia -->
    <option value=””>-- Seleziona Citta --</option>
    <option value=””></option>

    <option value=””>Agrigento</option>
    <option value=””>Alessandria</option>
    <option value=””>Ancona</option>
    <option value=””>Aosta</option>

    </select>

    <!--Fine elenco città -->


    <p> <p>

    <label for="provincia">Seleziona la Provincia: <select id="provincia" name="provincia">
    </p> </p>



    <!--Inizio elenco provincia -->


    <option value=””>-- Seleziona Provincia --</option>
    <option value=””></option>

    <option value=”">Ag</option>
    <option value=”">Al</option>
    <option value=””>An</option>
    <option value=””>Ao</option>


    </select>

    </form>
    <!--Fine elenco provincie -->
    <?php
    include_once("connetti.php");
    if(isset(
    $_POST['submit'])) {



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



    $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


    ?>
    <div align="center">

    <input name='submit' type='submit' value='Salva' />
    </div>
    </body>
    </html>
    Spero che mi svelerai il segreto del perchè la prima va bene e la seconda no. Boh ???? Attendo tua risposta. Grazie.

  17. #17
    Guest

    Predefinito

    il focus non si puo' spostare se non lo richiedi esplicitamente cade sul primo controllo presente o comunque secondo z-order

    in sostanza devi gestire le due selezioni via javascript e poi chiamare il metodo focus() del campo che ti interessa

    se usi come evento submit, quello che stai facendo nel codice che hai allegato la pagina si ricarica e il focus cade sul primo oggetto

    comunque le option senza value non servono a niente
    Ultima modifica di FormularioDiDrakensang : 16-10-2014 alle ore 14.09.40

  18. #18
    Guest

    Predefinito

    Ciao FormularioDiDrakensang,

    Ora capisco perchè va sempre sulla prima. Come posso ovviare allora ??? Mi puoi dare una mano a sistemarlo per favore ???? E nel value cosa ci dovrei mettere ??? Nell'esempio da cui l'ho preso c'erano le provincie. Ma a me intessava solo l'elenco delle citta e successivamente quello delle provincie.

  19. #19
    Guest

    Predefinito

    value = la stessa cosa visualizzata

    esempio focus

    <select id="citta" name="citta" onClick=passa_prov()>

    <script>
    function passa_prov(){
    document.getElementById('provincia').focus();
    }
    </script>

  20. #20
    Guest

    Predefinito

    Ciao FormularioDiDrakensang,

    Questi 4 righe di codice risolverebbero il problema ???? Ora provo e ti dico se è così sei un mito :P. credo di avero scritto na cavolata.

    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>
    <script>
    function passa_prov(){
    document.getElementById('provincia').focus();
    }
    </script>



    </head>
    <body>

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

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

    <label for="citta">Seleziona Città: <select id="citta" name="citta">




    <!--Inizio elenco città e provincia -->
    <option value=””>-- Seleziona Citta --</option>
    <option value=””></option>

    <option value=”">Agrigento</option>
    <option value=”">Alessandria</option>
    <option value=”">Ancona</option>
    <option value=”">Aosta</option>

    //segue le altre città che non metto
    </select>

    <!--Fine elenco città -->


    <p> <p>

    <label for="provincia">Seleziona la Provincia: <select id="provincia" name="provincia">
    </p> </p>



    <!--Inizio elenco provincia -->


    <option value=””>-- Seleziona Provincia --</option>
    <option value=””></option>

    <option value=”">Ag</option>
    <option value=”">Al</option>
    <option value=””>An</option>
    <option value=””>Ao</option>

    //segue le altre provincie che non metto

    </form>
    <!--Fine elenco provincie -->
    <?php
    require_once("connetti.php");
    if(isset(
    $_POST['submit'])) {



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



    $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


    ?>
    <div align="center">

    <input name='submit' type='submit' value='Salva' />
    </div>
    </body>
    </html>
    Volevo sapere se è sbagliato la posizione di questo codice:

    Codice:
    <!--Fine elenco città -->
    
           
            <p> <p>
                
    <label for="provincia">Seleziona la Provincia: <select id="provincia" name="provincia">
       </p> </p>
       
       
       
            <!--Inizio elenco provincia -->
    Grazie.
    Ultima modifica di magnare : 16-10-2014 alle ore 20.05.04

  21. #21
    Guest

    Predefinito

    Ciao FormularioDiDrakensang,

    Per caso hai visto il mio ultimo messaggio ?????

Regole di scrittura

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