Code php

Résolu/Fermé
kepsylis - 25 oct. 2009 à 01:27
 kepsylis - 25 oct. 2009 à 09:34
Bonjour,
j'ai donc un probleme dans mon code php visant à faire une modification dans ma BDD avec un formulaire.

form.php:

<?php
include('connexion.php');

if(isset($_GET['modifier']))
{
$sql = 'SELECT * FROM article WHERE id='.$_GET['modifier'].'';
$resultat = mysql_query($sql);
$donnees = mysql_fetch_array($resultat);
{
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">
<form method="post" action="liste_article.php">
<input type="hidden" name="action" value="modifier" />
<input type="hidden" name="id" value="'.$donnees['id'].'">
<tr>
<td colspan="3"><center>Titre: <input name="titre" type="text" value="'; echo $donnees['titre']; echo '"/></center><br /></td>
</tr>
<tr>
<td colspan="3"><center><textarea name="contenu" rows="30" cols="150">'; echo $donnees['contenu']; echo '</textarea></center><br /></td>
</tr>
<tr>
<td><center>Image: <input name="image" type="text" value="'; echo $donnees['image']; echo '"/></center></td>
<td><center>Auteur: <input name="auteur" type="text" value="'; echo $donnees['auteur']; echo '" /></center></td>
<td><center>Catégorie: <select name="categ">
<option value="'; echo $donnees['categ']; echo '">'; echo $donnees['categ']; echo '</option>
<option value="internet">Internet</option>
<option value="high-tech">High-Tech</option>
</select></center></td>
</tr>
<tr>
<td colspan="3"><br /><center><input type="submit" value="Modifier" /></center></td>
</tr>
</form>
</table>
';
}
}

A ce niveau la normalement il n'y a pas de probleme mais je vous le met au cas où ca vous aiderai.
Puis liste.php:

<?php
include('connexion.php');

if(isset($_POST['titre']) AND isset($_POST['contenu']) AND isset($_POST['image']) AND isset($_POST['auteur']) AND isset($_POST['categ']))
{
$titre = addslashes($_POST['titre']);
$contenu = addslashes($_POST['contenu']);
$image = addslashes($_POST['image']);
$auteur = addslashes($_POST['auteur']);
$categ = addslashes($_POST['categ']);

if($_POST['action'] == "ajouter")
{
//Cette partie fonctionne bien.
$sql = "INSERT INTO article VALUES('', '" . $titre . "', '" . $contenu . "', '" . $image . "', '" . $auteur . "', '" . $categ . "','" . time() . "')";
mysql_query($sql);
}
elseif($_POST['action'] == "modifier")
{
//Cette partie ne fonctionne pas. Pourtant lorsque j'écris echo $titre par exemple apres l'avoir modifier ca m'affiche bien la valeur modifier mais au niveau de la requete ca n'est pas pris en compte.

$_POST['id'] = addslashes($_POST['id']);
$titre = $_POST['titre'];
$contenu = $_POST['contenu'];
$image = $_POST['image'];
$auteur = $_POST['auteur'];
$categ = $_POST['categ'];

mysql_query("UPDATE article SET titre = '" . $titre . "', contenu = '" . $contenu . "', image = '" . $image . "', auteur = '" . $auteur . "', categ = '" . $categ . "' WHERE id = '".$_POST['id']."'");
}
}

if(isset($_GET['supprimer_article']))
{

$suppr_article = addslashes($_GET['supprimer_article']);
$sql = 'DELETE FROM article WHERE id=\'' . $suppr_article . '\'';
mysql_query($sql);

}

?>

Donc si vous pouviez m'aider ca m'arrangerai beaucoup. Tout ce que je peux vous dire, c'est que d'apres moi il y a le probleme au niveau du UPDATE mais Quoi ? Ceci est encore un mystere pour moi.

Merci d'avance.
A voir également:

2 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
25 oct. 2009 à 01:48
Bonjour,

Pour débuguer une requête SQL, plusieurs solutions :
1 - placer la ligne suivante juste après la requête que tu soupçonnes être mauvaise :
echo mysql_error();

2 - mettre ta requête dans une variable, et l'afficher.

Donc, dans ton cas, je te conseille pour trouver ton problème de faire ceci :

$requete = "UPDATE article SET titre = '" . $titre . "', contenu = '" . $contenu . "', image = '" . $image . "', auteur = '" . $auteur . "', categ = '" . $categ . "' WHERE id = '".$_POST['id']."'";
mysql_query($requete);
echo "Requête : $requete<br />".mysql_error();

Ça devrait bien t'aider :)

Xavier
0
Bonjour Xavier et merci d'avoir répondu.
Donc je précise quelque chose j'ai testé de mettre a part la requete également sous le nom de $sql au lieu de $requete mais sans la ligne echo "Requete ... " que tu a ajouté. ( la preuve, la ou y a la requete d'insertion juste avant j'ai fais de cette manière.

Ensuite apres avoir essayé la deuxieme méthode, je ne comprend pas ce qui a changé mais ca a fonctionné donc je suis assez surpris puisque c'est le code que j'avais me semble-t-il au debut. En revanche, cela ne fonctionne pas lorsque j'ai une apostrophe, il y a un message d'erreur mais je suppose qu'il faut simplement ajouter addslashes devant $_post.

Encore merci.
0