Algorithmes et structures de données avancées Partie Conception de Sites Web dynamiques Cours 10...

Post on 03-Apr-2015

109 views 2 download

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']);}

?>