Problème de mise à jour

Résolu
Keilen Messages postés 4 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 24 avril 2007 - 23 avril 2007 à 17:29
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 24 avril 2007 à 18:25
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

Keilen Messages postés 4 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 24 avril 2007
24 avril 2007 à 10:27
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 !
3
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007
23 avril 2007 à 17:36
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);
}
}
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
23 avril 2007 à 18:56
$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
0
Keilen Messages postés 4 Date d'inscription mardi 21 novembre 2006 Statut Membre Dernière intervention 24 avril 2007
24 avril 2007 à 09:45
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 !! ..
0

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

Posez votre question
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007
24 avril 2007 à 10:19
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++
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
24 avril 2007 à 18:25
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.
0
Rejoignez-nous