Pbs UPDATE et INSERT dans un script PHP !

Résolu
pottepei Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
 padu1 -
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 !
A voir également:

12 réponses

le père
 
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
pottepei Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
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
pottepei Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
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
ABDev Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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

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

Posez votre question
pottepei Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
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
ABDev Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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
pottepei Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
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
padu1
 
Bonjour

il n y a plus d acces à la FTE team depuis deux jours
est ce normal ?
merci
0
psg85
 
salut il n y a plus d acces à la FTE team merci
0
padu1 > psg85
 
C est revenu
Bonne journée
0
padu1 > psg85
 
excuse
juste le site
pas d accès au forum
je pense qu il faut patienter
0
padu1 > psg85
 
re bonjour
ca remarche
bonne journée à toi
0
pottepei
 
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
padu1
 
merci de me (nous) rassurer
A tres bientot
0
FoUnY
 
Si il fallait un ne firmware, il n'y a pas une adresse alternative?? ou une personne à contacter???
0
padu1
 
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
pottepei Messages postés 19 Date d'inscription   Statut Membre Dernière intervention  
 
oui, gros pb ! Disque Dur sur serveur fichu ! On va tenter de remettre en ligne du "temporaire"....
0