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

Preview:

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

?>

Recommended