Modification bdd en PHP

Résolu/Fermé
Dominique - 13 août 2009 à 13:06
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 17 août 2009 à 17:37
Bonjour,

j'aimerais pouvoir faire une modification dans une base de données depuis une page php.

J'ai une base de donnée avec mes films, résumé, acteurs,...

Je demande à la personne qui veut modifier quelque chose le nom du film, il se peut qu'il y en ait plusieurs (de films) donc j'affiche tous les films avec un bouton (echo '<form action="modifierFilm.php" method="post"><input type = submit value ="modifier"></form>';).

Le problème est que je ne sais pas comment prendre la valeur du film que la personne veut modifier.

Le code est le suivant:


echo '<table>';
echo '<tr><td width=20%></td><td width=80%></td></tr>';


for($i=0; $i<$num_res;$i++){
$row = mysql_fetch_array($res);

echo '<tr><td rowspan="6">';

$image = htmlspecialchars(stripslashes($row['Image']));
echo '<img src = '.$image.'>';
echo '</td><td> <B>';
echo htmlspecialchars(stripslashes($row['Nom']));
echo '</B></td></tr>';
echo '<tr><td><i>';
echo htmlspecialchars(stripslashes($row['Annee']));
echo '</i></td></tr>';
echo '<tr><td><i>';
echo htmlspecialchars(stripslashes($row['Genre']));
echo '</i></td></tr>';
echo '<tr><td><i>';
echo htmlspecialchars(stripslashes($row['Acteur']));
echo '</i></td></tr>';
echo '<tr><td colspan ="2">';
echo htmlspecialchars(stripslashes($row['Resume']));
echo '</td></tr>';

echo '<TR><TD colspan = "3"><CENTER>';
echo '<form action="modifierFilm3.php" method="post"><input type = submit value ="modifier"></form>';
echo '</TD></TR>';
}
echo '</table>';


quelqu'un peut m'aider?

Merci d'avance

11 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
13 août 2009 à 14:16
Bonjour,

Il te suffit de glisser l'identifiant du film dans ton formulaire, sous forme cachée bien sûr, comme ceci :
echo '<form action="modifierFilm3.php" method="post">
echo '<input type="hidden" id="idFilm" value="'.$row['id_film'].'"/>';
echo '<input type = submit value ="modifier"></form>'; 


Bien sûr il faut t'assurer de sélectionner l'identifiant du film dans ta requête SQL, de manière à pouvoir l'envoyer dans le formulaire.

Ensuite, dans ton script de traitement 'modifierFilm3.php', tu n'auras plus qu'à récupérer l'identifiant du film en question via :
<?php
$idFilm = "";
if ( isset($_POST['idFilm']) && !empty($_POST['idFilm']) )
   $idFilm = $_POST['idFilm'];


$sql = ".... WHERE id_film = '".$idFilm."' .... ";

?>

0
la variable $idFilm est vide!
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
13 août 2009 à 16:44
Certes, mais ta remarque ne fait pas vraiment avancer...

Peux-tu donner tout le code de ta page, c'est à dire requete SQL incluse.

Idem pour le code de ton script de modification.

Merci.
0
$idFilm = "";
if ( isset($_POST['idFilm']) && !empty($_POST['idFilm']) )*/
$idFilm = $_POST['idFilm'];

echo ' ID '.$idFilm.' du Film <br>';

$query = "select nom from Films WHERE ID like '".$idFilm."'";
$resultat = mysql_query($query);
$num_res = mysql_num_rows($resultat);
echo ' il y a '.$num_res.' résultat';
for($i=0; $i<$num_res;$i++){
$row = mysql_fetch_array($resultat);
echo 'le nom du film est : '.$row[0];
}


le problème c'est que row[0] qui doit contenir le nom du film mais ne contient rien!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
17 août 2009 à 11:23
Bonjour,

Si la variable $idFilm est vide c'est que l'erreur est avant le script de traitement.

Le code que tu viens de mettre c'est celui de la page de traitement suite à ton formulaire si je ne me trompe pas. J'ai mal précisé, ce que voulais c'est le code entier de ton formulaire, requête SQL de sélection incluse.
0
@$db = mysql_connect(host, user) or die("Impossible de se connecter : " . mysql_error());

mysql_select_db('maTable');


$query = "select * from Film where Nom like '%".$film."%'";


$res = mysql_query($query) or die("requête fausse");
$num_res = mysql_num_rows($res);

if($num_res == 0){
echo ' <B><CENTER>Ce film n existe pas!</CENTER></B> <br>';
}else{

echo '<table>';
echo '<tr><td width=20%></td><td width=80%></td></tr>';


for($i=0; $i<$num_res;$i++){
$row = mysql_fetch_array($res);

echo '<tr><td rowspan="6">';

$image = htmlspecialchars(stripslashes($row['Image']));
echo '<img src = '.$image.'>';
echo '</td><td> <B>';
echo htmlspecialchars(stripslashes($row['Nom']));
echo '</B></td></tr>';
echo '<tr><td><i>';
echo htmlspecialchars(stripslashes($row['Annee']));
echo '</i></td></tr>';
echo '<tr><td><i>';
echo htmlspecialchars(stripslashes($row['Genre']));
echo '</i></td></tr>';
echo '<tr><td><i>';
echo htmlspecialchars(stripslashes($row['Realisateur']));
echo '</i></td></tr>';
echo '<tr><td><i>';
echo htmlspecialchars(stripslashes($row['Acteur']));
echo '</i></td></tr>';
echo '<tr><td><i>';
echo strtoupper(htmlspecialchars(stripslashes($row['Type'])));
echo '</i></td></tr>';
echo '<tr><td colspan ="2">';
echo htmlspecialchars(stripslashes($row['Resume']));
echo '</td></tr>';
echo '<tr><td colspan ="2">';
echo ' ';
echo '</td></tr>';




echo '<TR><TD colspan = "3"><CENTER>';
echo '<form action="modifierFilm3.php" method="post">';
echo '<input type="hidden" id="idFilm" value="\'.$row[\'ID\'].\'"/>';
echo '<input type = submit value ="modifier"></form>';

echo '</TD></TR>';

...

ca c'est le code où il y a la liste des films la personne clique sur le bouton correspondant au film.

$idFilm = "";
if ( isset($_POST['idFilm']) && !empty($_POST['idFilm']) )
$idFilm = $_POST['idFilm'];





$query = "select Nom from Film WHERE ID like '".$idFilm."'";
$res = mysql_query($query);
$num_res = mysql_num_rows($res);


for($i=0; $i<$num_res;$i++){
$row = mysql_fetch_array($res);
echo 'le nom du film est : '.$row[0].' <br>';

}
0
En fait l'ID du film je l'ai sur la 1er page, mais c'est quand je la "transmets" avec le bouton que je le perd! Quand je clique sur le bouton j affiche une nouvelle page et quand je veux afficher l'ID du film il est vide
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
17 août 2009 à 17:04
Re,

Si tu cherches la ligne de code de ton formulaire (sur le champ invisible) comme ceci :
echo '<input type="hidden" id="idFilm" name="IdFilm" value="'.$row['ID'].'"/>'; 


Ca donne quoi ?

Tu as bien un champ "ID" dans ta table qui fait référence à l'identifiant du film au moins ? (on ne sais jamais)
0
tjs la meme chose...
oui j'ai un champ ID. le fait qu'il soit en auto increment ne change rien?
0
Voila ai réussi en faisant comme ca:


$dataID = htmlspecialchars(stripslashes($row['ID']));


echo '<TR><TD colspan = "3"><CENTER>';
echo '<form action="modifierFilm3.php" method="post">';
echo '<input type="hidden" name="idFilm" value="'.$row['ID'].'">';
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
17 août 2009 à 17:37
Mum... bizarre, je ne vois pas en quoi l'ajout de la ligne

$dataID = htmlspecialchars(stripslashes($row['ID'])); 

changerait quelque chose puisque tu stock le résultat dans un variable que tu n'utilise pas (a moins que tu ai fait une erreur de recopie du formulaire ?)
0