Affichage et modification avec PDO

Fermé
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 30 juin 2016 à 19:06
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 3 juil. 2016 à 10:45
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.


A voir également:

2 réponses

Dialga.Java Messages postés 38 Date d'inscription vendredi 6 mai 2016 Statut Membre Dernière intervention 5 octobre 2016 11
30 juin 2016 à 19:13
Tu peux le faire facilement avec un formulaire de type post ou get

<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"
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
1 juil. 2016 à 00:00
Bonsoir,

le htmlspecialschars(...); sert à te protégé des failles "XSS"

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)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
30 juin 2016 à 23:59
Bonjour,

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.
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
3 juil. 2016 à 10:21
Bonjour a vous jordane45,

je remarque que vous m'aider souvent.

Donc je vais essayer tous cela je reviens bientôt et merci pour tout.
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
3 juil. 2016 à 10:45
Voila ce que j'ai tester, bon j'ai une fatal erreur mais il affiche le résultat quand même.

<?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']
0