Pbs UPDATE et INSERT dans un script PHP !

Résolu
Bonjour,

Voilà, cette fois, je jette mon gant car voilà 4 jours que je suis dessus !

J'explique : dans un des prgs de mon forum PHPbb, le modcp.php, j'ai un MOD attributes (ci-dessous en italique et fonctionne très bien ! Dans ce MOD, je crée un script (en gras) avec une condition (si l'attribute = 9, il doit exécuter ce que je lui indique) :

-- mod : quick title edition -------------------------------------------------
//-- add
]case 'attribute':
if (empty($HTTP_POST_VARS['topic_id_list']) && empty($topic_id))
{
message_die(GENERAL_MESSAGE, $lang['None_selected']);
}

$topics = isset($HTTP_POST_VARS['topic_id_list']) ? $HTTP_POST_VARS['topic_id_list'] : array($topic_id);
$topic_id_sql = '';

for ($i = 0; $i < count($topics); $i++)
{
$topic_id_sql .= ( !empty($topic_id_sql) ? ', ' : '' ) . $topics[$i];
}

$attribute = ($row['attribute_id'] > -1) ? implode(',', array($row['attribute_id'], $userdata['user_id'], time())) : '';


//-- mod : quick title ziever début -------------------------------------------------
if ($attribute_id == 9 )
{
$result = mysql_query("SELECT topic_poster
FROM phpbb_topics
WHERE topic_id = $topic_id");
if (!$result)
{
echo 'Impossible d\'exécuter la requête : ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
$topic_poster = intval($row[0]);
$sql = "UPDATE phpbb_users
SET user_rank = 4
WHERE user_id = $topic_poster";

$sql = "INSERT INTO phpbb_user_group (group_id, user_id, user_pending)
VALUES (11024,$topic_poster,0)";
}
//-- mod : quick title ziever fin ---------------------------------------------------


$sql = 'UPDATE ' . TOPICS_TABLE . '
SET topic_attribute = \'' . $attribute . '\'
WHERE topic_id IN (' . $topic_id_sql . ')
AND topic_moved_id = 0';
if (!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Attr_Error_Message_12'], '', __LINE__, __FILE__, $sql);
}

if (!empty($topic_id))
{
$redirect_page = $get->url('viewtopic', array(POST_TOPIC_URL => $topic_id, 'sid' => $userdata['session_id']), true);
$message = sprintf($lang['Click_return_topic'], '<a href="' . $redirect_page . '">', '</a>');
}
else
{
$redirect_page = $get->url('modcp', array(POST_FORUM_URL => $forum_id, 'sid' => $userdata['session_id']), true);
$message = sprintf($lang['Click_return_modcp'], '<a href="' . $redirect_page . '">', '</a>');
}

$message = $message . '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . $get->url('viewforum', array(POST_FORUM_URL => $forum_id, 'sid' => $userdata['session_id']), true) . '">', '</a>');
$template->assign_vars(array('META' => '<meta http-equiv="refresh" content="3;url=' . $redirect_page . '">'));

message_die(GENERAL_MESSAGE, $lang['Attribute_Edited'] . '<br /><br />' . $message);
break;
//-- fin mod : quick title edition ---------------------------------------------


Mon problème est le suivant : le $topic_poster a bien la valeur souhaitée (vérifiée par un echo au début et à la fin de mon script), mais mes 2 requêtes sur la BD ne se font pas ! Pas de messages d'erreur et la fonction quick little edition (attribute) continue de façon normale... juste mes 2 requêtes qui ne modifient pas la BD ! Pourtant, si j'effectue la même procédure en langage SQL, tout est nickel et fonctionne !

Si quelqu'un a une idée ? Merci d'avance à tous !
Configuration: Windows XP
Internet Explorer 7.0

12 réponses

  1. oui, gros pb ! Disque Dur sur serveur fichu ! On va tenter de remettre en ligne du "temporaire"....
    0
    1. Si il fallait un ne firmware, il n'y a pas une adresse alternative?? ou une personne à contacter???
      0
      1. bonjour
        hier le site fonctionnait
        Ils transfert aujourd hui et normalement demain ca devrait refonctionné
        J ai eut le temps de prendre le dernier firm le 021
        bonne journée
        0
    2. merci de me (nous) rassurer
      A tres bientot
      0
      1. Bonjour,
        Content de te voir ici !
        Oui, hélas, gros problèmes de serveurs chez notre hébergeur : réparations en cours, mais très long....
        A bientôt,
        0
        1. Bonjour

          il n y a plus d acces à la FTE team depuis deux jours
          est ce normal ?
          merci
          0
          1. salut il n y a plus d acces à la FTE team merci
            0
          2. @psg85C est revenu
            Bonne journée
            0
          3. @psg85excuse
            juste le site
            pas d accès au forum
            je pense qu il faut patienter
            0
          4. @psg85re bonjour
            ca remarche
            bonne journée à toi
            0
        2. Aucun souci, que du contraire ! Evidemment, il faudra un peu arranger cela, au niveau de la condition de l'attribut (mettre une variiable définie par l'utilisateur à la place du if ($attribute_id == 9 ), puisque, chez moi, c'était 9 et aussi du ranks (rang) : VALUES (11024,$topic_poster,0)";
          que j'ai bien sûr personnalisé à mon forum.

          PS : je suis en 1.6.2a !
          http://forum.fte-team.com/fteteam.php

          Bien cordialement aussi,
          0
          1. Intéressant, et pas bête du tout en effet ^^.
            Est-ce que cela vous dérange que je propose votre requête, sous forme d'un addon afin qu'elle puisse servir à d'autres personnes éventuellement ? ;).
            Cordialement.
            ABDev, OxyGen Powered

            PS : Pensez à vous mettre à jour sur la version 1.6.2a, qui corrige une faille de sécurité ;).
            0
            1. Bonjour et félicitations pour votre MOD qui, soit dit en passant, est SUPER !

              Ce que je voulais faire et ai réussi, grâce aussi à le Père qui m'a rappelé que j'avais oublié de faire les requêtes :

              j'ai utilisé, dans mes forums, l'attribut n°9 comme suit "Activé par..." : ainsi mes modérateurs indiquent par ce biais qu'ils ont activé le compte d'un de mes membres. Mon ajout permet que, dès qu'ils l'ont donc activé, ce membre soit placé automatiquement dans un groupe intitulé "Membres Activés" (ce qui leur donne, dans leur pseudo, une couleur différente), et aussi, automatiquement, qu'ils aient le rang de "Membre Activé" (ce qui apparaîtra ainsi en dessous de leur pseudo, dans le forum) !

              Voilou : j'espère que tu as compris...

              Bien cordialement,
              0
              1. Bonjour pottepei,
                Je suis l'un des deux auteurs du MOD phpBB que vous avez installé. Juste par curiosité, votre requête est censée quoi ?
                Cordialement
                ABDev, OxyGen Powered
                0
                1. Merci à toi : j'ai compris et réussi !

                  J'ai donc bien rajouté dans le script les 2 requêtes ce qui donne :

                  //-- mod : quick title ziever début -------------------------------------------------
                  if ($attribute_id == 9 )
                  {
                  $result = mysql_query("SELECT topic_poster
                  FROM phpbb_topics
                  WHERE topic_id = $topic_id");
                  if (!$result)
                  {
                  echo 'Impossible d\'exécuter la requête : ' . mysql_error();
                  exit;
                  }
                  $row = mysql_fetch_row($result);
                  $topic_poster = intval($row[0]);
                  $sql = "UPDATE phpbb_users
                  SET user_rank = 4
                  WHERE user_id = $topic_poster";
                  $db->sql_query($sql);
                  $sql = "INSERT INTO phpbb_user_group (group_id, user_id, user_pending)
                  VALUES (11024,$topic_poster,0)";
                  $db->sql_query($sql);
                  }
                  //-- mod : quick title ziever fin ---------------------------------------------------
                  0
                  1. merci, ok pour l'éponge, et sorry !

                    Oui, cela concerne le texte en gras effectivement ! Pourtant, dans le gras, je fais bien une requête (tout au début) qui me donne bien la valeur du $topic_poster ($row = mysql_fetch_row($result); $topic_poster = intval($row[0]);). Aurais-je oublié quelque chose pour le UPDATE et le INSERT INTO ?

                    Merci de ton aide,
                    0
                    1. Bonjour

                      Tu parles des 2 requêtes dans la partie en gras ?!?!?!?!?!?!
                      Mais tu ne fais pas de requête !
                      Tu mets le texte d'une requête dans $sql mais ensuite tu ne fais pas de $db->sql_query($sql)

                      Au passage, c'est l'éponge que tu jettes. Quand tu jettes ton gant, c'est pour provoquer quelqu'un en duel.
                      0