Problème de mise à jour

[Résolu]
Signaler
Messages postés
4
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
24 avril 2007
-
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
-
Bonjour à tous !

Voilà j'ai un énorme problème de code. En effet je suis en train de créer un forum pour l'entreprise où je suis en stage, et j'ai un formulaire dans lequel je récupère 2 zones de texte, et je n'arrive aps à mettre à jour les informations correspondantes dans la base de données ... Ce qui est très étrange ...

En fait j'ai 2 champs : nomcateg et disposition.

Si je ne modifie que disposition, la mise à jour s'effectue bien.
Si je modifie les 2 aucune mise à jour ne s'effectue.
Si je modifie uniquement nomcateg aucune mise à jour ne s'effectue ...

Voici mon code :

Le formulaire :

$reqcated="select cat_nom, disposition from forum_categs order by disposition";
        $tcated=mysql_query($reqcated, $conn);
       
        while ($cated=mysql_fetch_array($tcated))
        {
            echo '   
                    <form method="post" action="franchises-admin-categ.php?action=modifie" class="lienforum">
                                            ----

                                                           
                           ,
                                                           
                           ,
                                                           
                           ,
                       
                   

                    </form>';
        }

Donc pour chaque catégorie dans ma base j'affiche 2 champs nom et disposition modifiables, et un bouton modifier qui envoie vers ma page.

Et pour la mise à jour :

// Si on a bien un message
            if (isset($_POST['nomcateg']))
            {
           
                // Si le message n'est pas nul
                if ($_POST['nomcateg'] != NULL)
                {
               
                    // Notation des données récupérées
                    $nom=$_POST['nomcateg'];
                   
                    if (isset($_POST['disposition']))
                        $dispo=$_POST['disposition'];
                    else
                        $dispo=0;
               
                    // Récupération de l'id de la catégorie
                    $reqidca="select id from forum_categs where cat_nom='".$_POST['nomcateg']."'";
                    $idc=recupdonnee($reqidca, $conn);
                   
                    // Mise à jour des informations sur la catégorie
                    $reqmajca="UPDATE forum_categs SET cat_nom='$nom' WHERE id=$idc";
                    mysql_query($reqmajca, $conn);
                   
                    $reqmajca2="update forum_categs set disposition='$dispo' where id=$idc";
                    mysql_query($reqmajca2, $conn);
                   

Hors la mise à jour ne se fait que si je ne modifie que disposition. J'ai vérifié $nom est bien égal à la valeur entrée .... Donc je ne vois pas où est mon erreur ... je ne vois que la requete de fausse ... Mais je trouve pas l'erreur à ce moment là ...

Si qq1 voit la solution .. Merci :)

AIDEZ MOOOOI ! (:

6 réponses

Messages postés
4
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
24 avril 2007

Héhé merci de ta proposition alex1025, mais j'avais déjà tenté en mettais des echos partout ... Et toutes les variables étaient bonnes ... Mais j'ai trouvé mon problème : lors de ma requête :

$reqidca="select id from forum_categs where cat_nom='".$_POST['nomcateg']."'";
                    $idc=recupdonnee($reqidca, $conn);

j'utilisais non pas l'ancien nom de la catégorie, mais bien le nouveau nom saisi par l'utilisateur .. donc ma requête ne pouvait renvoyer d'id convenable dès que je touchait au nom de la catégorie, puisque une catégorie de ce nom la n'existe pas.

Au cas où celà peut aider quelqu'un je post ma correction :

Déjà le formulaire dans lequel j'ai inséré un input hidden pour passer le nom d'origine de ma catégorie :

$reqcated="select cat_nom, disposition from forum_categs order by disposition";
        $tcated=mysql_query($reqcated, $conn);
       
        while ($cated=mysql_fetch_array($tcated))
        {
            echo '   
                    <form method="post" action="franchises-admin-categ.php?action=modifie" class="lienforum">
                                            ----

                                                           
                               
                           ,
                                                           
                           ,
                                                           
                           ,
                       
                   

                    </form>';
        }

Et ma partie mise à jour des données :

// Si on a bien un message
            if (isset($_POST['nomcateg']))
            {
           
                // Si le message n'est pas nul
                if ($_POST['nomcateg'] != NULL)
                {
               
                    // Notation des données récupérées
                    $nom=$_POST['nomcateg'];
                   
                    if (isset($_POST['disposition']))
                        $dispo=$_POST['disposition'];
                    else
                        $dispo=0;
               
                    // Récupération de l'id de la catégorie
                    $reqidca="select id from forum_categs where cat_nom='".$_POST['nomorigine']."'";
                    $idc=recupdonnee($reqidca, $conn);
                   
                    // Mise à jour des informations sur la catégorie
                    $reqmajca="UPDATE forum_categs SET cat_nom='$nom', disposition='$dispo' WHERE id=$idc";
                    mysql_query($reqmajca, $conn);
                }
            }

Merci pour votre aide dans tous les cas, à bientot !
Messages postés
104
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
8 décembre 2007

Salut moi je changerais par

   if (isset($_POST['Modifier']))
            {
           
                // Si le message n'est pas nul
                if ($_POST['nomcateg'] != NULL)
                {
               
                    // Notation des données récupérées
                    $nom=$_POST['nomcateg'];
                   
                    if (isset($_POST['disposition']))
                        $dispo=$_POST['disposition'];
                    else
                        $dispo=0;
               
                    // Récupération de l'id de la catégorie
                    $reqidca="select id from forum_categs where cat_nom='".$_POST['nomcateg']."'";
                    $idc=recupdonnee($reqidca, $conn);
                   
                    // Mise à jour des informations sur la catégorie
                    $reqmajca="UPDATE forum_categs SET cat_nom='$nom',disposition='$dispo'  WHERE id=$idc";
                    mysql_query($reqmajca, $conn);
}
}
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
$reqmajca="UPDATE forum_categs SET cat_nom='$nom' WHERE id=$idc";

La requète est bonne... quoi que.

Il faut vérifier que $idc est bien un entier. Pour ce faire, on transtype :$r 'UPDATE .... SET .... '.$nom.' WHERE id = '. (int) $idc;
On force donc $idc à être en entier, car dans ta DB, tu as donnés au champ id un type INT. (normalement)

Maintenant, d'où vient $idc ?
De la : $idc=recupdonnee($reqidca, $conn);

As tu vérifiés qu'ici tu as bien un entier ?
Parce que... recupdonnee(), je sais pas ce qu'elle fait :s
Messages postés
4
Date d'inscription
mardi 21 novembre 2006
Statut
Membre
Dernière intervention
24 avril 2007

Bonjour à tous, et déjà merci de vos réponses :)

Je vais regarder tout ca et essayer de corriger mon code.

Pour FhX, $idc est bien un entier, dans ma table c'est un int10 en auto_increment, qui correspond à l'id de ma catégorie, et recupdonne() envoie tout simplement le résultat unique d'une requête dans une variable ... De ce coté là je suis sur qu'il n'y a aucun problème, puisque j'arrive à modifier la disposition quand je ne change que ça ... Donc ça vient d'autre chose je pense.

Quant à alex1025 je ne vois pas ce que le fait de mettre 'modifier' plutot que isset 'nomcateg' changera ... de plus que je suis certain de passer dans la boucle ... Donc voilà je suis à nouveau coincé ... A l'aide !!! Si ça continue je vais passer les paramètres en GET !! ..
Messages postés
104
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
8 décembre 2007

Hello,

Tu devrais faire des echo en milieu de route pour essayer de trouver d'ou vient le probleme et si tes variables contiennent toujours les données.

A++
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
Dans tous les cas, tu as un problème de conception.

Tes catégories doivent se trouver sur une table à part... et faire le lien via l'ID de la catégorie en utilisant une jointure.