- Home
- Categorie
- Coding e Sistemistica
- PHP
- Tag select e database
-
Tag select e database
Ciao a tutti, avrei bisogno del vostro aiuto:
in una pagina ho un tag select che popolo con i cognomi ottenuti dalla tabella 'elenco_soci'.
Dalla lista vorrei ottenere, sulla base della scelta effettuata, nella stessa pagina, direttamente sotto il tag select, alcunii campi reletivi al cognome scelto nella select.
Ho provato in vari modi e mi sono accorto che non riesco ad assegnare ad una variabile il cognome scelto nel tag select.
Come posso ovviare?
Grazie
-
Ciao francodance.
Recuperato il valore della select ti basta eseguire una query sulla tabella impostando come WHERE cognome='$cognome'
Ti consiglio pero' di utilizzare gli id, se nella tabella hai più persone con lo stesso cognome come potrai immaginare ti usciranno i dati di tutte queste coincidenze.
-
Grazie per la risposta Samyon, ma come faccio a recuperare il valore della select senza inviare action in un'altra pagina?
ho questo form:
<code>
<form method="POST" action="cerca_socio.php">
Scegliere un cognome dalla lista:
<select id="s_cognome" name="s_cognome">
<?php
include "./inc/config.php";
$db=mysql_connect($db_host,$db_user,$db_pass);
if ($db==false)
die('Errore nella connessione. Verificare i parametri nel file
config.php');
mysql_select_db($db_name, $db)
or die('Errore nella selezione del database. Verificare i parametri
nel file config.php');
// costruzione query
$query="SELECT * FROMelenco_soci
ORDER BYcognome
";
$risultato=mysql_query($query,$db);
while($riga = mysql_fetch_array($risultato)){
$s_cognome=$riga['cognome'];
echo "<option value = $s_cognome > s_cognome";
}
?>
</select>
<input type="submit" value="Invia" />
</form>
</code>
e funziona normalmente nella pagina cerca_socio.php.Se, invece voglio ottenere il risultato direttamente sotto la select, nella stessa pagina, come devo fare?
-
Puoi utilizzare la stessa pagina, ma dovrai ricaricarla se vuoi usare PHP.
Recuperi s_cognome con $cognome=$_POST['s_cognome']; e dopo la select se $cognome è valorizzato fai la query per visualizzarti gli altri dati
-
Ma per fare questo nel form action devo mettere i doppi apici vuoti? Oppure devo mettere il nome della pagina stessa, in questo caso 'visualizza_socio.php'?
Grazie.
-
Il nome della stessa pagina.
-
[php]<br><br>
<div id="visualizza_socio" align="center">
VISUALIZZA SOCIO
<br><br>
<form method="POST" action="visualizza_socio.php">
Scegliere un cognome dalla lista:
<select id="s_cognome" name="s_cognome">
<?php
include "./inc/config.php";
$db=mysql_connect($db_host,$db_user,$db_pass);
if ($db==false)
die('Errore nella connessione. Verificare i parametri nel file
config.php');
mysql_select_db($db_name, $db)
or die('Errore nella selezione del database. Verificare i parametri
nel file config.php');
// costruzione query
$query="SELECT * FROMelenco_soci
ORDER BYcognome
";
$risultato=mysql_query($query,$db);
while($riga = mysql_fetch_array($risultato)){
$s_cognome=$riga['cognome'];
echo "<option value = $s_cognome > $s_cognome";
}
?>
</select>
<input name="submit" type="submit" value="Invio">
</form>
</div><?php
if($_POST["s_cognome"]){
include "./inc/config.php";
$cognome=$_POST['s_cognome'];// connessione al database $db=mysql_connect($db_host,$db_user,$db_pass); if ($db==false) die("Errore nella connessione. Verificare i parametri nel file ./inc/config.php"); // seleziona database mysql_select_db($db_name, $db) or die("Errore nella selezione del database. Verificare i parametri nel file ./inc/config.php"); // costruzione query $query="SELECT * FROM elenco_soci WHERE cognome = '$cognome'"; // risultato query $risultato=mysql_query($query,$db); echo "<div id='cerca_socio'> <table width='60%' align='center'> <tr><th colspan='7' align='left'>Dati Anagrafici</th></tr> <tr> <th align='left'>id</th> <th align='left'>Data Iscrizione</th> <th align='left'>Data Nascita</th> <th align='left'>Cognome</th> <th align='left'>Nome</th> <th align='left'>Tel. Abitazione</th> <th align='left'>Tel. Cellulare</th> </tr> "; // Riga contenente i dati while($riga = mysql_fetch_array($risultato)){ $id=$riga['id_socio']; $data_iscrizione=date('d/m/Y', $riga['data_iscrizione']); $data_nascita=date('d/m/Y', $riga['data_nascita']); echo " <tr> <td>$riga[id_socio]</td> <td>$data_iscrizione</td> <td>$data_nascita</td> <td>$riga[cognome]</td> <td>$riga[nome]</td> <td>$riga[telefono_abitazione]</td> <td>$riga[telefono_cellulare]</td> </tr> </table> "; } // connessione al database $db=mysql_connect($db_host,$db_user,$db_pass); if ($db==false) die("Errore nella connessione. Verificare i parametri nel file ./inc/config.php"); // seleziona database mysql_select_db($db_name, $db) or die("Errore nella selezione del database. Verificare i parametri nel file ./inc/config.php"); // costruzione query $query="SELECT * FROM pagamenti WHERE id_socio = '$id' ORDER BY data DESC"; // risultato query $risultato=mysql_query($query,$db); echo "<br><br> <table width='60%' align='center'> <tr><th colspan='5' align='left'>Pagamenti</th></tr> <tr> <th align='left'>id</th> <th align='left'>Data Versamento</th> <th align='left'>Causale</th> <th align='left'>Descrizione</th> <th align='left'>Importo</th> </tr> "; // Riga contenente i dati $totale=0; while($riga = mysql_fetch_array($risultato)){ $id_socio=$riga['id_socio']; $importo=$riga['importo']; $totale=$totale+$importo; echo " <tr> <td>$riga[id_socio]</td> <td>$riga[data]</td> <td>$riga[causale]</td> <td>$riga[descrizione]</td> <td>€ $riga[importo]</td> </tr> "; } echo" <tr><td> </td></tr> <tr><td> </td></tr> <tr> <td colspan='5'><b>Totale Versato: € ".$totale.",00</b></td> </tr> </table><br></div>"; mysql_close($db);
}
?>[/php]Mi potresti dire cosa sbaglio?
-
Se metto la stesso nome in action mi apre una nuova pagina, se metto i doppi apici torna all'index, ma credo che prima faccia qualcos'altro, solo che è così rapido che non riesco a vedere cosa fa prima di andare all'index.
-
Prova così:
[php]<br><br>
<div id="visualizza_socio" align="center">
VISUALIZZA SOCIO
<br><br>
<form method="POST" action="visualizza_socio.php">
Scegliere un cognome dalla lista:
<select id="s_cognome" name="s_cognome">
<?php
require_once "./inc/config.php";
$db=mysql_connect($db_host,$db_user,$db_pass);
if ($db==false)
die('Errore nella connessione. Verificare i parametri nel file
config.php');
mysql_select_db($db_name, $db)
or die('Errore nella selezione del database. Verificare i parametri
nel file config.php');
// costruzione query
$query="SELECT * FROMelenco_soci
ORDER BYcognome
";
$risultato=mysql_query($query,$db);
while($riga = mysql_fetch_array($risultato)){
$s_cognome=$riga['cognome'];
echo "<option value = $s_cognome > $s_cognome </option>"; // mancava il tag di chiusura
}
?>
</select>
<input name="submit" type="submit" value="Invio">
</form>
</div><?php
if($_POST["s_cognome"]){
require_once "./inc/config.php";
$cognome=$_POST['s_cognome'];// connessione al database
$db=mysql_connect($db_host,$db_user,$db_pass);
if ($db==false)
die("Errore nella connessione. Verificare i parametri nel file
./inc/config.php");// seleziona database
mysql_select_db($db_name, $db)
or die("Errore nella selezione del database. Verificare i parametri
nel file ./inc/config.php");// costruzione query
$query="SELECT * FROM elenco_soci WHERE cognome = '$cognome'";// risultato query
$risultato=mysql_query($query,$db);echo "<div id='cerca_socio'>
<table width='60%' align='center'>
<tr><th colspan='7' align='left'>Dati Anagrafici</th></tr>
<tr>
<th align='left'>id</th>
<th align='left'>Data Iscrizione</th>
<th align='left'>Data Nascita</th>
<th align='left'>Cognome</th>
<th align='left'>Nome</th>
<th align='left'>Tel. Abitazione</th>
<th align='left'>Tel. Cellulare</th>
</tr>
";
// Riga contenente i dati
while($riga = mysql_fetch_array($risultato)){
$id=$riga['id_socio'];
$data_iscrizione=date('d/m/Y', $riga['data_iscrizione']);
$data_nascita=date('d/m/Y', $riga['data_nascita']);
echo "
<tr>
<td>".$riga['id_socio']."</td>
<td>".$data_iscrizione."</td>
<td>".$data_nascita."</td>
<td>".$riga['cognome']."</td>
<td>".$riga['nome']."</td>
<td>".$riga['telefono_abitazione']."</td>
<td>".$riga['telefono_cellulare']."</td>
</tr>
</table>
";
}// connessione al database
$db=mysql_connect($db_host,$db_user,$db_pass);
if ($db==false)
die("Errore nella connessione. Verificare i parametri nel file
./inc/config.php");// seleziona database
mysql_select_db($db_name, $db)
or die("Errore nella selezione del database. Verificare i parametri
nel file ./inc/config.php");// costruzione query
$query="SELECT * FROM pagamenti WHERE id_socio = '$id' ORDER BY data DESC";// risultato query
$risultato=mysql_query($query,$db);echo "<br><br>
<table width='60%' align='center'>
<tr><th colspan='5' align='left'>Pagamenti</th></tr>
<tr>
<th align='left'>id</th>
<th align='left'>Data Versamento</th>
<th align='left'>Causale</th>
<th align='left'>Descrizione</th>
<th align='left'>Importo</th>
</tr>
";
// Riga contenente i dati
$totale=0;
while($riga = mysql_fetch_array($risultato)){
$id_socio=$riga['id_socio'];
$importo=$riga['importo'];
$totale=$totale+$importo;
echo "
<tr>
<td>".$riga['id_socio']."</td>
<td>".$riga['data']."</td>
<td>".$riga['causale']."</td>
<td>".$riga['descrizione']."</td>
<td>€". $riga['importo']."</td>
</tr>
";
}
echo"
<tr><td> </td></tr>
<tr><td> </td></tr>
<tr>
<td colspan='5'><b>Totale Versato: € ".$totale.",00</b></td>
</tr>
</table><br></div>";
mysql_close($db);
}
?>[/php]@francodace said:
se metto la stesso nome in action mi apre una nuova pagina, se metto i doppi apici torna all'index, ma credo che prima faccia qualcosaltro, solo che è così rapido che non riesco a vedere cosa fa prima di andare all'index.
Ma la pagina dove c'è questo script si chiama visualizza_socio.php?
-
Ho fatto copia e incolla, mi fa lo stesso difetto:
se lascio in action 'visualizza_socio.php' mi fa visualizzare regolarmente i dati, ma in una nuova pagina (che poi è la stessa);
se invece nell'action metto i doppi apici va nella index.
Prima di andare nella index ho l'mpressione che faccia qualcosa per un brevissimo tempo, si può fermare in qualche modo per vedere cosa fa?
-
Si la pagina si chiama 'visualizza_socio.php'.
-
Perdonami che intendi con "ma in una nuova pagina (che poi è la stessa)" ?
Dici per il fatto che ricarica la pagina?
-
Scusami, intendo che mentre la pagina 'visualizza_socio.php' è visualizzata in un contesto di layout a tre colonne in posizione centrale quando clicco sul pulsante invio associato alla select mi si visualizza questa stessa pagina con i dati forniti, ma fuori da questo contesto.
Fammi sapere se non mi sono spiegato bene.
Grazie.
-
Ah, la pagina allora è richiamata dentro un'altra.
Beh allora come action devi richiamare la pagina che include visualizza_socio.php.
-
No, la pagina è richiamata dentro il div centrale del layout:
se vuoi provare ti do l'indirizzo del sito, ci sono dei dati fittizi che servono per le prove.
-
Si ho capito, ma la pagina principale con il layout a 3 colonne e questo div centrale che richiama visualizza_socio.php, come si chiama?
-
la pagina principale si chiama 'index.php'.
Dalla colonna di sx (div id 'col-sx'), attraverso un menù carico le pagine nel div centrale (div id 'col-contenuti') e nel div in oggetto carico 'visualizza socio.php'.
Mi si visualizza la select già popolata dai cognomi, effettuo la scelta, clicco su invia e la stessa pagina mi viene visualizzata come se fosse una nuova pagina, fuori dal contesto, bianca, ma con i dati esatti.ciao e grazie ancora.
-
Scusa, cerco di essere più chiaro:
la pagina principale si chiama 'index.php' ed è divisa in 3 col + heder e footer.
Dalla colonna di sx (div id 'col-sx'), attraverso un menù, scelgo le pagina da visualizzare che vengono caricate nel div centrale (div id 'col-contenuti').
In questo caso, nel div in oggetto, carico la pagina 'visualizza socio.php' e vedo la select già popolata dai cognomi.
Effettuo la scelta, clicco su invia e la stessa pagina 'visualizza.php' mi viene visualizzata fuori da questo contesto, come se fosse una nuova pagina, bianca, ma con i dati esatti, relativi alla scelta della select.Io invece vorrei che i dati mi comparissero sotto il tag select, ma nello stesso contesto.
ciao e grazie ancora.
-
L'url allora è:
vvv.domain.ext/index.php?qualchecosa=qualcos'altro:)?
Oppure fai tutto tramite POST?
EDIT: proviamo a tagliare la testa al toro. Come action metti <? echo $_SERVER['PHP_SELF']; ?>
-
<br><br> <div id="visualizza_socio" align="center"> VISUALIZZA SOCIO <br><br> <form method="POST" <? echo $_SERVER['PHP_SELF']; ?>> Scegliere un cognome dalla lista: <select id="s_cognome" name="s_cognome"> <?php require_once "./inc/config.php"; $db=mysql_connect($db_host,$db_user,$db_pass); if ($db==false) die('Errore nella connessione. Verificare i parametri nel file config.php'); mysql_select_db($db_name, $db) or die('Errore nella selezione del database. Verificare i parametri nel file config.php'); // costruzione query $query="SELECT * FROM `elenco_soci` ORDER BY `cognome`"; $risultato=mysql_query($query,$db); while($riga = mysql_fetch_array($risultato)){ $s_cognome=$riga['cognome']; echo "<option value = $s_cognome > $s_cognome </option>"; // mancava il tag di chiusura } ?> </select> <input name="submit" type="submit" value="Invio"> </form> </div> <?php if($_POST["s_cognome"]){ require_once "./inc/config.php"; $cognome=$_POST['s_cognome']; // connessione al database $db=mysql_connect($db_host,$db_user,$db_pass); if ($db==false) die("Errore nella connessione. Verificare i parametri nel file ./inc/config.php"); // seleziona database mysql_select_db($db_name, $db) or die("Errore nella selezione del database. Verificare i parametri nel file ./inc/config.php"); // costruzione query $query="SELECT * FROM elenco_soci WHERE cognome = '$cognome'"; // risultato query $risultato=mysql_query($query,$db); echo "<div id='cerca_socio'> <table width='60%' align='center'> <tr><th colspan='7' align='left'>Dati Anagrafici</th></tr> <tr> <th align='left'>id</th> <th align='left'>Data Iscrizione</th> <th align='left'>Data Nascita</th> <th align='left'>Cognome</th> <th align='left'>Nome</th> <th align='left'>Tel. Abitazione</th> <th align='left'>Tel. Cellulare</th> </tr> "; // Riga contenente i dati while($riga = mysql_fetch_array($risultato)){ $id=$riga['id_socio']; $data_iscrizione=date('d/m/Y', $riga['data_iscrizione']); $data_nascita=date('d/m/Y', $riga['data_nascita']); echo " <tr> <td>".$riga['id_socio']."</td> <td>".$data_iscrizione."</td> <td>".$data_nascita."</td> <td>".$riga['cognome']."</td> <td>".$riga['nome']."</td> <td>".$riga['telefono_abitazione']."</td> <td>".$riga['telefono_cellulare']."</td> </tr> </table> "; } // connessione al database $db=mysql_connect($db_host,$db_user,$db_pass); if ($db==false) die("Errore nella connessione. Verificare i parametri nel file ./inc/config.php"); // seleziona database mysql_select_db($db_name, $db) or die("Errore nella selezione del database. Verificare i parametri nel file ./inc/config.php"); // costruzione query $query="SELECT * FROM pagamenti WHERE id_socio = '$id' ORDER BY data DESC"; // risultato query $risultato=mysql_query($query,$db); echo "<br><br> <table width='60%' align='center'> <tr><th colspan='5' align='left'>Pagamenti</th></tr> <tr> <th align='left'>id</th> <th align='left'>Data Versamento</th> <th align='left'>Causale</th> <th align='left'>Descrizione</th> <th align='left'>Importo</th> </tr> "; // Riga contenente i dati $totale=0; while($riga = mysql_fetch_array($risultato)){ $id_socio=$riga['id_socio']; $importo=$riga['importo']; $totale=$totale+$importo; echo " <tr> <td>".$riga['id_socio']."</td> <td>".$riga['data']."</td> <td>".$riga['causale']."</td> <td>".$riga['descrizione']."</td> <td>€". $riga['importo']."</td> </tr> "; } echo" <tr><td> </td></tr> <tr><td> </td></tr> <tr> <td colspan='5'><b>Totale Versato: € ".$totale.",00</b></td> </tr> </table><br></div>"; mysql_close($db); } ?>
non va
mi si carica sempre a parte
francodace.altervista.org
se vuoi provare, fai l'iscrizione ed io ti do i privilegi per accedere alla pagina in esame.ciao