Pbs UPDATE et INSERT dans un script PHP !

Résolu/Fermé
pottepei Messages postés 19 Date d'inscription dimanche 5 novembre 2006 Statut Membre Dernière intervention 2 février 2014 - 19 déc. 2007 à 13:45
 padu1 - 2 mai 2008 à 16:06
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

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 dimanche 5 novembre 2006 Statut Membre Dernière intervention 2 février 2014
19 déc. 2007 à 15:06
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 dimanche 5 novembre 2006 Statut Membre Dernière intervention 2 février 2014
19 déc. 2007 à 15:46
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 samedi 22 décembre 2007 Statut Membre Dernière intervention 17 mai 2010
22 déc. 2007 à 17:18
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 dimanche 5 novembre 2006 Statut Membre Dernière intervention 2 février 2014
22 déc. 2007 à 18:31
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 samedi 22 décembre 2007 Statut Membre Dernière intervention 17 mai 2010
22 déc. 2007 à 21:45
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 dimanche 5 novembre 2006 Statut Membre Dernière intervention 2 février 2014
22 déc. 2007 à 23:49
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
Bonjour

il n y a plus d acces à la FTE team depuis deux jours
est ce normal ?
merci
0
salut il n y a plus d acces à la FTE team merci
0
padu1 > psg85
2 mai 2008 à 07:39
C est revenu
Bonne journée
0
padu1 > psg85
2 mai 2008 à 07:42
excuse
juste le site
pas d accès au forum
je pense qu il faut patienter
0
padu1 > psg85
2 mai 2008 à 16:06
re bonjour
ca remarche
bonne journée à toi
0
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
merci de me (nous) rassurer
A tres bientot
0
Si il fallait un ne firmware, il n'y a pas une adresse alternative?? ou une personne à contacter???
0
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 dimanche 5 novembre 2006 Statut Membre Dernière intervention 2 février 2014
1 mai 2008 à 17:58
oui, gros pb ! Disque Dur sur serveur fichu ! On va tenter de remettre en ligne du "temporaire"....
0