Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 10...
-
Upload
angele-alvarez -
Category
Documents
-
view
109 -
download
2
Transcript of Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 10...
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']);}
?>