Php

Résolu
Bonjour,

voila, j'ai une page html dans laquel j'ai un formulaire à liste déroulante, j'aimerai que cette liste soit faite à partir d'un fichier text de mon serveur, seulement je n'ai pas la moindre idée de comment faire

j'ai bien essayer avec fopen qui m'affiche bien mon fichier text à l'écran mais pas de façon propre en collone et encore mois dans mon formulaire

merci pour votre aide
Configuration: Windows XP
Firefox 2.0.0.18

5 réponses

  1. Salut,

    je suppose que dans ton fichier tu as un item par ligne

    donc:

    <?php
    $array_fichier=file("ton_fichier.txt"); //ça ouvre, lit le fichier le mets ligne par ligne dans un array et ferme
    echo "<select name=\"......\" >";
    if(sizeof($array_fichier)>0{
    
    foreach($array_fichier as $cle=>$value){
       echo "<option value=\"".$value."\">".$value."</option>";
    
    }
    
    }
    echo "</select>";
    
    ?>
    


    @lain
    1. merci pour ta reponse
      effectivement mon fichier comporte bien un item par ligne, il ressemble a sa :
      toto
      tata
      titi

      voila ma page php

      <html>
      <head>
      <title>test</title>
      </head>
      <body>
      <h1>test</h1>
      <p></p>
      <form id="FormText" action="test.php" onsubmit="" method="post">
      <table width="30%" class="ignorer">
      <td align="center" class="ignorer"> selectionner:</td>
      <?php
      $array1=file("/tmp/file");
      echo "<select size="1" name="var1">";
      if(sizeof($array1)>0{

      foreach($array1 as $cle=>$value){
      echo "<option value=\"".$value."\">".$value."</option>";
      }

      }
      echo "</select>";
      ?>
      </table>
      </form>
      </body>
      </html>

      et sa ne m'affiche rien du tous
      si tu a une idée
      merci d'avance
      1. $array1=file("/tmp/file")

        ton fichier se nomme file ?

        ou file.txt ?

        et d'après ce que tu écris il devrait être dans le sous repertoire temp par rapport à ton script ?

        et ensuite n'oublie pas d'échaper si dans une chaine commençant par " il y a des "

        
        <html>
        <head>
        <title>test</title>
        </head>
        <body>
        <h1>test</h1>
        <p></p>
        <form id="FormText" action="test.php" onsubmit="" method="post">
        <table width="30%" class="ignorer">
        <td align="center" class="ignorer"> selectionner:</td>
        <?php
        $array1=file("/tmp/file"); //a revoir 
        echo "<select size=\"1\" name=\"var1\">";
        if(sizeof($array1)>0{
        
        	foreach($array1 as $cle=>$value){
        		echo "<option value=\"".$value."\">".$value."</option>";
        }
        
        }
        echo "</select>";
        ?>
        </table>
        </form>
        </body>
        </html>
        
    2. mon fichier s'appel bien file et il se situe bien dans /tmp
      j'ai vérifier le reste de ma syntaxe et tous colle avec ton code

      est ce qu'il n'y aurait pas un parametre dans le php.ini à modifier pour permettre la récupération des data du fichier txt?
      je dis sa car je suis vraiment un newbie en php et que je me suis pris la tête a cause d'une histoire d'envoye de variable d'un formulaire à cause du paramêtre register_globals
      1. Hum pas très normal de nommer un fichier sans extension

        sinon je te renvoi le script avec qqs echo de debugage, donnes moi le résultat

        <html>
        <head>
        <title>test</title>
        </head>
        <body>
        <h1>test</h1>
        <p></p>
        <form id="FormText" action="test.php" onsubmit="" method="post">
        <table width="30%" class="ignorer">
        <td align="center" class="ignorer"> selectionner:</td>
        <?php
        $file="/tmp/file";
        
        if(is_file($file)){
        	$array1=file("/tmp/file");
        	echo "Nombre de lignes lues dans le fichier: ".sizeof($array1);
        	echo "<select size=\"1\" name=\"var1\">";
        	if(sizeof($array1)>0{
        
        		foreach($array1 as $cle=>$value){
        			echo "<option value=\"".$value."\">".$value."</option>";
        	}
        
        	}
        	echo "</select>";
        }else{
        	echo "Acces au fichier ".$file." impossible !";
        }	
        ?>
        </table>
        </form>
        </body>
        </html>
    3. Hum pas très normal de nommer un fichier sans extension
      en fait je travaille avec linux /tmp/file et un fichier plat contenant que du text il ressemble a sa
      cat /tmp/file
      toto
      tata
      titi
      tutu
      j'ai injecter ton code et sa ne m'affiche rien du tous
      j'ai essayer de renomer mon file en file.txt et sa n'a rien changer

      j'ai voulus vérifier que se ne soit pas un probleme avec mon serveur apache
      j'ai commenter de cette façon
      <?php
      $file="/tmp/file";
      echo $file;
      //if(is_file($file)){
      // $array1=file("/tmp/file");
      // echo "Nombre de lignes lues dans le fichier: ".sizeof($array1);
      // echo "<select size=\"1\" name=\"var1\">";
      // if(sizeof($array1)>0{

      // foreach($array1 as $cle=>$value){
      echo "<option value=\"".$value."\">".$value."</option>";
      // }

      // }
      // echo "</select>";
      //}else{
      // echo "Acces au fichier ".$file." impossible !";
      //}
      ?>

      et la il m'affiche bien mon titre h1 , le path de mon file.txt et mon menu déroulant vide
      c'est à s'arracher les cheveux

      pour info je suis en php 4.3.9

      en tous cas merci de ton aide
      1. Il me manquait une petite parenthèse au if (sizeof....

        de ton côté ta structure de table n'éatait pas bonne il te manque des tr des td

        et l'erreur php aurait dur sortir, chez moi j'ai fait l'essai en réel sur mon serveur Linux elle sortent, il faut que tu ailles dans le php.ini modidier la ligne

        error_display -> ON

        et relancer apache bien sur

        <html>
        <head>
        <title>test</title>
        </head>
        <body>
        <h1>test</h1>
        <p></p>
        <form id="FormText" action="test.php" onsubmit="" method="post">
        <table width="30%" class="ignorer">
        <tr>
        <td align="center" class="ignorer"> selectionner:</td>
        <td>
        <?php
        $file="tmp/file.txt";
        
        if(is_file($file)){
        	$array1=file($file);
        	//echo "Nombre de lignes lues dans le fichier: ".sizeof($array1);
        	echo "<select size=\"1\" name=\"var1\">";
        	if(sizeof($array1)>0){
        
        		foreach($array1 as $cle=>$value){
        			echo "<option value=\"".$value."\">".$value."</option>";
        	}
        
        	}
        	echo "</select>";
        }else{
        	echo "Acces au fichier ".$file." impossible !";
        }	
        ?>
        </td>
        </tr>
        </table>
        </form>
        </body>
        </html>
    4. sa y'est sa marche nicquel

      c'est vraix que mon tableaux était mal structuré mais sa pas sa qui bloquait
      c'était juste la petite parenthese du if (du moins je suppose)
      une fois cette petite parenthese ajouter sa marche nicquel

      je te remercie vraiment pour ton aide précieuse