Affichage et modification avec PDO
flo39400
Messages postés
596
Date d'inscription
Statut
Membre
Dernière intervention
-
flo39400 Messages postés 596 Date d'inscription Statut Membre Dernière intervention -
flo39400 Messages postés 596 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je viens de commencer a me mettre au PHP avec l’utilisation du PDO.
Mais j'aimerai afficher et modifier les valeurs qu'il y a dans la table 'photo' qui est dans la base de donnée 'site1' .
Mais que je puisse sélectionner la ligne puis la modifier via un <input type='' />
Puis un bouton pour valider la modification.
Tous simplement.
Si il est possible d'avoir des explications sur la façon de procéder, merci d'avance.
Je viens de commencer a me mettre au PHP avec l’utilisation du PDO.
Mais j'aimerai afficher et modifier les valeurs qu'il y a dans la table 'photo' qui est dans la base de donnée 'site1' .
Mais que je puisse sélectionner la ligne puis la modifier via un <input type='' />
Puis un bouton pour valider la modification.
Tous simplement.
Si il est possible d'avoir des explications sur la façon de procéder, merci d'avance.
A voir également:
- Affichage et modification avec PDO
- Suivi de modification word - Guide
- Logiciel gratuit modification pdf - Guide
- Affichage double ecran - Guide
- Modification dns - Guide
- Windows 11 affichage classique - Guide
2 réponses
Tu peux le faire facilement avec un formulaire de type post ou get
puis tu récupère ça en haut de ta page :
$text contiendras le contenus de l'input.
le htmlspecialschars(...); sert à te protégé des failles "XSS"
<form method="post" action=""> <input type="text" name="input" /> </form>
puis tu récupère ça en haut de ta page :
$text = htmlspecialschars($_POST['input']);
$text contiendras le contenus de l'input.
le htmlspecialschars(...); sert à te protégé des failles "XSS"
Bonjour,
Comme l'indique Dialga il te faut un Formulaire. (il a par contre oublié le bouton).
Donc un truc du genre :
NB : Pour la connexion à la bdd (fichier cnxBdd.php) tu peux t'inspirer du code suivant :
NB² : Pour la récupération "propre" des variables j'ai utilisé l'écriture ternaire.
voir ici pour l'explication :
https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
NB4 : Pour ce qui est d'afficher les données présentes dans la table.. pour ça il te suffit de faire une requête de type SELECT puis de boucler dessus pour afficher les données.
Par exemple :
Voila.. tu as toutes les billes.
Comme l'indique Dialga il te faut un Formulaire. (il a par contre oublié le bouton).
Donc un truc du genre :
<?php //Affichage des éventuelles erreurs php error_reporting(E_ALL); //connexion à ta BDD //ici tu fais un include de ton fichier de connexion en PDO // par exemple : require_once "cnxBdd.php"; //ensuite tu récupères PROPREMENT les variables AVANT de les utiliser $input = !empty($_POST['input']) ? $_POST['input'] : NULL; //traitement si input n'est pas vide (modification) if($input){ //insertion en BDD $sql = " UPDATE photo SET tonchamp=:input"; $datas = array(":input"=>$input); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } ?> <html> <head> <title>ton site</title> </head> <body> <!-- Formulaire--> <form action="" method="post"> <input name="input" value=""> <input type="submit" name="valider" value="envoyer"> </form> </body> </html>
NB : Pour la connexion à la bdd (fichier cnxBdd.php) tu peux t'inspirer du code suivant :
<?php //fichier de connexion à la bdd : cnxBdd.php try{ $bdd =new PDO('mysql:host=localhost;dbname=mabdd;charset=utf8', 'user', 'password'); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } ?>
NB² : Pour la récupération "propre" des variables j'ai utilisé l'écriture ternaire.
voir ici pour l'explication :
https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
NB4 : Pour ce qui est d'afficher les données présentes dans la table.. pour ça il te suffit de faire une requête de type SELECT puis de boucler dessus pour afficher les données.
Par exemple :
//Données en BDD $sql = " SELECT * FROM photo "; //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute() ; //on stocke le résultat dans un array $result = $requete->fetchAll(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } // pour l'affichage.. on boucle sur l'array foreach($result as $row){ //ici tu code l'affichage..... // par exemple : print_r($row); }
Voila.. tu as toutes les billes.
Voila ce que j'ai tester, bon j'ai une fatal erreur mais il affiche le résultat quand même.
Après le résultat que j'ai:
stdClass Object ( [id] => 1 [position] => 0 [adresse] => personnage WOW.jpeg [text] => [format] => height='800' width='700' )
( ! ) Fatal error: Cannot use object of type stdClass as array in C:\wamp64\www\final\news\admin.php on line 69 Call Stack #TimeMemoryFunctionLocation10.0004244208{main}( )...\admin.php:0
Car vu que dans la table "photo" il y a plusieurs champs il faudrait faire un while avec les différant éléments et mettre dans
<select name="" size="1">
<option><?php echo $row['position'] $row['adresse'] $row['text']; ?></option>
</select>
Et un bouton pour valider le champs sélectionner et formulaire de modification sur $row['position'] $row['adresse'] $row['text'] $row['format']
<?php session_start(); //Affichage des éventuelles erreurs php error_reporting(E_ALL); //connexion à ta BDD //ici tu fais un include de ton fichier de connexion en PDO // par exemple : require_once "cnxBdd.php"; //ensuite tu récupères PROPREMENT les variables AVANT de les utiliser $input = !empty($_POST['input']) ? $_POST['input'] : NULL; //traitement si input n'est pas vide (modification) if($input){ //insertion en BDD $sql = " UPDATE photo SET tonchamp=:input"; $datas = array(":input"=>$input); //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } //Données en BDD $sql = " SELECT * FROM photo "; //Execution de la requete try{ $requete = $bdd -> prepare($sql) ; $requete->execute() ; //on stocke le résultat dans un array $result = $requete->fetchAll(); }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } // pour l'affichage.. on boucle sur l'array foreach($result as $row){ //ici tu code l'affichage..... // par exemple : print_r($row); } ?> <html> <head> <title>Administration</title> </head> <body> <!-- Formulaire--> <form action="" method="post"> <input name="input" placeholder="Adresse" value="<?php echo $row['adresse']; ?>"> <input type="submit" name="valider" value="envoyer"> </form> </body> </html>
Après le résultat que j'ai:
stdClass Object ( [id] => 1 [position] => 0 [adresse] => personnage WOW.jpeg [text] => [format] => height='800' width='700' )
( ! ) Fatal error: Cannot use object of type stdClass as array in C:\wamp64\www\final\news\admin.php on line 69 Call Stack #TimeMemoryFunctionLocation10.0004244208{main}( )...\admin.php:0
Car vu que dans la table "photo" il y a plusieurs champs il faudrait faire un while avec les différant éléments et mettre dans
<select name="" size="1">
<option><?php echo $row['position'] $row['adresse'] $row['text']; ?></option>
</select>
Et un bouton pour valider le champs sélectionner et formulaire de modification sur $row['position'] $row['adresse'] $row['text'] $row['format']
Ceci n'est plus nécéssaire puisqu'en PDO tu peux (dois ...) utiliser les requêtes préparées.
Par contre.. tu peux l'utiliser éventuellement lors de l'AFFICHAGE (pas pour l'insertion en bdd)