IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

problème lors de l'appel d'une fonction [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 104
    Points
    104
    Par défaut problème lors de l'appel d'une fonction
    Bonsoir à tous,

    Je renconte un problème que je n'arrive pas à solutionner :

    J'ai une fonction qui incrémente un compte que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //incremente le compteur de vue du message
    	function ajoutCompteurVueMessage($iIdMessage){
     
    		$sSql = "
    			UPDATE
    				ma_table			SET 
    				nbre_vue = nbre_vue + 1
    			WHERE
    				id_message= $iIdMessage AND id_pere=0" ;
     
    		$bRequete = mysql_query($sSql) or die(mysql_error());
     
    	}
    ensuite je l'appelle comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if(isset($_REQUEST['id_discussion']) && (int)$_REQUEST['id_discussion'] !='' ){
     
    	//j'ajoute le clic de la visite
    	$sNomCookie = 'message' . $_REQUEST['id_discussion'];
    	if (!isset ($_COOKIE[$sNomCookie])){
    		$oMaClasse->ajoutCompteurVueMessage($_REQUEST['id_discussion']);
    		setcookie('message' . $_REQUEST['id_discussion'], $_REQUEST['id_discussion']);
    	}
    }
    Le problème c'est que ca me mets +2 ou +3 à chaque fois.

    Je comprends pas y'a pas de boucles...
    Faut-il que je fasse un SELECT compteur puis un UPDATE compteur +1 ?
    Cette méthode à toujours marché jusqu'ici (je viens de passer sur Mysql5)

    Merci à vous

  2. #2
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //incremente le compteur de vue du message
    	function ajoutCompteurVueMessage($iIdMessage){
     
    // Attention aux guillemets, ca vient surement de la ...
    		$sSql = "UPDATE `ma_table` SET `nbre_vue` = `nbre_vue` + 1 WHERE `id_message`= ".$iIdMessage." AND `id_pere`=0" ;
     
    // pas de retour donc pas d'affectation de variable, ca sert a rien tu perds du temps
    		mysql_query($sSql) or die(mysql_error());
     
    	}

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 104
    Points
    104
    Par défaut
    Désolé max44410 pour cette réponse tardive, et merci de tes commentaires.

    Mais pourquoi les guillements pourraient géner ma requete ?

    Qu'y a t-il de génant à faire des fonctions qui ne retournent rien ? en quoi le délai d'execution est ralongé ?

    Merci

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 104
    Points
    104
    Par défaut
    max44410, alors la chapeau, je suis developpeur PHP depuis pas mal de temps, et tu m'as scié !
    Bien que je n'ai l'explication, le fait de retourner une variable( booléenne) depuis ma fonction et de tester en retour qu'elle soit bien la, fait que mon probleme est reglé....

    Si tu as l'expliation, je suis preneur, car la je ne vois pas.

    Bon en tout cas, pour ceux qui passeraient et qui veulent la soluce à mon probleme :
    j'ai ajouté ca à ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($bRequete == TRUE){
    			$bRetour = TRUE ;
    		}else{
    			$bRetour = FALSE ;
    		}
    		return $bRetour ;
    et ensuite je teste le retour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (!isset ($_COOKIE[$sNomCookie])){
    		$bRetour = $oMaClasse->ajoutCompteurVueMessage($_REQUEST['id_discussion']);
    if($bRetour == TRUE){
    		setcookie('message' . $_REQUEST['id_discussion'], $_REQUEST['id_discussion']);
    	}}

  5. #5
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function ajoutCompteurVueMessage($iIdMessage){
     
    // Attention aux guillemets, ca vient surement de la ...
    	$sSql = "UPDATE `ma_table` SET `nbre_vue` = `nbre_vue` + 1 WHERE `id_message`= ".$iIdMessage." AND `id_pere`=0" ;
     
    // pas de retour donc pas d'affectation de variable, ca sert a rien tu perds du temps
    	return mysql_query($sSql);
     
    	}
    Plus rapide encore ...
    Je ne pense pas que cela vienne du retour... je ne me souvient pas que l'on soit obliger de retourner une valeur dans une fonction (fonction sans retour = procedure). Mais bon si ca fonctionne ... c'est le principale.

    le truc que je te disais c'était que ca ne servait a rien d'affecter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bRequete = mysql_query($sSql) or die(mysql_error());
    apres tu en faisais quoi de $bRequete ?? rien ?? donc ca sert à rien d'utiliser une variable inutilement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query($sSql) or die(mysql_error());
    ceci suffisait.

    Voila, content que ton problème soit réglé.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 213
    Points : 104
    Points
    104
    Par défaut
    AHhhhhhhhhhhhh Ok, je comprends ce que tu voulais dire maintenant.
    J'e pense avoir compris la cause de pb.

    j'ai l'impression que si je ne teste pas le retour, la fonction peut etre lancée plusieurs fois en fonction de la vitesse de chargement de la page.
    ca me parait un peu bizarre, mais c'est a priori la solution la plus plausible.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2000] Problème lors de l'appel d'une fonction
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/02/2014, 13h18
  2. Problème lors de l'appel d'une fonction
    Par FATENMRABET dans le forum Général Java
    Réponses: 4
    Dernier message: 19/09/2013, 13h55
  3. Problème lors de l'appel d'une fonction Tsql
    Par mobscene dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 23/07/2007, 15h56
  4. Réponses: 3
    Dernier message: 01/05/2007, 16h07
  5. [POO] Problème lors de l'appel d'une propriété d'un objet.
    Par akecoocoo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2005, 08h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo