[PHP] Campi "Value" "select"

  • Creatore Discussione Creatore Discussione Trapano
  • Data di inizio Data di inizio

Trapano

Utente Attivo
27 Set 2012
238
0
16
49
Ciao a tutti. Vi stresso con una nuova domanda.
Ho un form dove in un campo "value" scelgo il nome di un cliente tra i mille.
Poi in un altro campo devo scrivere a mano il suo codice cliente.
Per velocizzare un po la compilazione, ho messo un altro select che come value ha il codice cliente.
Mi spiego meglio, nel campo 1 scelgo "pippo" e viene inserito "pippo" <option value="pippo">pippo</option>, Nel campo 2 scelgo ancora "pippo" ma ho messo "il codice cliente" <option value="123456">pippo</option> .
Ma sarebbe possibile automatizzare il secondo campo dicendogli : se nel primo c'è pippo allora nel secondo metti 12345 ???
 
Con l'ausilio di un database (quindi di tabelle), il tutto si automatizza notevolmente.
Hai considerato l'idea?
 
Ciao AdeKnite, grazie per la risposta.
Questa pagina, serve per inserire nel mio database la registrazione degli incassi.
Pian piano, aggiungo "migliorie" per velocizzare il lavoro....
L'ultima è questa, appunto quella di velocizzare l'inserimento di nome i codici. Ho richiamato con due "include", due file in txt per far prima.... con nominativi, il primo e codici il secondo.... cosi se dovessi aggiungere un cliente, aggiungerei una rica al txt
 
<td align='center'width=''>Ragione sociale<?php include('clienti.txt'); ?></td><br>
<td align='center'width=''>Codice cliente<?php include('codclienti.txt'); ?></td><br>
 
A pensarci bene... io ho gia una tabella con nomi e codici clienti...
Ma come faccio a richiamarli nel mio form?
 
PHP:
// rischioso a meno che il campo nome_cliente non sia unico
$query = " SELECT codice_cliente from tabella WHERE nome_cliente = 'pippo' ";


//meglio recuperare il nome dal codice
$query = " SELECT nome_cliente from tabella WHERE codice_cliente = 12345 ";

Una volta estratto il valore risultante dalla query lo salvi all'interno di una variabile e successivamente lo stampi a video.
 
Ecco... ti dispiacerebbe mostrarmi lo script?
Riguardo al nome cliente, si è univoco.
Anche perché il nome lo ricordo facilmente, ma il codice no! Per cui preferisco cercare il nome e far comparire anche il codice...
Non capisco, la pagina si aggiorna appena inserisco il campo del nome?
 
Ultima modifica:
PHP:
<?php

// ADATTARE LE CREDEDENZIALI DI ACCESSO
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "NOME_DATABASE"; // IMPORTANTE

$str  = 'mysql:host='.$servername.';dbname='.$dbname.';charset=utf8mb4';
$opt = array(
    PDO::ATTR_EMULATE_PREPARES         => FALSE,
    PDO::ATTR_ERRMODE                => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE     => PDO::FETCH_ASSOC
    );

try {
    $conn = new PDO($str,$username,$password,$opt);
} catch(PDOException $ex) {
    echo "ERRORE!";
}
?>
<html>
<head>
    <title></title>
</head>
<body>
    <form>
        <select>
            <option selected disabled>Seleziona un cliente...</option>
            <?php 

            $select = "SELECT cod_cliente,nome_cliente FROM prova";
            $stm = $conn->prepare($select);
            $stm->execute();

            while ($riga = $stm->fetch(PDO::FETCH_ASSOC)) {
                echo "<option value='".$riga['cod_cliente']."'>".ucfirst($riga['nome_cliente'])."</option>\n";
            }

             ?>
        </select>
<input type="submit">
    </form>


</body>
</html>


Questo è ciò che viene stampato a video (avendo i campi della tabella valorizzati come i miei)

HTML:
<html>
    <head>
        <title></title>
    </head>
    <body>
        <form>
            <select>
                <option selected disabled>Seleziona un cliente...</option>  
                <option value='12'>Tizio</option>
                <option value='33'>Caio</option>
                <option value='49'>Sempronio</option>
                <option value='65'>Ermenegildo</option>
            </select>
            <input type="submit">
        </form>
    </body>
</html>
 
Grazie mille. Adesso sono in giro dai clienti a riscuotere... ;-) appena arrivò a casa... provo subito! Poi ti faccio sapere.
 
eccomi. Sto provando. Ma in questo modo, appare un menu a tendina dove posso scegliere il cliente che voglio... ok, ma non compila un secondo campo con il codice cliente.... ma sostituisce al nome del cliente, il suo codice... ma nello stesso campo!
Comunque anche cosi, ho fatto un passo avanti, non creo un nuovo file di testo ma uso il db che gia avevo...
 
La funzione esatta di tutto ciò qual è? Vedere qual è il codice assegnato a ciascun utente?
 
Scusa... allora, per lavoro, incasso pagamenti per fatture.
Devo registrare "chi" paga "cosa".
tipo doc = fattura
numero doc = 1234
Cliente = pippo
numero cliente = 1111
data documento = 160803
ecc...
all'inizio scrivevo tutto a mano... poi pian piano mi sono evoluto... sono tutti dati che riporto dalle fatture, però mi piacerebbe trovare il nome pippo nell'elenco del campo cliente e che in automatico nel campo numero cliente mi ci venisse 1111
 
Ciao trapano, se non ho capito male ciò che a te serve e: inserire in un campo di ricerca il numero fattura e da quel numero fattura ti esce la scheda cliente ad esempio
Pippo
Codice cliente
Stato pagamenti
Stato fattura ecc...
Se sbaglio correggimi.
 
Potresti fare una chiamata Ajax. Dovrai munirti principalmente di un paio di pagine.


form.php
PHP:
<?php
    // ADATTARE LE CREDEDENZIALI DI ACCESSO
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = ""; // IMPORTANTE
   
    $str  = 'mysql:host='.$servername.';dbname='.$dbname.';charset=utf8mb4';
    $opt = array(
        PDO::ATTR_EMULATE_PREPARES         => FALSE,
        PDO::ATTR_ERRMODE                => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE     => PDO::FETCH_ASSOC
        );
   
    try {
        $conn = new PDO($str,$username,$password,$opt);
    } catch(PDOException $ex) {
        echo "ERRORE!";
    }
    ?>
<html>
    <head>
        <title></title>
        <style type="text/css">
            label,input,select {margin: 5px;}
        </style>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    </head>
    <body>
        <form action="" method="post">
            <label for="codice_cliente"><strong>Codice Cliente</strong></label><input readonly id="codice_customer" value=""><br>
            <label for="cliente"><strong>Nome Cliente</strong></label>
            <select name="cliente" id="cliente">
                <option selected disabled>Seleziona un cliente...</option>
                <?php 
                    $select = "SELECT nome_cliente FROM prova";
                    $stm = $conn->prepare($select);
                    $stm->execute();
                   
                    while ($riga = $stm->fetch(PDO::FETCH_ASSOC)) {
                   
                        echo "<option value='".$riga['nome_cliente']."'>".$riga['nome_cliente']."</option>\n";
                    }
                   
                     ?>
            </select>
            <br>
            <input type="submit">
        </form>
        <script type="text/javascript">
            $("#cliente").change(function() {
           
            $.ajax({
                type: "POST",
                url: "chiamata.php",
                data: $('select#cliente').serialize()
            }).done(function(data) {
                $("#codice_customer").val(data);
            });
           
            })
           
        </script>
    </body>
</html>



chiamata.php
PHP:
<?php
   // ADATTARE LE CREDEDENZIALI DI ACCESSO
   $servername = "localhost";
   $username = "root";
   $password = "";
   $dbname = ""; // IMPORTANTE
   
   $str  = 'mysql:host='.$servername.';dbname='.$dbname.';charset=utf8mb4';
   $opt = array(
       PDO::ATTR_EMULATE_PREPARES         => FALSE,
       PDO::ATTR_ERRMODE                => PDO::ERRMODE_EXCEPTION,
       PDO::ATTR_DEFAULT_FETCH_MODE     => PDO::FETCH_ASSOC
       );
   
   try {
       $conn = new PDO($str,$username,$password,$opt);
   } catch(PDOException $ex) {
       echo "ERRORE!";
   }
   
   if(isset($_POST['cliente'])) {
      $cliente=$_POST['cliente'];
   } else {
      $cliente = 0;
   }
   
   $ricerca_users = "SELECT cod_cliente FROM prova where nome_cliente = ? ";
      $stm = $conn->prepare($ricerca_users);
      $stm->execute(array($cliente));
      $riga = $stm->fetch(PDO::FETCH_ASSOC);
     
      echo $riga['cod_cliente'];
   ?>


Nella pagina form.php, attraverso JQuery, viene prelevato il nome del cliente e passato tramite una chiamata Ajax, a chiamata.php.

Qui, viene eseguita una query che recupera il codice del cliente in cui il nome è uguale a quello della variabile passata precedentemente (è importante, quindi, che non vi siano nomi clienti uguali all'interno della tabella a cui vengono assegnati codici diversi).

A questo punto il codice del cliente torna indietro a form.php, popolando automaticamente un campo input.


Ti consiglio di creare una nuova pagina (e.g. config.php) in cui inserisci il codice necessario per la connessione al db, in modo da non doverlo riscrivere ogni volta. Ti basterà poi solamente includerlo nel file che stai utilizzando. (attraverso require_once() ad esempio). Il codice di cui parlo è il seguente:


config.php
PHP:
<?php
 // ADATTARE LE CREDEDENZIALI DI ACCESSO
 $servername = "localhost";
 $username = "root";
 $password = "";
 $dbname = ""; // IMPORTANTE
 
 $str = 'mysql:host='.$servername.';dbname='.$dbname.';charset=utf8mb4';
 $opt = array(
 PDO::ATTR_EMULATE_PREPARES => FALSE,
 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
 );
 
 try {
 $conn = new PDO($str,$username,$password,$opt);
 } catch(PDOException $ex) {
 echo "ERRORE!";
 }
?>
 
Grazie mille. Oggi, appena rientro a pranzo, provo subito.
Poi ti aggiorno sul risultato.
 
Eccomi di nuovo.
Perfertissimo!!!!
Funziona tutto come deve!
Grazie mille!
Direi discussione CHIUSA!
 
Ciao trapano, se non ho capito male ciò che a te serve e: inserire in un campo di ricerca il numero fattura e da quel numero fattura ti esce la scheda cliente ad esempio
Pippo
Codice cliente
Stato pagamenti
Stato fattura ecc...
Se sbaglio correggimi.

Ciao Cris8380... scusa, non avevo proprio letto il tuo post.. mi era sfuggito. Comunque grazie anche a te per aver provato ad aiutarmi.
 
A pensarci bene, e sbirciando il codice da Adeknite proposto, ho notato questa riga:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
Io ho copiato la pagina in un file nel mio server e funziona lo stesso (ho ovviamente cambiato anche il link).... non mi piaceva avere pagine su altri server che potrebbero essere spostate o cancellate...
Domanda: a che serve?
 
È la libreria jQuery hostata sui server di Google. Conviene utilizzarla per questioni di velocità, in quanto molto probabilmente è già presente sulla maggior parte delle macchine che visualizzano il tuo sito.
 
Si, ho visto che è su google. Ma dici che ho fatto male a copiarla sul mio server? Era meglio usare direttamente la loro?
Considera che è un programma mio personale per una semplice lista di pagamenti... non è un sito che deve essere visto dal mondo...
 

Discussioni simili