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 :

function qui marche pas [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    458
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 458
    Par défaut function qui marche pas
    Bonjours,

    j'ai un problème avec ma fonction je sais pas si c'est le paramètre que je mets ou si c'est comme j'ai fait ma fonction qui marche pas???

    Là je crée ma fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
     
    function stats_pays($condition) {
     
     
    $prefixe_query=mysql_query("SELECT sites_encodage FROM sites");
    while ($prefixe_values=mysql_fetch_array($prefixe_query)) {
    $prefixe=$prefixe_values["sites_encodage"].'_';
    }
     
     
    	// REQUETE 1 : 
    	$query = "SELECT substr(customers_from, 1, 5) AS Origin, 
           COUNT(customers_id) AS effectif_vg
    FROM ".$prefixe."customers cu
    WHERE customers_from NOT LIKE '<%'
    " . $condition . "
    
    GROUP BY Origin ";
    	$result_vg = mysql_query($query) ;
     
     
     
    while ($row = mysql_fetch_array($result_vg)) 
    {  
     
     
    	// REQUETE 2 : 		
    			$query_produit = 
    					" SELECT 
    					    count(co.commandes_status) AS command,
    					   AVG(co.commandes_montant) AS Mmc 
    						FROM ".$prefixe."customers cu
    						INNER JOIN ".$prefixe."commandes co   
    						ON cu.customers_id=co.customers_id 
    						WHERE  co.commandes_status='1'
    						and   customers_from LIKE '{$row['Origin']}%' " . $condition . "
    						 ";
     
    						if ($row['Origin'] == '') {
    			$query_produit = " SELECT 
    					    count(co.commandes_status) AS command,
    					   AVG(co.commandes_montant) AS Mmc 
    						FROM ".$prefixe."customers cu
    						INNER JOIN ".$prefixe."commandes co  
    						ON cu.customers_id=co.customers_id 
    						WHERE   co.commandes_status='1'
    						and   customers_from = '' " . $condition . "
    						 ";
    													}
     
     
    		$result = mysql_query($query_produit) ;	
     
     
    	while ($row1 = mysql_fetch_array($result)) 
    	{	
    }			
    ?>
    et là je la demande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php stats_pays($condition); ?>
    et a la suite je met l'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     <tr>
    			<td style="background-color:#CCCCCC;">  </td>
                <td style="text-align:center;"> <?php echo $row['Origin'] ?> </td>
    			 <td style="text-align:center;"> <?php echo $row['effectif_vg'] ?> </td>
    			 <td style="text-align:center;"> <?php echo $row1['command'] ?> </td>
                 <td style="text-align:center;"><?php echo round(($row1['command'] / $row['effectif_vg']) * 100, 2); ?> % </td>
    			 <td style="text-align:center;"> <?php echo round($row1['command']*$row1['Mmc']) ?>  &euro;  </td>
                 <td style="text-align:center;"> <?php echo round($row1['Mmc'] ,2) ?>   &euro; </td>
     
     
    <?php
    } 	
    	}
    ?>
    </tr>
    </table>
    et quand je fais sa sa me met une page blanche??


    si jamais j'ai mis dans mes paramètre de ma fonction function stats_pays($condition)

    $condition car je doit prendre cette infos dans
    if (isset($date_au) && $date_au !='') {
    $condition .= " AND customers_date_inscription<='" . $date_au . "' ";
    }

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Par défaut
    Bonjour,

    A priori je dirais que tu ne recuperes pas le resultat de ta fonction donc les variables que tu tentes d'afficher sont vides (=>page blanche).
    Je suppose que la derniere boucle de ta fonction devrait justement servir a remplir une variable que tu recuperes ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php $mavariable=stats_pays($condition); ?>
    Et c'est cette variable qu'il faut afficher.

    Peut-etre serait il plus sympa pour ceux qui cherchent à t'aider que tu mettes un peu quoi sert ta fonction...etc

    Bon courage

  3. #3
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    458
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 458
    Par défaut
    Bonjour et merci de ton aide.

    excuse moi pour le manque de précision voila j'ai crée un affichage qui me donne le résultat d'une base mais je doi éxecuté le même script pour plusieur autre base aulieu de copier collé tou le code que je vais mettre plus bas je veu le mettre en fonction pour pouvoir l'appelé plusieurs fois mon scripte de base est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    <?php 
    $date_du = $_POST['Du'];
    $date_au = $_POST['Au'];
     
    	$condition = "";
       if (isset($date_du) && $date_du !='') {
                $condition .= " AND customers_date_inscription>='" . $date_du . "' ";
             }
     
          if (isset($date_au) && $date_au !='') {
                 $condition .= " AND customers_date_inscription<='" . $date_au . "'  ";
            }
    ?>
     
    <table border="1">
    		<tr style="text-align: center; background-color:#FFAD5B; font-weight:bold;">
    			<th> Pays </th>
                <th> Prestataire </th>
    			<th> V G  </th>
    			<th> Commandes </th>
                <th> Tx Conv. </th>
                <th> C.A </th>
                <th> Mmc </th>
    		</tr>
     
    <?php
     
     
     
    $prefixe_query=mysql_query("SELECT sites_encodage FROM sites");
    while ($prefixe_values=mysql_fetch_array($prefixe_query)) {
    $prefixe=$prefixe_values["sites_encodage"].'_';
    }
     
     
    	// REQUETE 1 : 
    	$query = "SELECT substr(customers_from, 1, 5) AS Origin, 
           COUNT(customers_id) AS effectif_vg
    FROM ".$prefixe."customers cu
    WHERE customers_from NOT LIKE '<%'
    " . $condition . "
    
    GROUP BY Origin ";
    	$result_vg = mysql_query($query) ;
     
     
     
    while ($row = mysql_fetch_array($result_vg)) 
    {  
     
     
    	// REQUETE 2 : 		
    			$query_produit = 
    					" SELECT 
    					    count(co.commandes_status) AS command,
    					   AVG(co.commandes_montant) AS Mmc 
    						FROM ".$prefixe."customers cu
    						INNER JOIN ".$prefixe."commandes co   
    						ON cu.customers_id=co.customers_id 
    						WHERE  co.commandes_status='1'
    						and   customers_from LIKE '{$row['Origin']}%' " . $condition . "
    						 ";
     
    						if ($row['Origin'] == '') {
    			$query_produit = " SELECT 
    					    count(co.commandes_status) AS command,
    					   AVG(co.commandes_montant) AS Mmc 
    						FROM ".$prefixe."customers cu
    						INNER JOIN ".$prefixe."commandes co  
    						ON cu.customers_id=co.customers_id 
    						WHERE   co.commandes_status='1'
    						and   customers_from = '' " . $condition . "
    						 ";
    													}
     
     
    		$result = mysql_query($query_produit) ;	
     
     
    	while ($row1 = mysql_fetch_array($result)) 
    	{	
     
    ?>
    	 <tr>
    			<td style="background-color:#CCCCCC;">  </td>
                <td style="text-align:center;"> <?php echo $row['Origin'] ?> </td>
    			 <td style="text-align:center;"> <?php echo $row['effectif_vg'] ?> </td>
    			 <td style="text-align:center;"> <?php echo $row1['command'] ?> </td>
                 <td style="text-align:center;"><?php echo round(($row1['command'] / $row['effectif_vg']) * 100, 2); ?> % </td>
    			 <td style="text-align:center;"> <?php echo round($row1['command']*$row1['Mmc']) ?>  &euro;  </td>
                 <td style="text-align:center;"> <?php echo round($row1['Mmc'] ,2) ?>   &euro; </td>
     
     
    <?php
    } 	
    	}
    ?>
    </tr>
    </table>
    mais je voulais isolé le deuxième <?php avec les requettes/ ==> pour le mettre en fonction et après pouvoir l'utilisé plusieurs fois.

    merci de t'être penché sur mon problème j'espère que ces quelque renseignement on pu t'aidé

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Par défaut
    Merci de tes reponses c'est plus agréable!
    Effectivement faire une fonction est toujours mieux.
    En fait, je pense que tu devrais faire l'affichage dans ta fonction et l'appeler ensuite à chaque fois.

    Donc en gros tu as :
    -la definition de ta fonction
    -le remplissage de ta variable $condition
    -l'appel de ta fonction
    et voila pas d'affichage après l'appel puisque tu affiches dans la fonction.

    Dis moi si je n'ai pas été très claire!

  5. #5
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    458
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 458
    Par défaut
    oui c'est sa

    sauf que $condition c'est le resultat de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $condition = "";
       if (isset($date_du) && $date_du !='') {
                $condition .= " AND customers_date_inscription>='" . $date_du . "' ";
             }
    et dans ma requette je prend les dates
    une fois que la requette est exécuté je fais l'appel de la fonction
    et voila pas d'affichage après l'appel puisque tu affiches dans la fonction=> comment sa??

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Par défaut
    Tu fais les "echo" dans le corps de ta fonction.
    Exemple : une fonction helloWorld :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function helloWorld()
    {
         echo "bonjour le monde";
    }
     
    helloWorld();
    helloWorld();
    Ce qui affichera 2 fois "bonjour le monde".

  7. #7
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    458
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 458
    Par défaut
    grace a ton idée j'ai beaucoups avencé et j'ai trouvé la solution

    j'ai fais comme celà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    <?php
     
    function stats_pays($condition)
    {
     
     
     
    $prefixe_query=mysql_query("SELECT sites_encodage FROM sites");
    while ($prefixe_values=mysql_fetch_array($prefixe_query)) {
    $prefixe=$prefixe_values["sites_encodage"].'_';
    }
     
     
    	// REQUETE 1 : 
    	$query = "SELECT substr(customers_from, 1, 5) AS Origin, 
           COUNT(customers_id) AS effectif_vg
    FROM ".$prefixe."customers cu
    WHERE customers_from NOT LIKE '<%'
    " . $condition . "
    
    GROUP BY Origin ";
     
    	$result_vg = mysql_query($query) ;
     
     
     
    while ($row = mysql_fetch_array($result_vg)) 
    {  
     
     
     
     
    	// REQUETE 2 : 		
    			$query_produit = 
    					" SELECT 
    					    count(co.commandes_status) AS command,
    					   AVG(co.commandes_montant) AS Mmc 
    						FROM ".$prefixe."customers cu
    						INNER JOIN ".$prefixe."commandes co   
    						ON cu.customers_id=co.customers_id 
    						WHERE  co.commandes_status='1'
    						and   customers_from LIKE '{$row['Origin']}%' " . $condition . "
    						 ";
     
    						if ($row['Origin'] == '') {
    			$query_produit = " SELECT 
    					    count(co.commandes_status) AS command,
    					   AVG(co.commandes_montant) AS Mmc 
    						FROM ".$prefixe."customers cu
    						INNER JOIN ".$prefixe."commandes co  
    						ON cu.customers_id=co.customers_id 
    						WHERE   co.commandes_status='1'
    						and   customers_from = '' " . $condition . "
    						 ";
    													}
     
     
    		$result = mysql_query($query_produit) ;	
     
     
    	while ($row1 = mysql_fetch_array($result)) 
    	{	
     
    ?>
     
    <tr>
    			<td style="background-color:#CCCCCC;">  </td>
                <td style="text-align:center;"> <?php echo $row['Origin'] ?> </td>
    			 <td style="text-align:center;"> <?php echo $row['effectif_vg'] ?> </td>
    			 <td style="text-align:center;"> <?php echo $row1['command'] ?> </td>
                 <td style="text-align:center;"><?php echo round(($row1['command'] / $row['effectif_vg']) * 100, 2); ?> % </td>
    			 <td style="text-align:center;"> <?php echo round($row1['command']*$row1['Mmc']) ?>  &euro;  </td>
                 <td style="text-align:center;"> <?php echo round($row1['Mmc'] ,2) ?>   &euro; </td>
     
     
    <?php
    } 	
    	}
    } 
    ?>
    et après j'ai plus qu'a demandé ma fonction

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

Discussions similaires

  1. [AJAX] Function Ajax qui marche pas
    Par iwf-fr dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 29/05/2007, 20h42
  2. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50
  3. une comparaison qui marche pas.
    Par gandf dans le forum C++Builder
    Réponses: 7
    Dernier message: 16/02/2004, 15h59
  4. [LG]Split qui marche pas
    Par macluvitch dans le forum Langage
    Réponses: 3
    Dernier message: 30/11/2003, 18h19
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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