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

Langage PHP Discussion :

Une fonction que j'ai définie ne fonctionne pas dans une autre fonction


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Une fonction que j'ai définie ne fonctionne pas dans une autre fonction
    Bonjour, je crée une fonction dans laquelle je fais apelle à une fonction perso, mais elle ne semble pas fonctionner . Voici mes codes

    Le message d’erreur
    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /appli/projects/pogefo1/apache_2.2.11/htdocs/pogefo1/pogefo3/pogefo/commun/sql.inc.php on line 87
    La fonction que j'utilise sql.inc.php on line 87) (je sais que mysql est déprécié :p)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?
    function sql_executer($p_connexion, $p_requete) {
    	mysql_query("SET NAMES UTF8");
    	if ($resultat = mysql_query($p_requete, $p_connexion))
    	return $resultat;
    	else
    	return sql_erreur(4, $p_requete);
    }
    Celle que je créé
    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
    <?
    function affficheLoc($id, $class, $name, $onchange, $tb1, $coma=null,  $tb2=null, $where=null){?>
    	<select class="<?php echo $class; ?>"  name="<?php echo $name; ?>" id="<?php echo $id; ?>" onChange="<?php echo $onchange; ?>">
    		<option value="">--------------------</option>
    		<?php 
    		$query="SELECT DISTINCT ".$tb1." ".$coma." ".$tb2." FROM tb_donnees ".$where."";//die($query);
    		$result=sql_executer($connexion,$query);
    		while($donnees=mysql_fetch_assoc($result)){
    			$dtb1=$donnees['{$tb1}'];//die($dtb1);
    			$dtb2=$donnees['{$tb2}'];
    			?>
    			<option value="<?php echo $dtb1." "; ?>"
    			<?php if(isset($_POST['nni']) && $$tb1==$dtb1){ ?>
    				selected="selected"
    			<?php } ?> 
    			><?php echo $dtb1; ?> (<?php echo " ".$dtb2; ?>)</option>
    		<?php } ?> 
    	</select> 
    <?php }
    Dernière modification par Bovino ; 28/05/2013 à 10h24. Motif: Balise [quote] pour les messages d'erreur

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 201
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 201
    Points : 8 426
    Points
    8 426
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	mysql_query("SET NAMES UTF8");
    	if ($resultat = mysql_query($p_requete, $p_connexion))
    Pourquoi utilises-tu $p_connexion pour l'un et pas pour l'autre ? Ou inversement.

    La bdd est bien ouverte au moment où tu utilises cette fonction ?

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    $connexion n'existe pas dans affficheLoc()

    Quand tu développes affiche bien toutes les erreurs, ce cas doit te soulever une erreur NOTICE pour utilisation d'une variable non définie.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	mysql_query("SET NAMES UTF8");
    	if ($resultat = mysql_query($p_requete, $p_connexion))
    Pourquoi utilises-tu $p_connexion pour l'un et pas pour l'autre ? Ou inversement.

    La bdd est bien ouverte au moment où tu utilises cette fonction ?
    oui est déclarée de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $connexion=sql_connecter;
     //dans mon index par où passent tous mes scripts
    // cette fonction me connecte a la db
    Il n'y a pas d'autres messages d'erreurs .

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    $connnexion est déclarée dans mon index par où passent tous mes scripts
    Il faut la rendre globale dans ta fonction alors.

  6. #6
    Invité
    Invité(e)
    Par défaut Pas de soluce
    Merci de votre aide, ce point est résolu mais j'ai un autre pépin , je tente d'abord de le résoudre par moi même avent de revenir vers vous ou de marquer la conversation comme étant résolue !
    Dernière modification par Invité ; 29/05/2013 à 08h44.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bon ben, après recherches et tests je ne parviens pas à utiliser les variables générées dans la fonction.

    la 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
     
    function DefPagination($mppage, $table, $where) {
    	$messagesParPage=$mppage;
    	global $connexion;
    	global $nombreDePages;
    	global $pageActuelle;
     
    	$req="SELECT  COUNT(*) AS total FROM ".$table." WHERE ".$where."";//printf($req);
    	$res=sql_executer($connexion, $req);
    	$donnees_total=mysql_fetch_assoc($res); 
    	$total=$donnees_total['total']; 
    	$nombreDePages=ceil($total/$messagesParPage);
     
    	if(isset($_GET['page'])){
    	     $pageActuelle=intval($_GET['page']);
     
    	     if($pageActuelle>$nombreDePages){
    	          $pageActuelle=$nombreDePages;
    	     }
    	}
    	else{
    	     $pageActuelle=1; 
    	}
    	$premiereEntree=($pageActuelle-1)*$messagesParPage;
    	return $premiereEntree;
    }
    le script dans une autre page
    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
     
    <?php
    		$premiereEntree=0;
    		$messagesParPage=0;		
    		$where=$crit.$champs;
    		DefPagination(10, "tb_donnees", $where);	
    /*****************************************************************************************/
    ?>		
    		<table class="gf_nr">
    			<tr>				
    				<th>Nom et prénom</th>
    				<th>NNI</th>
    				<th>Emploi</th>
    				<th>Plage</th>
    				<th>Gf</th>
    				<th>Date départ souhaitée</th>		
    				<th>Date départ prévue</th>
    				<th>Projet pro</th>
    			</tr> 
     
    			<?php 
     
    			$req="SELECT * FROM tb_donnees, tb_donnees_eaap  WHERE ".$crit.$champs." AND tb_donnees_eaap.nni=tb_donnees.nni order by date_ivd_s ASC LIMIT $premiereEntree, $messagesParPage "; printf($req);
    			$result=sql_executer($connexion,$req);							
    			while($donnees=sql_lire_ligne_objet($result)){?>			
    					<tr>						
    						<td><a href="index.php?join=fiche&id=<?php echo $donnees->nni; ?>" title=""><?php echo $donnees->nom_prenom; ?></a></td>
    						<td><?php echo $donnees->nni; ?></td>
    						<td><?php echo $donnees->emploi_lib; ?></td>
    						<td><?php echo $donnees->position_m3e; ?></td>
    						<td><?php echo $donnees->gf; ?></td>
    						<td><?php echo $donnees->date_ivd_s; ?></td>
    						<td><?php echo $donnees->date_ivd_p; ?></td>
    						<td></td>		
    					</tr>	
    			<?php } ?>			
    		</table>
    Les deux variables globales sont vides dans mon script apres la fonction

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu n'as pas défini $premiereEntree
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $premiereEntree = DefPagination(10, "tb_donnees", $where);

  9. #9
    Invité
    Invité(e)
    Par défaut
    Merci de l'orientation, j'ai fini par trouver la solution, voici le résultat

    la 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
    function DefPagination($mppage, $table, $where) {
    	$messagesParPage=$mppage;
    	global $connexion;
    	global $nombreDePages;
    	global $pageActuelle;
    	global $premiereEntree;
     
    	$req="SELECT  COUNT(*) AS total FROM ".$table." WHERE ".$where."";//printf($req);
    	$res=sql_executer($connexion, $req);
    	$donnees_total=mysql_fetch_assoc($res); 
    	$total=$donnees_total['total']; 
    	$nombreDePages=ceil($total/$mppage);
     
    	if(isset($_GET['page'])){
    	     $pageActuelle=intval($_GET['page']);
     
    	     if($pageActuelle>$nombreDePages){
    	          $pageActuelle=$nombreDePages;
    	     }
    	}
    	else{
    	     $pageActuelle=1; 
    	}
    	$premiereEntree=($pageActuelle-1)*$mppage;
    	return $premiereEntree;
    }

    le script d'appel
    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
    <?php 
     
    		$premiereEntree=0;
    		$pageActuelle=0;
    		$nombreDePages=0;
    		$mppage=10;
    		$where=$crit.$champs;
    		DefPagination($mppage, "tb_donnees", $where);	
     
    ?>		
    		<table class="gf_nr">
    			<tr>				
    				<th>Nom et prénom</th>
    				<th>NNI</th>
    				<th>Emploi</th>
    				<th>Plage</th>
    				<th>Gf</th>
    				<th>Date départ souhaitée</th>		
    				<th>Date départ prévue</th>
    				<th>Projet pro</th>
    			</tr> 
     
    			<?php 
     
    			$req="SELECT * FROM tb_donnees, tb_donnees_eaap  WHERE ".$crit.$champs." AND tb_donnees_eaap.nni=tb_donnees.nni order by date_ivd_s ASC LIMIT $premiereEntree, $mppage "; printf($req);
    			$result=sql_executer($connexion,$req);							
    			while($donnees=sql_lire_ligne_objet($result)){?>			
    					<tr>						
    						<td><a href="index.php?join=fiche&id=<?php echo $donnees->nni; ?>" title=""><?php echo $donnees->nom_prenom; ?></a></td>
    						<td><?php echo $donnees->nni; ?></td>
    						<td><?php echo $donnees->emploi_lib; ?></td>
    						<td><?php echo $donnees->position_m3e; ?></td>
    						<td><?php echo $donnees->gf; ?></td>
    						<td><?php echo $donnees->date_ivd_s; ?></td>
    						<td><?php echo $donnees->date_ivd_p; ?></td>
    						<td></td>		
    					</tr>	
    			<?php } ?>			
    		</table>
    Dernière modification par Bovino ; 29/05/2013 à 10h39. Motif: Inutile de citer un message pour y répondre !!!

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce que tu fais n'est pas logique : ta fonction fait un retour mais tu ne l'utilises pas.

  11. #11
    Invité
    Invité(e)
    Par défaut
    oui effectivement le return est de trop c’était dans le cadre de mes tests , merci

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

Discussions similaires

  1. [AC-2010] fonctions Droite et Gauche qui ne fonctionnent pas dans une requête
    Par samy35 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/03/2014, 10h14
  2. Réponses: 6
    Dernier message: 22/05/2007, 09h55
  3. [MySQL] Condition ne fonctionnant pas dans une classe
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/02/2007, 16h38
  4. La fonction CurrentDb() ne fonctionne pas dans une requête
    Par Sébastien Le Goyet dans le forum Access
    Réponses: 8
    Dernier message: 24/11/2005, 17h46
  5. Réponses: 1
    Dernier message: 27/10/2005, 21h48

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