PDA

Visualizza la versione completa : richiamare dati da un db MySql tramite un form per creare un report su un valore di un campo


studer
28-12-2019, 09:51
grosso modo come da titolo, avrei questa necessita', ho un db MySql che contiene una tabella nella quale ci sono dei campi di cui vorrei richiamare i dati tramite un campo select con un form html+php.
Esempio
tabella con campi localita' , via , numero civico
il campo localita' ha solo tre citta' es. Roma, Milano e Genoca.

ecco io vorrei creare un form che mi restituisca tutti i record della localita' Roma (ovviamente presenti nel campo localita') utilizzando una form con una select sul campo localita'

Non so' se sono stato sufficentemente chiaro.....
ad ogni modo grazie a tutti !

Alhazred
28-12-2019, 10:15
Queste sono le conoscenze, ed i passi da fare, di cui hai bisogno per realizzare questa cosa:
1) realizzare un form in html da mostrare sulla pagina
2) invio dei dati del form verso uno script PHP
3) tramite PHP recupero dati inviati dal form
4) connessione ed esecuzione query da PHP verso un db
5) sintassi SQL per scrivere query adeguate alle necessità
6) ciclare sui dati recuperati dal db e mostrarli sulla pagina

Qualcuno di questi passi ti da problemi?

studer
30-12-2019, 11:03
Ciao Alhazred,
scusami per il ritardo nella risposta...
allora si' il mio problema sta' nei punti 4, 5 e 6

sempre riallacciandomi all'esempio iniziale questo e' quello che avevo fatto io:

1) form realizzato:
<div class="col-md-12">
<div class="col-md-6">
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<div class="form-group">
<label for="localita">Localita':</label>
<select class="form-control" name="localita" value="<?php echo $data['localita']; ?>">
<option disabled>Scegli l'opzione</option>
<option <?php echo ($data['localita'] == 'Roma' ? 'selected': ''); ?>>Roma</option>
<option <?php echo ($data['localita'] == 'Milano' ? 'selected': ''); ?>>Milano</option>
<option <?php echo ($data['localita'] == 'Bologna' ? 'selected': ''); ?>>Bologna</option>
</select>
</div>
<div class="form-group">
<label for="datainserimento">Da Data Inserimento:</label>
<input type="date" class="form-control" value="<?php echo $data['datarichiesta']; ?>">
</div>
<div class="form-group">
<label for="datarichiesta">A Data Inserimento:</label>
<input type="date" class="form-control" value="<?php echo $data['datarichiesta']; ?>">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
<div class="col-md-6">
<?php
$sql = "SELECT COUNT(citta) FROM tabellacitta";


if($result = mysqli_query($conn, $sql)){
if(mysqli_num_rows($result) > 0){
echo "<table class=\"table table-striped\">";
echo "<tr>";
echo "<th>id</th>";
echo "<th>Citta</th>";
echo "<th>Data di Richiesta</th>";
echo "<th>Data di Scadenza</th>";

echo "</tr>";
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['citta'] . "</td>";
echo "<td>" . $row['datarichiesta'] . "</td>";
echo "<td>" . $row['datarichiesta'] . "</td>";
echo "</tr>";
}
echo "</table>";
// Close result set
mysqli_free_result($result);
} else{
echo "No records matching your query were found.";
}
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
}
?>
</div>

</div>

4) connessione ed esecuzione query da PHP tramite relatoiva inclusione script<?php require"code/config.php"; ?>
<?php
$serverl='localhost';
$username='dbusername';
$password='T~Dtoo2@lC^j';
$database='dbpassword';
$conn=mysqli_connect($server1,$username,$password, $database);
if(!$conn){
die('Could not Connect My Sql:' .mysql_error());
}
else{

}
?>

5) questa e' sintassi della Query sql : $sql = "SELECT COUNT(citta) FROM tabellacitta";
6) e per la ciclatura dei dati vedi docide sopra, nella tabella citta' ci sono 7 record inseriti in un lasso temporale compreso fra le date del 1/12/2019 e 31/12/2019 ma niente da fare , richiamando la pagina non vedo nulla.....

optime
30-12-2019, 11:12
1. il codice per cortesia mettilo tra i tag < c o d e > ... < / c o d e > altrimenti non si capisce niente
2. io vedo solo la COUNT delle città, che ti restituirà "7", mica i dati delle città... :bhò:

studer
30-12-2019, 13:41
si' scusa!
si' avebdo usato COUNT volevo riicavare il numero delle righe in cui appariva una certa citta' pero' il problema e' che non vedo neanche il numero 7....

optime
30-12-2019, 14:21
non lo vedi perché tenti di stampare dati che non ci sono... perché non fai una SELECT elenco_campi_che_ti_servono FROM tabellacitta ?

studer
30-12-2019, 15:59
ciao Optim e grazie x la risposta, ok sono passato alla SELECT * , quello che non capisco e' perche' la form non riesca a pilotare i risultati, mi spiego meglio , nella fom ho 3 citta' MILANO ROMA e BOLOGNA se seleziono MILANO vorrei che i risultati visualizzati fossero riferiti alla sezione fatta nella form, mentre qui mi appare tutto.....?

optime
30-12-2019, 16:18
beh, ti mancherà specificare la selezione nella WHERE... queste cose la form non le fa da sola, sei tu che la devi programmare :D

PS. SELECT * è una bad practice, specifica solo i nomi dei campi che ti interessano

studer
01-01-2020, 15:07
ok diciamo che avrei modifica to la mia query in questo modo:
<code>
$sql = "SELECT * FROM tabella citta WHERE citta = '$citta'";
</code>

Il problema e' che utulizzando poi una form per ottenere i dati desiderati che ha al suo interno anche una select basata sui nomi delle citta' questa non mi restituisce l'elenco dei record riferiti alla citta' selezionata...

Cosa sbaglio...? grazie a tutti e buon anno !

optime
01-01-2020, 18:22
Vedo che ti sei incaponito con la SELECT * :D evidentemente ti piace

per la parte PHP lascio la parola a chi ne sa più di me :popcorn:

Loading