Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    consiglio su gestione select della form con mysql e php

    Salve

    Mi sono decisa a postare tutto il codice per avere un aiuto più concreto altrimenti cambio e ricambio senza arrivare ad una soluzione....ho semplificato il codice il più possibile per facilitare la lettura.
    Inizio col dire che ho 3 pagine, 1 pagina index.php con una form e una funzione javas per convalidare i dati, una pagina database.php dove costruisco le query tramite il codice cliente inserito dall'utente, e ho una pagina funzioni_mysql.php(classe con funzioni pubbliche) dove mi connetto al database, avvio le query ecc ecc
    Vorrei sapere se la struttura è buona....visto che il mio problema è come riceve i dati dei destinatari
    nella pagina index.php dalla query che sta nella pagina database.php.
    grazie 10000000 in anticipo....
    //index.php

    codice:
    //CONVALIDO I DATI SE TUTTO LIINVIO A DATABASE.PHP
    function Modulo() 
    {
        // Variabili associate ai campi del modulo
        var codice = document.modulo.txtcodice.value;
        var password = document.modulo.txtpassword.value;
    
       if ((codice == "") || (codice == "undefined"))
        {
            alert("Il campo codice è obbligatorio.");
            document.modulo.txtcodice.focus();
            return false;
        }    
       else 
        {
            document.modulo.action = "database.php";
           document.modulo.submit();
        }
     }
      //-->
    </script>
    <head>
    </head>
    <body>
        <form method="post" name="modulo">
        <fieldset class="raccoglitore"> <br> <legend>LOGIN:</legend>
         <label for="codice" class="lblcodice">Codice</label><input type="text" name="txtcodice" class="txtcod"/>
         <label for="password" class="lblpassw">Password</label><input type= "text" name= "txtpassword" class="txtpassw"/>
         <input type= "button" value="Invia" onClick="Modulo()" class="mnubutton"> </fieldset>
         <br><fieldset><legend>SELEZIONA DESTINATARIO:</legend>
         <select name="listadest" class="combolista"></select>
         <input type= "button" value="InviaOK" onClick="diario.php" ></fieldset>
        </form>
    </body>
    </html>
    database.php
    codice:
    <?php
      include "funzioni_mysql.php";
      $data = new MysqlClass();
      $db_clienti = "clienti";
      $db_dest = "destinatari";
      $password = $_REQUEST['txtpassword'];
      $codice = $_REQUEST['txtcodice'];
    // chiamata alla funzione di connessione
      $data->connetti();
     $sqlLogCli="select CODICE, PASSWORD1, E_MAIL, RAGIONE_SOCIALE, INDIRIZZO, CITTA, PR from " .$db_clienti. " where CODICE =". $codice ." AND PASSWORD1= '".$password."'"; 
     $risultlogincli= $data->query($sqlLogCli);
     $NUMRECCLI=mysql_num_rows($risultlogincli);
     if($NUMRECCLI==0)
        {   //SE NON TROVO NEANCHE  IL CLIENTE TORNO ALLA INDEX.PHP
            $messlogin = "Utente non trovato!";
            header("Location: index.php?smslogin=".$messlogin);
        }
        else
        {    // HO TROVATO IL CLIENTE QUINDI VERIFICO LA PRESENZA DEL DESTINATARIO
    
             $sqlLogDest="select CODCLI, CODDES, RAGIONE_SOCIALE,INDIRIZZO,CAP,CITTA,PR   from " .  $db_dest. " where CODCLI =". $codice;      
             //filtro la tabella destinatari
             $risultlogindest= $data->query($sqlLogDest);
              $NUMRECDEST = mysql_num_rows($risultlogindest);
    
             //se trovo i destinatari li inserisco nell'array che poi vorrei passare a index.php (ma come?)
              if($NUMRECDEST>0)
    
                {$i=0;
                while($row=mysql_fetch_assoc($risultlogindest))
                 {//questo array contiene i destinatari
                  $datidest[$i]= $row['RAGIONE_SOCIALE']; //E' PROPRIO IN QUESTO ARRAY CHE VORRE
    
                $i++;                                                    //SALVARE I DESTINATARI PER POPOLARE LA
                 }                                                        //SELECT DELLA INDEX
    
                 header("Location: index.php?smslogin="."ARRAY O STRINGA DA PASSARE PER POPOLARE LA SELECT");
    
                }
                else
                {
                 //se non c'è il destinatario prendi i dati
                 //del cliente ed entro nella pagina.
                 $rescli=$data->estrai($risultlogincli);  
                 $RAGSOCCLI=$rescli->RAGIONE_SOCIALE
                 $CITTA=$rescli->CITTA;
                 $PR=$rescli->PR;
                 $daticlienti=$RAGSOCCLI." ".$CITTA." ".$PR;
                 header("Location: diario.php?smslogin=".$daticlienti);
                }          
        }
    ?>
    funzioni_mysql.php
    codice:
    <?php
    class MysqlClass
    {
      // parametri per la connessione al database
      private $nomehost = "localhost";     
      private $nomeuser = "whilly";          
      private $password = "ravtadarbe58"; 
      private $db_database = "my_whilly";
           
      // controllo sulle connessioni attive
      private $attiva = false;
    public function connetti()
     {
       if(!$this->attiva)
        {
         if($connessione = mysql_connect($this->nomehost,$this->nomeuser,$this->password) or die (mysql_error()))
          {
           // selezione del database
           $selezione = mysql_select_db($this->db_database,$connessione) or die (mysql_error());
          }
        }
         else
         {
           return true;
         }
    }
     public function estrai($risultato)
     {
        if(isset($this->attiva))
        {
         $r = mysql_fetch_object($risultato);
          return $r;
     
        }else
        {
         return false; 
         }
     }
     
       public function query($sql)
       {
       if(isset($this->attiva))
          {
           $sql1 = mysql_query($sql) or die (mysql_error());
           return $sql1;
          }
        else
          {
          return false; 
          }
       }
        // funzione per la chiusura della connessione
        public function disconnetti()
        {
            if($this->attiva)
            {
                    if(mysql_close())
                    {
             $this->attiva = false; 
                 return true; 
                    }
                    else
                    {
                      return false; 
                    }
            }
        }  
    }       
    ?>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Inizia con lo spiegare come funziona il form:
    codice:
     <form method="post" name="modulo">
        <fieldset class="raccoglitore"> <br> <legend>LOGIN:</legend>
         <label for="codice" class="lblcodice">Codice</label><input type="text" name="txtcodice" class="txtcod"/>
         <label for="password" class="lblpassw">Password</label><input type= "text" name= "txtpassword" class="txtpassw"/>
         <input type= "button" value="Invia" onClick="Modulo()" class="mnubutton"> </fieldset>
         <br><fieldset><legend>SELEZIONA DESTINATARIO:</legend>
         <select name="listadest" class="combolista"></select>
         <input type= "button" value="InviaOK" onClick="diario.php" ></fieldset>
    </form>
    Perché ci sono 2 pulsanti? Che funzione hanno?
    Tra l'altro, il secondo mi pare non invii nulla, richiama semplicemente lo script diario.php, ma non gli passa alcun dato visto che non effettua un submit.

  3. #3

    consiglio su gestione select della form con mysql e php

    Ciao e grazie

    Il primo pulsante invia a database.php il codice cliente e la password , nel file database.php verifico se questi due parametri sono presenti nella tabella clienti e se sono presenti anche nella tabella destinatari, se ci sono nella tabella destinatari li seleziono e vorrei mandarli a index.php per popolare la select.(il problema è questo, cosa uso per mandare i dati a index.php?) Il secondo pulsante ancora è da implementare ma a seguito del clic andrò in un'altra pagina ...ma ora non è importante il secondo pulsante....


    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Inizia con lo spiegare come funziona il form:
    codice:
     <form method="post" name="modulo">
        <fieldset class="raccoglitore"> <br> <legend>LOGIN:</legend>
         <label for="codice" class="lblcodice">Codice</label><input type="text" name="txtcodice" class="txtcod"/>
         <label for="password" class="lblpassw">Password</label><input type= "text" name= "txtpassword" class="txtpassw"/>
         <input type= "button" value="Invia" onClick="Modulo()" class="mnubutton"> </fieldset>
         <br><fieldset><legend>SELEZIONA DESTINATARIO:</legend>
         <select name="listadest" class="combolista"></select>
         <input type= "button" value="InviaOK" onClick="diario.php" ></fieldset>
    </form>
    Perché ci sono 2 pulsanti? Che funzione hanno?
    Tra l'altro, il secondo mi pare non invii nulla, richiama semplicemente lo script diario.php, ma non gli passa alcun dato visto che non effettua un submit.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Ah, capito.

    La funzione JS Modulo() non deve effettuare un submit, ma una chiamata asincrona AJAX verso database.php.

    database.php deve rispondere alla chiamata con una stringa (echo "....") contenente i dati recuperati dal db nella formattazione che preferisci, basta che poi sai elaborare tale stringa per recuperare i dati, ma di solito si usa una stringa JSON o XML, visto che ci sono funzioni native di Javascript per manipolarle.

    La chiamata AJAX deve recuperare questa stringa, ciclare sui risultati ed aggiornare il menu select.

    In pratica in PHP non devi fare nulla (solo la costruzione della stringa e l'echo alla fine dell'elaborazione di database.php), tutto il lavoro che devi fare è in Javascript.

    In caso ne avessi bisogno, per sapere come funziona AJAX per inviare, ricevere, manipolare i dati ed aggiornare il contenuto di un menu select, rivolgiti alla sezione Javascript.

  5. #5

    consiglio su gestione select della form con mysql e php

    Esatto modulo() chiama database.php....e database.php restituisce il risultato....ma perché mi parli di AJAX, JSON? non si può fare tutto con php?
    Pensavo di elaborare la stringa ricavata dalla query e restituirla tramite un link:
    header("Location: index.php?smslogin=".variabile_per_select);
    Ma cosi ho il limite dei 256 caratteri giusto? E' questo il punto cosa posso usare in alternativa?
    Ad esempio esiste un post senza form? o qualcosa del genere?


    grazie




    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Ah, capito.

    La funzione JS Modulo() non deve effettuare un submit, ma una chiamata asincrona AJAX verso database.php.

    database.php deve rispondere alla chiamata con una stringa (echo "....") contenente i dati recuperati dal db nella formattazione che preferisci, basta che poi sai elaborare tale stringa per recuperare i dati, ma di solito si usa una stringa JSON o XML, visto che ci sono funzioni native di Javascript per manipolarle.

    La chiamata AJAX deve recuperare questa stringa, ciclare sui risultati ed aggiornare il menu select.

    In pratica in PHP non devi fare nulla (solo la costruzione della stringa e l'echo alla fine dell'elaborazione di database.php), tutto il lavoro che devi fare è in Javascript.

    In caso ne avessi bisogno, per sapere come funziona AJAX per inviare, ricevere, manipolare i dati ed aggiornare il contenuto di un menu select, rivolgiti alla sezione Javascript.

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Perché con AJAX non c'è bisogno di ricaricare la pagina, si clicca sul bottone e il menu si aggiorna.
    Inoltre l'url non può essere lunga a piacere, se non vado errato può essere al massimo 255 caratteri, se i dati da passare la rendessero più lunga, i dati in eccesso verrebbero troncati e non arriverebbero.

    Un'altra soluzione, ma che comunque richiede di ricaricare la pagina, potrebbe essere quella in cui database.php mette i risultati in una variabile in sessione e da index.php usi questa variabile per generare le option, per esempio
    Codice PHP:
    <?php
    //index.php

    session_start();
    ...
    ?>
    <form method="post" name="modulo">
    ...

    <select name="listadest" class="combolista">
        <?php
            
    if ( isset ($_SESSION['dati_recuperati']) )
            {
                foreach(
    $_SESSION['dati_recuperati'] as $dato)
                {
                    echo 
    '<option value="'.$dato.'">'.$dato.'</option>';
                }
            }
        
    ?>
    </select>
    Con $_SESSION['dati_recuperati'] ed <option> da gestire a seconda dei dati che recuperi.

  7. #7
    Ciao e grazie
    Il tuo esempio su come ricevere i dati in index.php per la select è chiaro....e grazie ma come li invio da database.php considerando che la query è questa?
    codice:
        $sqlLogDest="select CODCLI, CODDES, RAGIONE_SOCIALE,INDIRIZZO,CAP,CITTA,PR   from " .  $db_dest. " where CODCLI =". $codice;      
                $risultlogindest= $data->query($sqlLogDest);
              $NUMRECDEST = mysql_num_rows($risultlogindest);
    
             //se trovo i destinatari li inserisco nell'array che poi vorrei passare a index.php (ma come?)
              if($NUMRECDEST>0)
    
                {$i=0;
                 while($row=mysql_fetch_assoc($risultlogindest))
                  {//questo array contiene i destinatari
                  $datidest[$i]= $row['RAGIONE_SOCIALE'];
    
                $i++;                                                  
                 }                                                       
                 header("Location: index.php?smslogin="."ARRAY O STRINGA DA PASSARE PER POPOLARE LA SELECT");
    VOLENDO CONSIDERARE AJAX.. secondo quello che hai scritto, dovrei vedere come si fa una chiamata asincrona AJAX verso database.php, e quindi dovrei passare i parametri , riprenderli e popolare la select.....cosi? grazie

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Non devi passare niente, alla fine di database.php basta che metti in una variabile di sessione i dati che ha recuperato dal db, sai come funzionano le variabili di sessione? Così.

    Alla fine devi tornare alla pagina index.php semplicemente con
    header("Location: index.php");

    I dati da usare saranno in sessione.

  9. #9

    consiglio su gestione select della form con mysql e php

    ahh bene...allora forse la cosa potrebbe essermi molto utile.....ottimo grazie...
    voglio cmq vedere anche Ajax..

    ciao ciao



    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Non devi passare niente, alla fine di database.php basta che metti in una variabile di sessione i dati che ha recuperato dal db, sai come funzionano le variabili di sessione? Così.

    Alla fine devi tornare alla pagina index.php semplicemente con
    header("Location: index.php");

    I dati da usare saranno in sessione.

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.