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 à 11h24. Motif: Balise [quote] pour les messages d'erreur

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 360
    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
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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
    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.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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 à 09h44.

  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
    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);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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 à 11h39. 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
    Par défaut
    Ce que tu fais n'est pas logique : ta fonction fait un retour mais tu ne l'utilises pas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  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, 11h14
  2. Réponses: 6
    Dernier message: 22/05/2007, 10h55
  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, 17h38
  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, 18h46
  5. Réponses: 1
    Dernier message: 27/10/2005, 22h48

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