Form inserimento dati

di il
7 risposte

Form inserimento dati

Salve qualcuno può aiutarmi a risolvere questa cosa...non riesco a visualizzare i dati inseriti e ci sto sbattendo la testa senza alcun risultato.
In pratica ho questo form di inserimento clienti :

<?php
if(!empty($_POST["add_record"])) {
    require_once("db.php");
	$sql = "INSERT INTO clienti ( cognome, nome, codice_fiscale, codice_verifica, piano_terapeutico, note ) VALUES ( :cognome, :nome; :codice_fiscale, :codice_verifica; :piano_terapeutico, :note )";
	$pdo_statement = $pdo_conn->prepare( $sql );
  
	$result = $pdo_statement->execute( array( ':cognome'=>$_POST['cognome'], ':nome'=>$_POST['nome'], ':codice_fiscale'=>$_POST['codice_fiscale'], ':codice_verifica'=>$_POST['codice_verifica'],  ':piano_terapeutico'=>$_POST['piano_terapeutico'], ':note'=>$_POST['note'] ) );
	if (!empty($result) ){
	  header('location:index.php');
      
	}
}
?>
<html>
<head>
<title>DIABETICI - AGGIUNGI NUOVO CLIENTE</title>
  <style>
body{width:100%px;font-family:arial;letter-spacing:1px;line-height:20px;}
.button_link {color:#FFF;text-decoration:none; background-color:#428a8e;padding:10px;}
.frm-add {border: #c3bebe 1px solid;
    padding: 30px;}
.demo-form-heading {margin-top:0px;font-weight: 500;}	
.demo-form-row{margin-top:20px;}
.demo-form-field{width:300px;padding:10px;}
.demo-form-submit{color:#FFF;background-color:#414444;padding:10px 50px;border:0px;cursor:pointer;}
</style>
</head>
<body>
<div style="margin:20px 0px;text-align:right;"><a href="index.php" class="button_link">Torna alla lista clienti</a></div>
<div class="frm-add">
<h1 class="demo-form-heading">Aggiungi nuovo cliente</h1>
<form name="frmAdd" action="" method="POST">
    <div class="demo-form-row">
	  <label>Cognome: </label><br>
	  <input type="text" name="cognome" class="demo-form-field" required />
  </div>
  <div class="demo-form-row">
	  <label>Nome: </label><br>
	  <input type="text"  name="nome" class="demo-form-field" required />
  </div>
	<div class="demo-form-row">
	  <label>Codice Fiscale: </label><br>
	  <input type="text" name="codice_fiscale" class="demo-form-field" required />
  </div>
	<div class="demo-form-row">
	  <label>Codice Verifica: </label><br>
	  <input type="numbers"  name="codice_verifica" class="demo-form-field" required >
  </div>
	<div class="demo-form-row">
	  <label>Piano Terapeutico: </label><br>
	  <input type="date" name="piano_terapeutico" class="demo-form-field" required />
  </div>
	<div class="demo-form-row">
	  <label>Note: </label><br>
	  <textarea name="note" class="demo-form-field" rows="5" required ></textarea>
  </div>
	<div class="demo-form-row">
	  <input name="add_record" type="submit" value="Add" class="demo-form-submit">
  </div>
	  </form>
</div> 
</body>
</html>
la pagina index.php dove visualizzo i record aggiunti è questa :

<?php
require_once("db.php");
?>
<html>
<head>
<title>GESTIONE DIABETICI</title>
<style>
body{width:100%;font-family:arial;letter-spacing:1px;line-height:20px;}
.tbl-qa{width: 100%;font-size:0.9em;background-color: #f5f5f5;}
.tbl-qa th.table-header {padding: 5px;text-align: left;padding:10px;}
.tbl-qa .table-row td {padding:10px;background-color: #FDFDFD;vertical-align:top;}
.button_link {color:#FFF;text-decoration:none; background-color:#428a8e;padding:10px;}
</style>
</head>
<body>
<?php	
	$pdo_statement = $pdo_conn->prepare("SELECT * FROM clienti ORDER BY cognome ASC");
	$pdo_statement->execute();
	$result = $pdo_statement->fetchAll();
?>
<div style="text-align:right;margin:20px 0px;"><a href="crea_cliente.php" class="button_link"><img src="crud-icon/add.png" title="Aggiungi Nuovo Cliente" style="vertical-align:bottom;" /> Crea Cliente</a></div>
<table class="tbl-qa">
  <thead>
	<tr>
	  <th class="table-header" width="20%">Cognome</th>
	  <th class="table-header" width="20%">Nome</th>
	  <th class="table-header" width="15%">Codice Fiscale</th>
	  <th class="table-header" width="5%">Codice Verifica</th>
	  <th class="table-header" width="15%">Piano Terapeutico</th>
	  <th class="table-header" width="25%">Note</th>
	  <th class="table-header" width="5%">Azioni</th>
	</tr>
  </thead>
  <tbody id="table-body">
	<?php
	if(!empty($result)) { 
		foreach($result as $row) {
	?>
	  <tr class="table-row">
		<td><?php echo $row["cognome"]; ?></td>
		<td><?php echo $row["nome"]; ?></td>
	    <td><?php echo $row["codice_fiscale"]; ?></td>
		<td><?php echo $row["codice_verifica"]; ?></td>
		<td><?php echo $row["piano_terapeutico"]; ?></td>
		<td><?php echo $row["note"]; ?></td>
		<td><a class="ajax-action-links" href='aggiorna_cliente.php?id=<?php echo $row['id']; ?>'><img src="crud-icon/edit.png" title="Edit" /></a> <a class="ajax-action-links" href='delete.php?id=<?php echo $row['id']; ?>'><img src="crud-icon/delete.png" title="Delete" /></a></td>
	  </tr>
    <?php
		}
	}
	?>
  </tbody>
</table>
</body>
</html>
quindi inserendo i dati nel form dovrei essere poi indirizzato alla index dove visualizzare il record aggiunto....beh non funziona e non capisco il perchè. Sè qualche occhio più attento può aiutarmi...Ringrazio anticipatamente

7 Risposte

  • Re: Form inserimento dati

    Prova a copiare dalla barra degli indirizzi e inserire l'intera url nel tuo action del form
  • Re: Form inserimento dati

    Ho provato ma nulla rimane inchiodato nella pagina crea_cliente quando una volta inviati i dati dovrebbe puntare alla index.php
  • Re: Form inserimento dati

    Può darsi che PDOStatement::execute non ritorna semplicemente true o false. [Code]if (!empty($result) ){ header('location: index.php'); } Modificare in
    if ($result || !is_bool($result)){
    	  header('location: index.php');
          
    	}
    	var_dump($result);
  • Re: Form inserimento dati

    Ho provato anche a modificare come mi hai indicato ma nulla. Non inserisce nel database riesco a visualizzare i record inseriti manualmente dal mysql ma non con il form di invio...
    Per scrupolo sono andato a vedere anche se la tabella fosse stata creata bene , ma non vedo errori...
    CREATE TABLE `clienti` (
      `id` int(8) NOT NULL,
      `cognome` varchar(255) NOT NULL,
      `nome` varchar(255) NOT NULL,
      `codice_fiscale` varchar(255) NOT NULL,
      `codice_verifica` varchar(255) NOT NULL,
      `piano_terapeutico` date DEFAULT NULL,
      `note` text NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    
  • Re: Form inserimento dati

    Adesso funziona...vi posto il codice pero sinceramente non ho capito cosa cambia.
    
    crea_cliente.php
    <?php
    require_once("db.php");
    if(!empty($_POST["add_record"])) {
    	$sql = "INSERT INTO clienti ( cognome, nome, codice_fiscale, codice_verifica, piano_terapeutico, note ) VALUES ( :cognome, :nome, :codice_fiscale, :codice_verifica, :piano_terapeutico, :note ); )";
    	$pdo_statement = $db->prepare( $sql );
      
    	$result = $pdo_statement->execute( array( ':cognome'=>$_POST['cognome'], ':nome'=>$_POST['nome'], ':codice_fiscale'=>$_POST['codice_fiscale'], ':codice_verifica'=>$_POST['codice_verifica'],  ':piano_terapeutico'=>$_POST['piano_terapeutico'], ':note'=>$_POST['note'] ) );
    	if (!empty($result) ){
    	  header('location:index.php');
          
    	}
    }
    ?>
    <div class="frm-add">
    <h1 class="demo-form-heading">Aggiungi nuovo cliente</h1>
    <form name="frmAdd" action="" method="POST">
        <div class="demo-form-row">
    	  <label>Cognome: </label><br>
    	  <input type="text" name="cognome" class="demo-form-field" required />
      </div>
      <div class="demo-form-row">
    	  <label>Nome: </label><br>
    	  <input type="text"  name="nome" class="demo-form-field" required />
      </div>
    	<div class="demo-form-row">
    	  <label>Codice Fiscale: </label><br>
    	  <input type="text" name="codice_fiscale" class="demo-form-field" required />
      </div>
    	<div class="demo-form-row">
    	  <label>Codice Verifica: </label><br>
    	  <input type="numbers"  name="codice_verifica" class="demo-form-field" required >
      </div>
    	<div class="demo-form-row">
    	  <label>Piano Terapeutico: </label><br>
    	  <input type="date" name="piano_terapeutico" class="demo-form-field" required />
      </div>
    	<div class="demo-form-row">
    	  <label>Note: </label><br>
    	  <textarea name="note" class="demo-form-field" rows="5" required ></textarea>
      </div>
    	<div class="demo-form-row">
    	  <input name="add_record" type="submit" value="Add" class="demo-form-submit">
      </div>
    	  </form>
    </div>
  • Re: Form inserimento dati

    Nella tua prima versione INSERT INTO usavi erroneamente il carattere semicolon ; (il che falliva)
    Nel dubbio ti ho chiesto di aggiungere il var_dump($result); per mostrare a video se il valore era falso
  • Re: Form inserimento dati

    Quando mi hai consigliato la modifica , che ho testato continuava a non inviare i dati del form al database...ora secondo la tua opinione è consigliabile fare il binding sulle operazioni CRUD?
    ho provato a fare in questo modo:
    
    <?php
    require_once("db.php");
    if(!empty($_POST["add_record"])) {
    	$sql = "INSERT INTO clienti ( cognome, nome, codice_fiscale, codice_verifica, piano_terapeutico, note ) VALUES ( :cognome, :nome, :codice_fiscale, :codice_verifica, :piano_terapeutico, :note ); )";
    	$pdo_statement = $db->prepare( $sql );
    	$pdo_statement ->bindValue(':id', $id, PDO::PARAM_INT);
    	$pdo_statement ->bindvalue(':cognome' , $cognome, PDO::PARAM_STR);
    	$pdo_statement ->bindvalue(':nome' , $nome, PDO::PARAM_STR);
    	$pdo_statement ->bindvalue(':codice_fiscale' , $codice_fiscale, PDO::PARAM_STR);
    	$pdo_statement ->bindvalue(':codice_verifica' , $codice_verifica, PDO::PARAM_STR);
    	$pdo_statement ->bindvalue('piano_terapeutico' , $piano_terapeutico, PDO::PARAM_STR);
    	$pdo_statement ->bindvalue('note' , $note, PDO::PARAM_STR );
    	$result = $pdo_statement->execute( array( ':cognome'=>$_POST['cognome'], ':nome'=>$_POST['nome'], ':codice_fiscale'=>$_POST['codice_fiscale'], ':codice_verifica'=>$_POST['codice_verifica'],  ':piano_terapeutico'=>$_POST['piano_terapeutico'], ':note'=>$_POST['note'] ) );
    	if (!empty($result) ){
    	  header('location:index.php');
          
    	}
    }
    ?>
    
    continua ad inserire ma vorrei capire se l'impostazione è giusta .
    Inoltre potrebbe funzionare anche facendo semplicemente il binding della query $sql? Eventualmente visto che ci sono valori INT per l'id e STR come andrebbe impostata?
Devi accedere o registrarti per scrivere nel forum
7 risposte