Bonjour, voila que je me réveil pour faire quelque test et je m'aperçois que mon update ne s'effectue pas, j'ai enlevé le header location pour avoir des infos 0 message d'erreur donc je viens faire appelle a vous car j'ai beau modifier mon code rien a faire.
Il n'y a que l'image qui s'update si j'en met une nouvelle

voici le formulaire d'envoie qui récupère les anciennes données que je met a jour si besoins.

<form method="POST" action="modifier_produits.php?page=<?php echo $data'id_produits']; ?>">

            <p>
                <label for="nom">Nom du produit</label><br />
                <input type="text" class="input" id="nom" name="nom" value="<?php echo $data'nom']; ?>">
            </p>
            <p>
                <label for="position">Prix</label><br />
                <input type="text" class="input" id="prix" name="prix" value="<?php echo $data'prix']; ?>">
            </p>
            <p>
                <label for="position">Quantiter</label><br />
                <input type="text" class="input" id="quantiter" name="quantiter" value="<?php echo $data'quantiter']; ?>">
            </p>

            <p>
                <label for="contenu">Description</label><br />
                <textarea type="text" class="input" id="description" name="description"><?php echo $data'description']; ?></textarea>
            </p>

            <p>
            <br />
                <label for="contenu">image actuelle :</label><br />
                <img class="img-produitsindex" src="<?php echo $data'image']; ?>"   alt="image" />
            </p>
            <br />
            <div id="image" >
                <label for="contenu">envoyer une nouvelle image ? :</label><br />
                <input class="input" type="text" name="image" id="image" >
            </div>
            <br />
    <?php               
    //connection au serveur
    include ('includes/connexion_bdd.php'); 
    ?>
    <div id="consoles">
    <label for="consoles">Le produit est une console ? si non sur quel support est le produit * :</label>
        <select class="input    " name="id_consoles" required>
                <?php
                // ici je récupère les consoles
                //connection au serveur
                $res = $bdd->query ('SELECT nom, id_consoles FROM consoles');

                while ($donnees = $res->fetch())
                {
                ?> <option value=<?php echo $donnees'id_consoles'] ;?>> <?php echo $donnees'nom'] ;?> </option><?php 
                }
                $res->closeCursor();
            ?>
        </select>
    </div>
    <br />
    <div id="types">
    <label for="Types">Types de produit * :</label>
        <select class="input    " name="id_types" required>
            <?php
                // ici je récupère les consoles
                //connection au serveur
                $res = $bdd->query ('SELECT nom, id_types FROM types');

                while ($donnees = $res->fetch())
                {
                ?> <option value=<?php echo $donnees'id_types'] ;?>> <?php echo $donnees'nom'] ;?> </option><?php 
                }
                $res->closeCursor();
            ?>
        </select>
    </div>
    <br />
    <div id="genres">
    <label for="Genres">Genres de produit * :</label>
        <select class="input    " name="id_genres" required>
            <?php
                // ici je récupère les genres
                //connection au serveur
                $res = $bdd->query ('SELECT nom, id_genres FROM genres');

                while ($donnees = $res->fetch())
                {
                ?> <option value=<?php echo $donnees'id_genres'] ;?>> <?php echo $donnees'nom'] ;?> </option><?php 
                }
                $res->closeCursor();
            ?>
        </select>
    </div>
    <br /><br />
    <?php 
        $promo = $data'promo'];
        if($promo == 1){
            echo '<input type="checkbox" name="promo" value="promo" checked="checked"> En Promo ?';
        }else{
            echo'<input type="checkbox" name="promo" value="promo"> En Promo ?';
        }
    ?>
    <br /><br />
            <input src="img/modifier.png" type=image >
            <img src="img/annuler.png" onclick="javascript:location.href='admin_produits.php'" />           
            </form>

et mon action php qui est sensé faire l'update :

<?php
    require("session.class.php");
    $Session = new Session(); 
    //connection au serveur
    include ('includes/connexion_bdd2.php'); 
    extract($_POST);
    $id = $_GET'page']; // $id = à l'id du produit qu'on récupère dans le GET
        if(isset($_POST'promo']))
        {
            $promo = 1; // si promo est coché 
        }else{
            $promo = 0; // si promo est décoché
        }
            $sql = "UPDATE produits SET nom='$nom', prix='$prix', quantiter='$quantiter', description='$description', id_consoles='$id_consoles', id_genres='$id_genres', id_types='$id_types', promo='$promo' WHERE id_produits=$id";         
            mysql_query($sql);

        // si l'admin na pas rentré de nouvelle image on garde la précédente sinon on update le champ image         
        if(!empty($_POST'image']))
            {
                    $sql = "UPDATE produits SET image='$image' WHERE id_produits=$id";         
                    mysql_query($sql); 
            }
            // message d'alerte
            $Session->setFlash('La modification du produits a été effectuer','success');
            // retour a la page d'acceuil
            header('Location:admin_produits.php');

?>

8 réponses


xander
Auteur
Réponse acceptée

problème réglé ^^ merci pour l'aide

xander
Auteur

chez un pote l'update fonctionne nickel alors que chez moi non il n'a pas du tout touché au code =s ?? WTF

Tu es en local?

xander
Auteur

oui et lui aussi. surtout que pour moi hier soir tout étais nickel c'est pour sa que je ne comprend pas du tout j'ai mis des mysql or die pour voir j'obtiens sa
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'action', id_consoles='1', id_genres='1', id_types='1', promo='1' WHERE id_produi' at line 1
surtout que l'update d'image lui reste fonctionnelle

Ah je crois savoir, a tout les coups dans ta description tu as un ' donc dans MySQL ça ouvre normalement après description= mais description se termine là où il y a un ' dans ta description, exemple un "j'ai" dedans. Essaye à la place de $description de mettre addslashes($description) dans ta requête, et fais ça pour tout les variables qui sont des strings. Après pour celles qui sont que des chiffres, t'es pas obliger de mettre ça '' autour, comme pour id_consoles='$id_consoles' tu peux juste mettre id_consoles=$id_consoles.

xander
Auteur

tu m'a fait espéré pendant 2 min mais non c'est pas sa XD

Essaye sa ? :

$sql = "UPDATE produits SET image=".$image." WHERE id_produits=".$id;

Comme je ne sais pas si il y a besoin des ' :

$sql = "UPDATE produits SET image='".$image."' WHERE id_produits='".$id."'";
xander
Auteur

non plus je viens d’ailleurs de changé tout mon code proprement et il y a rien a faire.

<?php
require("session.class.php");
$Session = new Session();
//connection au serveur
include ('includes/connexion_bdd.php');
extract($_POST);
$id = $_GET'page']; // $id = à l'id du produit qu'on récupère dans le GET
if(isset($_POST'promo']))
{
    $promo = 1; // si promo est coché
}
else
{
    $promo = 0; // si promo est décoché
}
$sql= 'UPDATE produits SET nom=:nom, prix=:prix, description=:description, id_consoles=:id_consoles, id_genres=:id_genres, id_types=:id_types, promo=:promo WHERE id_produits=$id';
$req = $bdd->prepare($sql);
$req->execute(array('nom' => $nom,'prix' => $prix,'description' => $description,'id_consoles' => $id_consoles,'id_genres' => $id_genres,'id_types' => $id_types,'promo' => $promo));
if(!empty($_POST'image']))
{
    $sql2= 'UPDATE produits SET image=:image WHERE id_produits='.$id.'';
    $req2= $bdd->prepare($sql2);
    $req2->execute(array('image' => $image));
}
// message d'alerte
$Session->setFlash('La modification du produits a été effectuer','success');
// retour a la page d'acceuil
header('Location:admin_produits.php');
exit; 
?>