PHP, PDO : requête avec SELECT sur MYSQL avec un script PHP
RAPPEL : Dans la documentation de PDO , on peut lire :
Conclusion :
Dans un objet PDOStatement , on utilisera principalement 2 méthodes :
méthode : Lire le contenu de la table et le copier dans un tableau associatif , puis insérer le tableau associatif dans la page HTML
<?php
// traitement
// connexion à la base de données :
// création d'une instance d'un objet PDO de nom $bdd
// ATTENTION dans le tp précédent, l'instance de l'objet PDO avait pour nom $connexion_mysql
$commande_SQL ="SELECT * FROM Etudiant ORDER BY nom;";
$reponse = $bdd->query($commande_SQL);
$donnees = $reponse->fetchAll();
// affichage de la vue
?>
<ul>
<?php foreach($donnees as $row): ?>
<!-- [ 'nom1','adress1'] (row) -->
<li><?php echo $row['nom']; ?> --- <?php echo $row['ville']; ?> </li>
<?php endforeach;?>
</ul>
ATTENTION : Dans le script PHP, l’instance de l’objet PDO avait pour nom $connexion_mysql
Cette méthode permet de séparer le traitement sur la base de données (modèle) et l’affichage des données (vue). Vous trouverez facilement d’autres façons de faire (voir annexe) mais il est vivement conseillé de ne pas mélanger l’affichage (HTML) et le traitement.
Aidez vous du script ci dessus pour réaliser les exercices ci dessous ( essayez de séparer la lecture de la table avec PDO, et l’affichage du contenu de la table )
Exécuter un script PHP qui affiche :
Le numéro du groupe et du semestre sont dans 2 variables, compléter le script PHP ci dessous :
Exécuter un script PHP qui affiche :
$idGroupe
et $idSemestre
.$idGroupe
et $idSemestre
.$idGroupe
et $idSemestre
, utiliser la fonction PHP include pour réutiliser le script de la requête précédente.Modifier votre script pour :
Afficher ensuite la moyenne de chaque semestre.
Afficher la liste des étudiants (nom) avec leurs 2 notes des UE ainsi que la moyenne. Ajouter une colonne “Resultat” calculée en fonction des conditions suivantes : Ils sont admis si leurs 2 notes sont supérieures à 8 et la moyenne est supérieure à 10, valeur du champ est “ADM”. Sinon le jury doit prendre une décision, la valeur du champ est “Jury”.
Exemple de script PHP :
<?php
$reponse = $bdd->query(’SELECT * FROM Etudiant ORDER BY nom;’);
while ($donnees = $reponse->fetch())
{
echo $donnees[’nom’].’<br />\n’;
}
?>
<?php
$commande_SQL ="SELECT * FROM Etudiant ORDER BY nom;";
$reponse = $bdd->query($commande_SQL);
$donnees = $reponse->fetchAll(); /*On recopie le résultat de la requête dans un tableau associatif : mode PDO::FETCH_ASSOC */
foreach($donnees as $row) /* On parcourt le tableau */
{
echo $row['nom'].’<br />\n’; ;
}
?>
C’est l’attribut choisi par défaut. Exemple de structure retournée (pour le fetch()):
Array
(
[Id] => 1
[0] => 1
[Nom] => Nom0
[1] => Nom0
)
Contrairement à PDO::FETCH_BOTH, PDO::FETCH_ASSOC va permettre de retourner un tableau associatif indexé seulement par le nom de la colonne.
Array
(
[Id] => 1
[Nom] => Nom0
)
Ce mode permet de retourner un objet avec les noms de propriétés qui correspondent aux noms des colonnes .
StdClass Object
(
[Id] => 1
[Nom] => Nom0
)
Contrairement à PDO::FETCH_ASSOC, PDO::FETCH_NUM va permettre de retourner un tableau associatif indexé par le numéro de la colonne.
Array
(
[0] => 1
[1] => Nom0
)
Il n’est pas toujours pratique de travailler seulement avec le numéro des colonnes. Si on supprime une colonne d’une table de la base de données, les résultats seront faussés.
CloseCursor : voir la doc = > http://php.net/manual/fr/pdostatement.closecursor.php
http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands