Home / Programmazione / PHP / Modifica dati con PDO
Mattepuffo

Modifica dati con PDO

Modifica dati con PDO

Dopo aver visto come effettuare una interrogazione e l'inserimento vediamo come modificare i dati sul nostro db MySQL.

Vi consiglio prima una letta a quei due articoli.....

Prima di tutto aggiungiamo una funzione alla nostra classe:

public function update($nome, $cognome, $data_nascita, $cel, $tel, $fax, $soc, $carica, $email1, $email2, $sito, $casa, $uff, $id) {
$prepare = $this->pdo->prepare("UPDATE contatti SET nome=?, cognome=?, data_nascita=?, cellulare=?, telefono=?, fax=?, societa=?, carica=?, email_1=?, email_2=?, sito_web=?, indirizzo_casa=?, indirizzo_uff=? WHERE id=?");
$prepare->execute(array(
trim($nome),
trim($cognome),
trim($data_nascita),
trim($cel),
trim($tel),
trim($fax),
trim($soc),
trim($carica),
trim($email1),
trim($email2),
trim($sito),
trim($casa),
trim($uff),
$id
));
header('location:index.php');
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
}

Anche qui abbiamo usato un'istruzione prepare come nel caso dell'inserimento.

 

Rispetto a quella funzione però abbiamo aggiunto un parametro che corrisponde all'id della tabella.

Non c'è nulla di nuovo rispetto all'inserimento a parte il parametro in più e la query diversa.

Qui i segnaposto vengono assegnati ad ogni campo; dovete sempre stare attenti a come mettete le voci nell'array.

Fatto ciò aggiungiamo una colonna alla tabella in index.php:

<?php
echo '<table><thead>';
echo '<th>NOME</th>';
echo '<th>COGNOME</th>';
echo '<th>DATA NASCITA</th>';
echo '<th>CELLULARE</th>';
echo '<th>TELEFONO</th>';
echo '<th>FAX</th>';
echo '<th>SOCIETA</th>';
echo '<th>CARICA</th>';
echo '<th>EMAIL 1</th>';
echo '<th>EMAIL 2</th>';
echo '<th>SITO WEB</th>';
echo '<th>INDIRIZZO CASA</th>';
echo '<th>INDIRIZZO UFFICIO</th>';
echo '<th></th></thead>';
foreach ($obj->select() as $row) {
$date = date_create($row['data_nascita']);
echo '<tr><td>' . $row['nome'] . '</td>';
echo '<td>' . $row['cognome'] . '</td>';
echo '<td>' . $row['data_nascita']  . '</td>';
echo '<td>' . $row['cellulare'] . '</td>';
echo '<td>' . $row['telefono'] . '</td>';
echo '<td>' . $row['fax'] . '</td>';
echo '<td>' . $row['societa'] . '</td>';
echo '<td>' . $row['carica'] . '</td>';
echo '<td>' . $row['email_1'] . '</td>';
echo '<td>' . $row['email_2'] . '</td>';
echo '<td><a href="http://' . $row['sito_web'] . '" target="_blank">' . $row['sito_web'] . '</a></td>';
echo '<td>' . $row['indirizzo_casa'] . '</td>';
echo '<td>' . $row['indirizzo_uff'] . '</td>';
echo '<td><a href="modifica.php?id=' . $row['id'] . '&n=' . $row['nome'] . '&c=' . $row['cognome'] . '&cl=' . $row['cellulare'] . '&t='
. $row['telefono'] . '&f=' . $row['fax'] . '&s=' . $row['societa'] . '&ca=' . $row['carica'] . '&e1='
. $row['email_1'] . '&e2=' . $row['email_2'] . '&sw=' . $row['sito_web'] . '&ic='
. $row['indirizzo_casa'] . '&iu=' . $row['indirizzo_uff'] . '&d=' . $row['data_nascita'] . '">Modifica</a> | '</td></tr>;
}
echo '</table>';
?>

Abbiamo aggiunto una nuova colonna con un link alla pagina modifica.php; quasto link prende i valori e li passa in GET alla pagina.

Questa è la pagina modifica.php:

<?php
session_start();
include_once 'config.php';
$obj = new Config();
if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['textId'])) {
$obj->update($_POST['txtName'], $_POST['txtSurname'], $_POST['txtData'], $_POST['txtCell'], $_POST['txtTel'], $_POST['txtFax'], $_POST['txtSocieta'], $_POST['txtCarica'], $_POST['email1'], $_POST['email2'], $_POST['sito'], $_POST['indirizzoCasa'], $_POST['indirizzoUff'], $_POST['textId']);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Update</title>
</head>
<body>
<table>
<form action="" method="POST">
<tr>
<td>Nome:</td>
<td><input type="text" name="txtName" value="" /></td>
</tr>
<tr>
<td>Cognome:</td>
<td><input type="text" name="txtSurname" value="" /></td>
</tr>
<tr>
<td>Cellulare:</td>
<td><input type="text" name="txtCell" value="" /></td>
</tr>
<tr>
<td>Telefono:</td>
<td><input type="text" name="txtTel" value="" /></td>
</tr>
<tr>
<td>Fax:</td>
<td><input type="text" name="txtFax" value="" /></td>
</tr>
<tr>
<td>Società</td>
<td><input type="text" name="txtSocieta" value="" /></td>
</tr>
<tr>
<td>Carica:</td>
<td><input type="text" name="txtCarica" value="" /></td>
</tr>
<tr>
<td>Email 1:</td>
<td><input type="text" name="email1" value="" /></td>
</tr>
<tr>
<td>Email 2:</td>
<td><input type="text" name="email2" value="" /></td>
</tr>
<tr>
<td>Sito web:</td>
<td><input type="text" name="sito" value="" /></td>
<td>www.esempio.com</td>
</tr>
<tr>
<td>Indirizzo casa:</td>
<td><input type="text" name="indirizzoCasa" value="" /></td>
</tr>
<tr>
<td>Indirizzo ufficio:</td>
<td><input type="text" name="indirizzoUff" value="" /></td>
</tr>
<tr>
<td>Data di nascita:</td>
<td><input type="text" name="txtData" value="" /></td>
</tr>
<tr>
<td>
<input type="hidden" name="textId" value="">
<input type="submit" value="Submit" name="submit" />
</td>
</tr>
</form>
</table>    
</body>
</html>

Anche qua non c'è molto da dire rispetto all'insert, quindi lascio lo studio delle differenze a voi!!