Modification bdd en PHP
Résolu
Dominique
-
kij_82 Messages postés 4102 Date d'inscription Statut Contributeur Dernière intervention -
kij_82 Messages postés 4102 Date d'inscription Statut Contributeur Dernière intervention -
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
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
Configuration: Windows XP Firefox 3.0.12
11 réponses
-
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."' .... "; ?>
-
-
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.
-
$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!! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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.
-
@$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>';
} -
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
-
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)
-
tjs la meme chose...
oui j'ai un champ ID. le fait qu'il soit en auto increment ne change rien? -
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'].'">'; -
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 ?)