prepare

Mattepuffo's logo
Prepared Statement con MySQLi

Prepared Statement con MySQLi

Anche se in genere uso PDO per connettermi a MySQL con PHP, per piccoli script può non valerne la pena.

Ma al posto di usare le classiche funzionu mysql_ ho iniziato a usare il mysqli, che ad oggi è strettamente consigliato.

Vediamo qui come eseguire istruzioni preparate (Pepared Statement) per inserire da in un db MySQL attraverso l'estensione MySQLi.

Vi posto il form:

<form action="" method="post">
<label>Nome / Name:</label>
<input type="text" value="" name="nome" />
<label>Cognome / Surname:</label>
<input type="text" value="" name="cognome" />
<fieldset>
<legend>Sex:</legend>
<input type="radio" name="sex" value="m" />
<label>M</label>
<input type="radio" name="sex" value="f" checked="checked"  />
<label>F</label>
</fieldset>
<label>E-mail:</label>
<input type="text" value="" name="email" />
<label>Nazione / Country:</label>
<select name="nazione">
<option>Italy</option>
<option>UK</option>
</select>
<label>Lingua / Language:</label>
<select name="lingua">
<option>*</option>
<option>Italiano</option>
<option>English</option>
</select>
<fieldset>
<legend>Privacy:</legend>
<input type="checkbox" name="privacy" />
<label>Agree</label>
</fieldset>
<fieldset>
<button type="submit" name="btn_send">Submit</button>
</fieldset>
</form>

Un normale form.

Mattepuffo's logo
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.

Mattepuffo's logo
Inserimento dati con PDO

Inserimento dati con PDO

Dovo avere fatto la connessione e una classica interrogazione vediamo come aggiungere dati al nostro db.

Prima di tutto leggiamo l'articolo linkato e salviamoci quella classe.

Infatti non andremo creare una nuova classe, ma aggiungeremo solo una funzione riprendendo quella istanza di PDO.

Questo perchè, come detto nell'articolo, quella classe rappresenta il nostro db e li mettermo tutte le operazioni da fare.

Per l'inserimento useremo le istruzioni prepare.

Come vedete queste istruzioni posso essere usate in vari modi; io in genere uso i segnaposti ?.

Vediamo la funzione da aggiungere alla classe:

public function insert($nome, $cognome, $data_nascita, $cel, $tel, $fax, $soc, $carica, $email1, $email2, $sito, $casa, $uff) {
try {
$prepare = $this->pdo->prepare("INSERT INTO contatti (nome, cognome, data_nascita, cellulare, telefono, fax, societa, carica, email_1, email_2, sito_web, indirizzo_casa, indirizzo_uff) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
$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)
));
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
}

Come vedete la funzione richiede diversi parametri, che corrispondono alle voci da inserire nella tabella.

Mattepuffo's logo
Delete MySql con JSP e Servlet

Delete MySql con JSP e Servlet

Dopo aver visto come interrogare un db MySql e come aggiungere dati, proseguiamo con l'operazione di cancellazione.

Vi consiglio di leggere prima i due articoli ai link segnalati sopra.

Questa è la nostra pagina index.jsp:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Banca JSP</title>
</head>
<body>
<table>
<thead>
<th>
ID
</th>
<th>
ENTRATE
</th>
<th>
USICTE
</th>
<th>
CAUSALE
</th>
<th>
DATA
</th>
</thead>
<c:forEach items="${requestScope.list}" var="lists">
<tr>
<td>
<c:out value="${lists.id}"/>
</td>
<td>
<c:out value="${lists.entrate}"/>
</td>
<td>
<c:out value="${lists.uscite}"/>
</td>
<td>
<c:out value="${lists.causale}"/>
</td>
<td>
<c:out value="${lists.data}"/>
</td>

<td>
<a href="DoDelete?delete=${lists.id}">Elimina</a>
</td>
</tr>
</c:forEach>
</table>
<br/>
<br/>
<form action="DoInsert" method="post">
<input type="text" name="txtEntrate" value="100"/><br/>
<input type="text" name="txtUscite" value="0"/><br/>
<input type="text" name="txtCausale" value="jsp 1"/><br/>
<input type="submit" name="Submit" value="Submit" />
</form>
</body>
</html>

Come vedete ho aggiunto una cella con un link che richiama la Servlet DoDelete passandogli in GET il valori dell'id selezionato tramite lists.id.

Mattepuffo's logo
Insert MySql con JSP e Servlet

Insert MySql con JSP e Servlet

Dopo aver visto come eseguire una semplice select sun db MySql con JSP e le Servlet, vediamo com'è possibile fare un inserimento.

Vi consiglio di dare prima una letta a questi due articoli che spiegano la classe per la connessione e come eseguire una select con JSP/Servlet:

Detto ciò andremo ad utilizzare un semplice form e una Servlet per eseguire la query di inserimento usando un PreparedStatement (che è la prima volta che uso).

Qui trovate un buon articolo.

In generale i PreparedStatement son delle query pre-compilate.

Alla pagina index.jsp aggiungiamo un semplice form:

<form action="DoInsert" method="post">
	<input type="text" name="txtEntrate" value=""/><br/>
	<input type="text" name="txtUscite" value=""/><br/>
	<input type="text" name="txtCausale" value=""/><br/>
	<input type="submit" name="Submit" value="Submit" />
</form>

Come action ci mettiamo la Servlet che andremo a creare.

Ricordatevi che la Servlet va aggiunta al web.xml dopo essere stata creata.