Petit prob de fonction !

Répondre
Lefounard
le 06/02/2005 à 22:00
Lefounard
Bonjour,
Voila j'ai un script avec suppression de news , et kan l'admin supprime la news ca enleve 1 au nombre de news posté par les posteur. Or j'execute : j'ai aucun message d'erreur, la news est bien supprimer mais le nombre de post reste le meme !
voila le code qui appelle la fonction incre_hit :
  1. <?php
  2. //fonction d'incrémentation du nombre de news du posteur !
  3. function incre_hit($rub,$pseudo,$do)
  4. {
  5. connect($t2);
  6. $sql= 'SELECT '.$rub.' FROM site_membres WHERE pseudo="'.$pseudo.'"';
  7. $req= mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  8. $data= mysql_fetch_array($req);
  9. if($do==plus){$nb=$data[''.$rub.'']+1;}
  10. if($do==moins){$nb=$data[''.$rub.'']-1;}
  11. disconnect($req);

  12. connect($t2);
  13. $sql = 'UPDATE site_membres SET
  14. '.$rub.'="'.$nb.'"
  15. WHERE pseudo="'.$pseudo.'"';

  16. mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  17. mysql_close ();
  18. }
  19. ?>


Et voici le script qui appelle la fonction :
  1. <?php
  2. elseif($_GET['do']==dl)
  3. {
  4. if($_SESSION['statut']==1 || $_SESSION['statut']==2)
  5. {
  6. supp($nw,$_GET['id']);

  7. connect($nwc);
  8. $sql ='DELETE from site_news_comentr WHERE Id_news="'.$_GET['id'].'"';
  9. mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  10. mysql_close();


  11. connect($nw);
  12. $sql2 = "SELECT * FROM site_news WHERE id='".$_GET['id']."'";
  13. $req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
  14. $data = mysql_fetch_array($req2);
  15. $pseudo=$data['auteur'];
  16. mysql_close();
  17. incre_hit("nb_news",$pseudo,"moins");


  18. echo "<meta http-equiv='refresh' content='0; url=admin_news.php?debut=yes'>";
  19. }
  20. else
  21. {
  22. echo "Vous n'avez pas les droits de suppression de cet new !";
  23. }
  24. }

  25. ?>


Merci de votre aide !
Ciao,
I am singing in the rain , I am happy again !!
celionor
le 06/02/2005 à 22:12
celionor
  1. <?php

  2. @mysql_query("UPDATE `table_news` SET `nb_news` = (nb_news - 1) WHERE pseudo = "$pseudo" LIMIT 1");

  3. ?>


Voila la requete de base pour enlever 1 du nombre de news poster.

A toi de le mettre en place dans ton script.
bibi
le 06/02/2005 à 22:42
bibi
celionor un conseil
il vaut mieux mettre un or die et voir l'erreur pour la corriger plutot que de mettre un @ devant et de ne pas comprendre prkoi ca ne fonctionne pas :)
commit suicide
Lefounard
le 06/02/2005 à 23:15
Lefounard
celionor, ton truc n'est pas car il fait pas l'incrémentation !
Merci de votre aide,
I am singing in the rain , I am happy again !!
celionor
le 07/02/2005 à 08:40
celionor
Lefounard > A toi de l'adapter a ta sauce..
Pour l'incrémentation, tu fais +1, tout simplement.

Bibi : ta réponse est judicieuse :)
vengeur002
le 07/02/2005 à 08:46
vengeur002
essai comme ca
  1. <?php
  2. if($do==plus){$nb=$data[''.$rub.'']+1;}
  3. elseif($do==moins){$nb=$data[''.$rub.'']-1;}
  4. disconnect($req);
  5. ?>
Lefounard
le 07/02/2005 à 14:29
Lefounard
C'est super tu m'apprends un truc ! J'ai deja fait mon incrementation ,as-tu lu mon premier message ?! non !
Ca marche toujours po !
Ciao,
I am singing in the rain , I am happy again !!
LA GLOBULE
le 07/02/2005 à 14:36
LA GLOBULE
Et si tu changeais ton :

if($do==plus){$nb=$data[''.$rub.'']+1;}
if($do==moins){$nb=$data[''.$rub.'']-1;}

En :

if($do=='plus'){$nb=$data[$rub]+1;}
if($do=='moins'){$nb=$data[$rub]-1;}

PS : quand tu utilises plein de fonctions qui ne sont pas de bases dans PHP, donne nous leur code, sinon, on ne peut pas imaginer ce qu'elles font.
Lefounard
le 07/02/2005 à 17:12
Lefounard
Salut,
J'ai quand meme fais les modifs préconiser par LA_GLOB or toujours comme avant j'ai ma fonction qui ne fonctionne pas en décrementation , elle marche bien en incrémentation !
Ca doit venir du morceau de code donner dans le premier message !
J'arrive pas trop a trouver la source du prob !
Quand je supprime une news aussi ca appelle la fonction avec pseudo du posteur de la news et ca devrait enlever 1 au nb de news poster deja par ce membre !

Ciao,
I am singing in the rain , I am happy again !!
LA GLOBULE
le 07/02/2005 à 17:19
LA GLOBULE
As tu essayé de debugger un peu ?

Fais des print_r($data), print_r($nb) dans ta fonction, avant et aprés l'incrémentation / décrémentation.
Et voit ce qu'il se passe.
Répondre
LoadingChargement en cours