Upload
angele-alvarez
View
109
Download
2
Embed Size (px)
Citation preview
Algorithmes et structures de données avancées
Partie Conception de Sites Web dynamiques
Cours 10
Patrick Reuter
Formulaires
• à l'exemple du livre d'or
entrer.php
<form action="sauver.php" method="get">
<p>Insérer votre nom :</p>
<input type="text" name="nom">
<p>Insérer votre message :</p>
<textarea name="texte" rows="5" cols="20"></textarea>
<br />
<input type="submit" name="soumettre"value="-- Envoyer --">
</form>
<p>Vous avez renseigné: <p>
<p>Nom :
<?php
echo $_GET['nom'];
?>
</p>
<p>Texte :
<?php
echo $_GET['texte'];
?>
</p>
<a href="livreor.php">Voir le livre d'or</a>
entrer.php
sauver.php
<form action="sauver.php" method="get">
<p>Insérer votre nom :</p>
<input type="text" name="nom">
<p>Insérer votre message :</p>
<textarea name="texte" rows="5" cols="20"></textarea>
<br />
<input type="submit" name="soumettre"value="-- Envoyer --">
</form>
<p>Vous avez renseigné: <p>
<p>Nom :
<?php
echo $_GET['nom'];
?>
</p>
<p>Texte :
<?php
echo $_GET['texte'];
?>
</p>
<a href="livreor.php">Voir le livre d'or</a>
entrer.php
sauver.php
<form action="sauver.php" method="get">
<p>Insérer votre nom :</p>
<input type="text" name="nom">
<p>Insérer votre message :</p>
<textarea name="texte" rows="5" cols="20"></textarea>
<br />
<input type="submit" name="soumettre"value="-- Envoyer --">
</form>
<p>Vous avez renseigné: <p>
<p>Nom :
<?php
echo $_GET['nom'];
?>
</p>
<p>Texte :
<?php
echo $_GET['texte'];
?>
</p>
<a href="livreor.php">Voir le livre d'or</a>
entrer.php
sauver.php
<form action="sauver.php" method="get">
<p>Insérer votre nom :</p>
<input type="text" name="nom">
<p>Insérer votre message :</p>
<textarea name="texte" rows="5" cols="20"></textarea>
<br />
<input type="submit" name="soumettre"value="-- Envoyer --">
</form>
Terminologie
• Base de données (database)
• Table (table)
• Enregistrement (record)
• Champ (field)
Table PERSONNE
PERSONNE
PersID nom prénom date_naiss ville_naiss
1 Dupont bob 01-01-1950 1
2 Santos Leo 29-04-1999 2
3 Roi Sandra 26-12-2000 1note : ici ville_naiss est une clé étrangère (Table VILLE)
Table VILLE
VILLE
VilleID nom population superficie region
1 Paris 2153600 .. 12
2 Lyon 470400 .. 22
3 Grenoble 156600 .. 22note : ici region est une clé étrangère (table REGION)
Types de relations
• Relation de type 1:1
• ici : Relation de type 1:n
• Relation de type n:m
Table personnes
id nom
1 Pascal
2 Marie
Table animauxid nom … id_personne
1 Zeus … 1
2 Sisko … 1
3 Peggy … 1
4 Oscar … 2
5 Felix … 2
• Requêtes MySQL – INSERT : insérer un enregistrement– SELECT : récupérer un/des enregistrement(s)– UPDATE : mettre à jour des enregistrements– DELETE : effacer des enregistrements
Instructions MySQL
INSERT INTO nom_table (nom_du_champs1, nom_du_champs2, …)
VALUES
(valeur_champs1, valeur_champs2, ..)
Instructions MySQL
INSERT INTO livreor ( id , texte , nom , date ) VALUES ('1', 'Leo', 'Bonjour', '2007-12-03');
si le champs id est mis en auto-increment, il suffit de mettre
INSERT INTO livreor ( texte , nom , date ) VALUES ('Leo', 'Bonjour', '2007-12-03');
Instructions MySQLSélectionner les champs de tous les enregistrements d’une table
SELECT * FROM nom_table [WHERE condition [AND condition] [OR condition]] [ORDER BY champs [DESC][ASC]];
Exemples:
SELECT * FROM livreorSELECT * FROM livreor WHERE nom='Leo'SELECT * FROM livreor WHERE date>'2000-12-01'…
Instructions MySQL
Modifier une donnée dans une table
UPDATE nom_table SET nom_du_champs = nouvelle_valeur WHERE nom_du_champs = valeur
Exemple
UPDATE sondage SET nombrechoix1 = 0 WHERE id = 1
Instructions MySQL
Effacer un enregistrement
DELETE FROM nom_table [WHERE nom_du_champs1 = valeur1 [AND nom_du_champs2 = valeur2]]
PHP et MySQL
PHP et MySQL
Fichier connect_db.php<?php$dbhost="localhost";$dbuser="root";$dbpassword="";$dbname="base_cswd";
$dblink=mysql_connect($dbhost,$dbuser,$dbpassword);
$db_cswd=mysql_select_db($dbname,$dblink);function qdb($sql){
$resultat = mysql_query($sql); if (mysql_errno())
{ echo "MySQL error ".mysql_errno()." : ".mysql_error()."\n<br>";echo "Requête MySQL : ".$sql."\n<br>"; die;
} return $resultat;
}?>
Tous les fichiers PHP<?php
require_once("connect_db.php");
?>
Insérer un enregistrement
INSERT INTO livreor
( id , texte , nom , date )
VALUES
('', 'Très bon site', 'Cédric', NOW());
Insérer un enregistrement
$sql = "INSERT INTO livreor ( id , texte , nom , date ) VALUES ('', 'Très bon site', 'Cédric', NOW()); ";
$resultat = qdb($sql);
revient à … : $resultat = mysql_query("INSERT INTO …");
echo "j'utilise php" ; // ou bien
echo "j\'utilise php" ; //
Concatenation 1
<?
echo "Salut"." Martin";
?>
Variables<?php
$a = 0;$nom = 'Horst';echo $a;
?>
<?php $a = 0; ?><?php $nom = 'Horst'; ?><?php echo $a; ?>
Concatenation 2
<?
$nom = "Martin";
?>
Salut <? echo $nom; ?>
Insérer un enregistrement –première (mauvaise) version
$sql = "INSERT INTO livreor ( id , texte , nom , date ) VALUES ('', '". $_GET['nom']."', '".$_GET['texte']."', NOW()); ";
$resultat = qdb($sql);
$resultat = mysql_query("INSERT INTO …");
Attention à l'injection SQL
$sql = "l'arbre";
$sql = mysql_escape_string($sql);
Attention à l'injection SQL
$sql = "INSERT INTO livreor ( id , texte , nom , date ) VALUES ('', 'L'arbre pousse.', 'Cédric'; DELETE * FROM
livreor; ' Roussel', NOW()); ";
$resultat = qdb($sql);
revient à … : $resultat = mysql_query("INSERT INTO …");
Attention à l'injection SQL
$sql = "INSERT INTO livreor ( id , texte , nom , date ) VALUES ('', 'L\'arbre pousse.', 'Cédric', NOW()); ";
$resultat = qdb($sql);
revient à … : $resultat = mysql_query("INSERT INTO …");
Insérer un enregistrement –deuxième (bonne) version
$sql = "INSERT INTO livreor ( id , texte , nom , date ) VALUES ('', '". mysql_escape_string($_GET['nom'])."', '". mysql_escape_string($_GET['texte'])."', NOW()); ";
$resultat = qdb($sql);
$resultat = mysql_query("INSERT INTO …");
Parcourir les enregistrenents<?php
$sql = "SELECT * FROM livreor";$resultat = qdb($sql);
// connaitre le nombre d'enregistrements$nombre_resultats = mysql_num_rows($resultat);
// parcourir le tableau des enregistrements$i=1;while ($i <= $nombre_resultats){ $enregistrements = mysql_fetch_array($resultat) echo $enregistrements['nom']; echo $enregistrements['texte']; $i = $i + 1;}?>
Parcourir les enregistrenents<?php
$sql = "SELECT * FROM livreor;";$resultat = qdb($sql);
// connaitre le nombre d'enregistrements$nombre_resultats = mysql_num_rows($resultat);
// parcourir le tableau des enregistrementswhile ($enregistrements = mysql_fetch_array($resultat)){ echo $enregistrements['nom']; echo $enregistrements['texte'];}
?>
• mysql_escape_string
Fonction "inverse" :
• stripslashes
Parcourir les enregistrenents<?php
$sql = "SELECT * FROM livreor;";$resultat = qdb($sql);
// connaitre le nombre d'enregistrements$nombre_resultats = mysql_num_rows($resultat);
// parcourir le tableau des enregistrementswhile ($enregistrements = mysql_fetch_array($resultat)){ echo stripslashes($enregistrements['nom']); echo stripslashes($enregistrements['texte']);}
?>