Forums Développement Multimédia

Aller au contenu

LE CARROU

Inscrit(e) (le) 15 Nov 2017
Déconnecté Dernière activité Nov 17 2017 15:59 PM
-----

Messages que j'ai postés

Dans le sujet : Insérer, modifier, supprimer des données en PHP

16 November 2017 - 15:38 PM

Bonjour

j’ai bien compris le fonctionnement du code de Qwix et j’ai réussi à obtenir le même résultat après l’avoir adapté en PDO (codes ci-dessous).

  • On affiche les données de la base dans une page modification1.php ; On passe l’id de l’enregistrement à modifier par l’URL et on récupère ensuite l’id par la méthode GET sur la page suivante modification2.php?id. On a donc autant de boutons "modifier" redirigeant vers une page de modification2.php?id que d’enregistrement dans la table.

  • Les champs du formulaire modification2.php?id sont pré-remplis par une requête sur les données disponibles (value). L’utilisateur peut donc modifier et lorsqu’il clique sur modifier, les données du formulaire sont envoyées par méthode POST à une 3ème page modification3.php qui fait la mise à jour à l’aide d’une requête UPDATE avec un WHERE sur l’id.
Tout çà marche parfaitement même si j’ai bien compris qu’il faut l’optimiser pour la sécurité mais je verrai çà dans un second temps.
Ce que je veux faire maintenant, c’est faire des UPDATE multiples.
J’affiche les données de ma table sous forme de tableau ; Il faut donc que je passe plusieurs id.
Il me semble que la solution serait :

  • d’utiliser un array sur l’id (ligne 25 modification2.php) puis

  • parcourir l’array en faisant un while plutôt qu’un if (ligne 34 modification2.php). Mais là j’ai un peu de mal à concevoir le code. Il faut en plus que je "sorte" le bouton "Modifier" de la page modification2.php de la boucle pour que tout soit modifié d’un coup et pas seulement pour chaque enregistrement.

  • Enfin, dans ma page modification3.php (ligne 36), il faut que je boucle sur l’id pour mettre à jour tous les enregistrements de la page modification2.php.
Mais n’ayant jusqu’à présent jamais utilisé d’array, je n’arrive pas à mettre tout çà en place.
Si quelqu’un peut m’aider…

modification1.php


<html>
  <head>
    <title>modification de données en PHP :: partie 1</title>
  </head>
<body>
<?php
//connection au serveur
try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=dms;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}

//requête SQL:
$sql = "SELECT * FROM gbd_dat ORDER BY pat, fic, que" ;

//exécution de la requête:
$result = $bdd->query($sql);

//affichage des données:
while ($donnees = $result->fetch(PDO::FETCH_ASSOC))
{
echo(
"<div align=\"center\">"
.$donnees['pat']." ".$donnees['fic']
." <a href=\"modification2.php?idPersonne=".$donnees['id']."\">modifier</a></div>\n"
) ;
}
?>
</body>
</html>
 

modification2.php


<html>
  <head>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="style.css" />
    <title>modification de données en PHP :: partie2</title>
  </head>
<body>
<?php
//connection au serveur
try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=dms;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}


//récupération de la variable d'URL,
//qui va nous permettre de savoir quel enregistrement modifier
$id  = $_GET["idPersonne"] ;

//requête SQL:
$sql = "SELECT * FROM gbd_dat WHERE id = ".$id ;

//exécution de la requête:
$result = $bdd->query($sql);

//affichage des données:
if($donnees = $result->fetch(PDO::FETCH_ASSOC))
{
?>
<form name="insertion" action="modification3.php" method="POST">
  <input type="hidden" name="id" value="<?php echo($id) ;?>">
  <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
          <td>Patient</td>
          <td><input type="text" name="pat" value="<?php echo $donnees['pat'] ;?>"></td>
    </tr>
    <tr align="center">
          <td>Fiche</td>
          <td><input type="text" name="fic" value="<?php echo $donnees['fic'] ;?>"></td>
    </tr>
    <tr align="center">
          <td>Question</td>
          <td><input type="text" name="que" value="<?php echo $donnees['que'] ;?>"></td>
    </tr>
    <tr align="center">
          <td>Description</td>
          <td><input type="text" name="des" value="<?php echo $donnees['des'] ;?>"></td>
    </tr>
    <tr align="center">
          <td>Détails</td>
          <td><input type="text" name="det" value="<?php echo $donnees['det'] ;?>"></td>
    </tr>
    <tr align="center">
          <td>Corrections</td>
          <td><input type="text" name="cor" value="<?php echo $donnees['cor'] ;?>"></td>
    </tr>
    <tr align="center">
          <td>Non récupérable</td>
          <td><input type="number" name="non_rec" value="<?php echo $donnees['non_rec'] ;?>"></td>
    </tr>
    <tr align="center">
          <td>Commentaires</td>
          <td><input type="text" name="com" value="<?php echo $donnees['com'] ;?>"></td>
    </tr>
    <tr align="center">
          <td colspan="2"><input type="submit" value="modifier"></td>
    </tr>
  </table>
</form>
  <?php
  }//fin if
  ?>
</body>
</html>
 

modification3.php


<?php
//connection au serveur
try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=dms;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}

//récupération des valeurs des champs:
//numéro patient:
$patient = $_POST["pat"] ;
//Fiche:
$fiche = $_POST["fic"] ;
//Question:
$question = $_POST["que"] ;
//Description:
$description = $_POST["des"] ;
//Détails:
$details = $_POST["det"] ;
//Correction:
$correction = $_POST["cor"] ;
//Non récupérable:
$nonrecuperable = $_POST["non_rec"] ;
//Commentaires :
$commentaires = $_POST["com"] ;
//récupération de l'identifiant de la personne:
$id = $_POST["id"] ;

//création de la requête SQL:
$sql = "UPDATE gbd_dat
            SET
            pat = '$patient',
         fic = '$fiche',
  que = '$question',
  des = '$description',
  det = '$details',
  cor = '$correction',
  non_rec = $nonrecuperable,
  com = '$commentaires'
            WHERE id = '$id' "
;
//exécution de la requête SQL:
$requete = $bdd->query($sql);

//affichage des résultats, pour savoir si la modification a marchée:
if($requete)
{
    echo("La modification à été correctement effectuée") ;
}
else
{
    echo("La modification à échouée") ;
}
?>
 

Dans le sujet : Insérer, modifier, supprimer des données en PHP

15 November 2017 - 17:26 PM

pardon !
je viens de voir qu'il me manquait des virgule dans la requête...

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP