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 :

Probleme d'affichage du résultat de ma fonction php


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2006
    Messages : 41
    Points : 16
    Points
    16
    Par défaut Probleme d'affichage du résultat de ma fonction php
    Bonsoir,

    J'aurais une question tres particulière: je n'arriverai pas à l'expliquer comme ca donc je vous donne une exemple de code.

    Dans le fichier incription.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ...
    $nContenu="...<table>
                            <tr><td>
                                  ".listerTable()."
                            </td></tr>
                         </table>...";
    ...
    Dans le fichier fonction.inc.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    function listerTable()
    {
    //qui liste une table dans une liste déroulante avec un select
    }
    ...
    Le résultat est que j'ai une liste déroulante mais sans mes éléments de ma table. Et que le reste de ma page qui se trouve aussi bien en dessus qu'en dessous de la fonction dans inscription.php ne s'affiche pas.
    La fonction listerReference fonctionne tres bien en dehors.
    Est ce que vous pourriez m'aider? Je ne comprends pas pourquoi il n'y a que ma liste deroulante qui s'affiche.

    Merci d'avance Bouba83

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    en ayant mis le bout de code de ta fonction ca serait plus clair.
    ou encore mieux, le code source html...

    ta fonction listerTable, elle retourne une chaine de caractère ou alors elle fait des echos?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2006
    Messages : 41
    Points : 16
    Points
    16
    Par défaut
    bonjour,

    merci de m'avoir repondu.
    Voici le code html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
    <tr>
    <td class='obligatoire'>*&nbsp;</td>
    <td>
     "._UTILISATEURTYPE."
    </td>
    <td>:</td>
    <td>							
    		".ListerTable("idUtilisateur","ref_type_utilisateur")."
    </td>
    </tr>
    ...

    Voici le code de 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
     
    function ListerTable($idTable ,$sNameTable)
    {
    echo "<select id='userType' name='idTypeutilisateur'>
    	<option value='-1' selected></option>";
    	$sql ='SELECT '.$idTable.', '.$sLibelle.' FROM '.$sNameTable;
    	$oConn = new Connexion();
    	//$oConn->bConnect();	
    	$aRes = $oConn->aExecuter( $sql );
    	//aRes est un tableau à deux dimensions
    	foreach ($aRes as $i => $v)
    	{
    		foreach ( $v as $i2 => $val)
    		{
    		}
    		echo "<option value=".$aRes[$i][$idTable].">".$aRes[$i][$sLibelle]."</option>";
    	}
    	echo "</select>";
    }

  4. #4
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut foreach ne fait rien??
    Citation Envoyé par bouba83
    Voici le code de 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
     
    function ListerTable($idTable ,$sNameTable)
    {
            ....
    	foreach ($aRes as $i => $v)
    	{
    		foreach ( $v as $i2 => $val)
    		{
    		}
    		echo "<option value=".$aRes[$i][$idTable].">".$aRes[$i][$sLibelle]."</option>";
    	}
    	....
    }
    Il ne fait rien foreach ( $v as $i2 => $val)??

    Citation Envoyé par bouba83
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql ='SELECT '.$idTable.', '.$sLibelle.' FROM '.$sNameTable;
    Bienvenu dans le piège de la concaténation. Lisibilité avant tout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql ="SELECT $idTable, $sLibelle FROM $sNameTable";
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  5. #5
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut tests effectués???
    Est-ce que tu as fait des tests en plaçant des echos pour voir si tes variables sont bien définies et contiennent bien des informations
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2006
    Messages : 41
    Points : 16
    Points
    16
    Par défaut
    Ma fonction fonctionne parfaitement en dehors du code html.

    C des que je la mets dans le fichier inscription.php parmi le code html qu'elle pose probleme.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut est-ce que tu as fais les test?
    fais les tests au niveau de ton fichier qui appelle la fonction pour savoir si les variables ont bien du contenu.

    Peut-être est-ce un problème de portée des variables.
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2006
    Messages : 41
    Points : 16
    Points
    16
    Par défaut
    La liste est bien affichée mais la page n'affiche cette liste déroulante d'abord et apres le code html alors que le fonction se trouve au milieu du code html.
    Comment faire? Est ce l'appel de la fonction qui est mauvaise?

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    ta fonction fait des echo, donc elle ecrit directement sur la sortie
    ta table, tu l'ecris dans une variable où tu fais appel à la fonction.
    donc:
    - tu cree la table dans une varible
    - l'appel à la fonction envoie le code html de la liste
    - après tu affiche la table
    donc c'est normal, il faut modifier ta fonction pour qu'elle te retourne le code de la liste déroulante pour pouvoir le mettre dans une variable ou le rajouter au code de la table

    ou alors faire directement des echo pour le code de la table

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2006
    Messages : 41
    Points : 16
    Points
    16
    Par défaut
    ok j'ai compris le principe. Je vais donc ecrire le résultat de ma fonction dans une variable.
    Je ne sais pas encore comment je vais faire mais je vous tiens au courant.
    biz Bouba.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2006
    Messages : 41
    Points : 16
    Points
    16
    Par défaut
    Fonction.inc.php
    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
     
    ...
    $sContenu = "<select id='userType' name='idTypeutilisateur'>
    	<option value='-1' selected></option>";
    	$sSql ='SELECT '.$idTable.', '.$sLibelle.' FROM '.$sNameTable;
    	//echo $sSql;
    	$oConn = new Connexion();
    	//$oConn->bConnect();	
    	$aRes = $oConn->aExecuter( $sSql );
    	//aRes est un tableau à deux dimensions
    	foreach ($aRes as $i => $v)
    	{
    	$sContenu = $sContenu."<option value=".$aRes[$i][$idTable].">".$aRes[$i][$sLibelle]."</option>";
    	}
    	$sContenu = $sContenu ."</select>";
    	return $sContenu;
    Inscription.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <tr>
    	<td class='obligatoire'>*&nbsp;</td>
    	<td>
    		"._UTILISATEURTYPE."
    	</td>
    	<td>:</td>
    	<td>							
    		".$sRes = sListerTable("IdTypeutilisateur" ,"ref_type_utilisateur");"
    	</td>
    </tr>
    Le resultat est que le code html est affiché avant la fonction mais apres plus rien. La liste est bien presente mais le code html apres le fonction est absent.

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    ton inscription.php est bizarre, je sais pas quelle portion tu copie mais elle est incohérente.
    exemple:
    la fonction qui s'occupe de créer ta liste déroulante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    function creer_texte ()
    {
      $texte = "le texte que retourne la fonction";
      return $texte;
    }
    ?>
    le script qui l'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
      $contenu = "<div>" . creer_texte () . "</div>";
      echo $contenu;
    ?>

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2006
    Messages : 41
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup pour ton aide. moi je mettais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    ".$var = ListerTable();"
    ...
    Et ça marchait pas bien.
    ton exemple d'appel de fonction m'a permise de continuer tranquillement la suite.
    Merci merci merci.
    Biz Bouba.

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

Discussions similaires

  1. Probleme d'affichage de résultat de calcul
    Par nancy maman dans le forum Général Python
    Réponses: 6
    Dernier message: 20/05/2011, 12h21
  2. [AJAX] Affichage de résultat sous Firefox
    Par boucamleg dans le forum AJAX
    Réponses: 4
    Dernier message: 10/04/2009, 17h25
  3. Réponses: 16
    Dernier message: 14/05/2007, 16h33
  4. probleme d'affichage de résultat
    Par vitch8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/02/2007, 16h29
  5. Réponses: 3
    Dernier message: 01/06/2006, 19h45

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