[PHP] Non riesco a far passare i dati con i form

  • Creatore Discussione Creatore Discussione SimooRu
  • Data di inizio Data di inizio

SimooRu

Nuovo Utente
21 Lug 2016
4
1
3
Ciao, il problema è che non mi funziona una query in php, utilizzando il metodo GET vedo che la variabile passa e passa anche giusta, ma la query non funziona ugualmente

Acconti-form.php
PHP:
<!DOCTYPE html>
<html>
<body>

<?php
include('db_conn.php');
print('<form action="Acconti.php" method="GET"><select name="ListaClienti" >');
$query=mysql_query('SELECT CodiceFiscale, Nome, Cognome FROM Clienti');
$riga=mysql_fetch_array($query);
while($riga)
{
$Nome=$riga['Nome'];
$Cognome=$riga['Cognome'];
$Cliente=$riga['CodiceFiscale'];
print('<option value="'.$Cliente.'">'.$Nome.' '.$Cognome.'');
$riga=mysql_fetch_array($query);
}
print('</select><input type="submit" value=AVVIA RICERCA"></form>')

?>
</body>
</html>


Acconti.php
PHP:
<!DOCTYPE html>
<html>
<body>

<a href="protetta.php"><h1>Indice</h1></a>
<?php
include("db_conn.php");
$Cliente=$_GET['ListaClienti'];
$query=mysql_query('SELECT Acconto, Data FROM Acconti WHERE CFesterno='.$Cliente.' ');
$riga=mysql_fetch_array($query);
print('<table>
    <tr>
      <td>Acconto</td>
      <td>Data</td>
    </tr>');
while($riga)
{
$Importo=$riga['Importo'];
$Data=$riga['Data'];
print('<tr>
          <td>'.$Importo.'</td>
          <td>'.$Data.'</td>
          </tr>');
$riga=mysql_fetch_array($query);
}
print('</table>');
?>
</body>
</html>


non riesco a capire perchè non funzioni, mi sapete aiutare?
 
A prima occhiata, in acconti-form.php, vedo che non chiudi il tag <option>.

Chiudilo e riprova ;)
 
Ti ho corretto il codice.

Non ho ancora capito cosa non andasse, ma se si trattava di un errore di query non avrei potuto verificarlo, in quanto le funzioni mysql_, nella mia versione di PHP non sono più supportate, in quanto ormai deprecate (utilizza invece mysqli o PDO).

Inoltre il modo che adoperi per concatenare le variabili, in altre circostanze ti avrebbero esposto a rischi abbastanza seri, quali SQL Injection; con PDO tutto questo viene meno (basta googlare e capisci perché).

Ti riporto qui i tre script (devi modificarli opportunamente secondo le tue variabili, tutti e tre)


dbconfig.php
PHP:
<?php 
// FILE DI CONFIGURAZIONE DELLA CONNESSIONE AL DB (PDO)

 // 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!";
 }
?>


form.php
PHP:
<!DOCTYPE html>
<html>
<body>

<?php
include('dbconfig.php'); // FILE DI CONFIGURAZIONE ACCESSO DB PDO
print('<form action="altro.php" method="GET"><select name="ListaClienti" >');

// PDO
$query='SELECT codice, nome, cognome FROM prova';
$stm = $conn->prepare($query);
$stm->execute();


while($riga = $stm->fetch(PDO::FETCH_ASSOC)) // PDO
{
$nome=$riga['nome'];
$cognome=$riga['cognome'];
$cliente=$riga['codice'];
print('<option value="'.$cliente.'">'.$nome.' '.$cognome.'</option>');
}
print('</select><input type="submit" value=AVVIA RICERCA"></form>')

?>
</body>
</html>


altro.php
PHP:
<!DOCTYPE html>
<html>
<body>

<a href="protetta.php"><h1>Indice</h1></a>
<?php
include("dbconfig.php");
$cliente=$_GET['ListaClienti'];
//PDO
$query='SELECT Acconto, Data FROM Acconti WHERE CFesterno= ? ';
$stm = $conn->prepare($query);
$stm->execute(array($cliente));

print('<table>
    <tr>
      <td>Acconto</td>
      <td>Data</td>
    </tr>');
while($riga = $stm->fetch(PDO::FETCH_ASSOC)) // PDO
{
$Importo=$riga['Acconto'];
$Data=$riga['Data'];
print('<tr>
          <td>'.$Importo.'</td>
          <td>'.$Data.'</td>
          </tr>');
}
print('</table>');
?>
</body>
</html>
 
Non ho provato se l'errore era lì, ma sempre in Acconti-form.php, nell'ultima input type, nell'opzione value, manca un "
 

Discussioni simili