[RESOLU] Remplir un select depuis un fichier texte

Eléphanteau du PHP | 31 Messages

16 oct. 2012, 17:47

Bonjour !

Je suis entrain de réaliser un site web mais bon j'ai pas mal de difficulté ^^

J'ai un fichier excel qui contient des données comme des pays, des aires géographiques .... et ces données je les met dans un fichier texte sous cette forme:

ALBANIA
ALGERIA
ARGENTINA
AUSTRALIA
AUSTRIA
BAHRAIN
BANGLADESH
BELGIUM
BRAZIL
BULGARIA
CAMEROON
CANADA
etc.....

Et je voudrais maintenant remplir un select avec ces données, j'ai essayé ceci:
<div id="div_area" style="display:none;">		
			<select id="select_area">			
				<?php
					$f = fopen("datas/LArea.txt", "r");
					// Read line by line until end of file
					while (!feof($f)) {
						echo '<option value="'.fgets($f).'">'.fgets($f).'</option>';
					}
					fclose($f);					
				?>				
			</select>						
			<br/>				
		</div>

Mais rien ne s affiche dans le select .... :'(


je tiens a dire que j'ai meme essayé ca:
<div id="div_area" style="display:none;">		
			<select id="select_area">			
				<?php
                                    echo '<option value="test">test</option>';				
				?>				
			</select>						
			<br/>				
		</div>
Mais rien ne s affichait non plus alors bon ... je comprend pas trop la ^^


Donc j'espère que quelqu'un ici pourra m'éclairer parce que je sais vraiment pas quoi faire ... j ai essayé de trouver sur internet mais bon pour moi ca revient a ce que j ai fait ....

Help please ^^

ViPHP
AB
ViPHP | 5818 Messages

16 oct. 2012, 19:29

Avec ce genre de fichier texte tu aurais avantage à utiliser la fonction file de php.
$tab_fich = file('datas/LArea.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
Fais un print_r($tab_fich); pour contrôle pendant le développement.

Ensuite il reste plus qu'à lister ton tableau :
<?php
//récupération des données
$tab_fich = file('datas/LArea.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

//visualisation pour débuggage
print_r($tab_fich);

//contrôle du résultat
$tab_fich = isset($tab_fich) && is_array($tab_fich) ?  $tab_fich : array();

?>
<html>
...
<?php if(count($tab_fich) > 0)
{
foreach($tab_fich as $value)
echo '<option value="'.$value.'">'.$value.'</option>';
} ?>
...
</html>

Eléphanteau du PHP | 31 Messages

17 oct. 2012, 09:10

Ca affiche '.$value.' dans le select :'(


Mais j'ai l'impression que j'ai un problème avec l'affichage de truc en php dans l'HTML ....

Ce serait possible que ce soit à cause du fait que j'utilise de l'ajax dans mon programme ? Ou du fait que j'utilise WampServer ? ou ?

voila ce que j'ai:
http://gyazo.com/f76f41292b6d24f718c4f43c6c48b8cc

Eléphanteau du PHP | 45 Messages

17 oct. 2012, 11:42

Bonjour InfoGeo.
Ton image est fort sympathique mais où se trouve le réel actif depuis lequel tu as fait une impression écran?
C'est ça qui pourrait nous intéresser, l'image ne peut être éditée! ;)
Dump un coup le résultat de ta page html et donnes nous la portion qui est en erreur, avec le source php stp.
Cdt.

ViPHP
ViPHP | 2577 Messages

17 oct. 2012, 12:00

Vu l'affichage, tu as du mal recopier la ligne :
echo '<option value="'.$value.'">'.$value.'</option>';
Une confusion entre quote et double-quote ?

Pour contrôler ce qui est généré, tu peux regarder le source html de la page.

Eléphanteau du PHP | 31 Messages

17 oct. 2012, 13:20

non aucune confusion je fais des copier coller mais j ai trouvé ou se situait mon problème ^^ en fait la page était index.html au lieu de index.php


Pour ceux que ca interesse voila ce que j'ai fait:
<div id="div_area" style="display:none;">
			<p>
			<select id="select_area">                      
				<?php
					$rows = file("datas/LArea.txt", FILE_SKIP_EMPTY_LINES);
					foreach($rows as $value){
				?>
						<option value="<?php echo $value; ?>"><?php echo $value; ?></option>
				<?php
					}                                     
				?>                             
			</select>
			</p>
			<br/>                          
		</div>

		
		<div id="div_subarea" style="display:none;">
			<p>
			<select id="select_subarea">                      
				<?php
					$rows = file("datas/LSArea.txt", FILE_SKIP_EMPTY_LINES);
					foreach($rows as $value){
				?>
						<option value="<?php echo $value; ?>"><?php echo $value; ?></option>
				<?php
					}                                     
				?>                             
			</select>
			</p>
			<br/>                          
		</div>	

		<div id="div_countryunit" style="display:none;">
			<p>
			<select id="select_countryunit">                      
				<?php
					$rows = file("datas/LCountryU.txt", FILE_SKIP_EMPTY_LINES);
					foreach($rows as $value){
				?>
						<option value="<?php echo $value; ?>"><?php echo $value; ?></option>
				<?php
					}                                     
				?>                             
			</select>
			</p>
			<br/>                          
		</div>	

		<div id="div_country" style="display:none;">
			<p>
			<select id="select_country">                      
				<?php
					$rows = file("datas/LCountry.txt", FILE_SKIP_EMPTY_LINES);
					foreach($rows as $value){
				?>
						<option value="<?php echo $value; ?>"><?php echo $value; ?></option>
				<?php
					}                                     
				?>                             
			</select>
			</p>
			<br/>                          
		</div>			


qui renvoies à ca:

[javascript]function select_sort (value) {
if (value == "area") {
document.getElementById("div_area").style.display = "";
document.getElementById("div_subarea").style.display = "none";
document.getElementById("div_country").style.display = "none";
document.getElementById("div_countryunit").style.display = "none";
}
if (value == "subarea") {
document.getElementById("div_area").style.display = "none";
document.getElementById("div_subarea").style.display = "";
document.getElementById("div_country").style.display = "none";
document.getElementById("div_countryunit").style.display = "none";
}
if (value == "country") {
document.getElementById("div_area").style.display = "none";
document.getElementById("div_subarea").style.display = "none";
document.getElementById("div_country").style.display = "";
document.getElementById("div_countryunit").style.display = "none";
}
if (value == "countryunit") {
document.getElementById("div_area").style.display = "none";
document.getElementById("div_subarea").style.display = "none";
document.getElementById("div_country").style.display = "none";
document.getElementById("div_countryunit").style.display = "";
}
if (value == "world") {
document.getElementById("div_area").style.display = "none";
document.getElementById("div_subarea").style.display = "none";
document.getElementById("div_country").style.display = "none";
document.getElementById("div_countryunit").style.display = "none";
}
}[/javascript]



merci d'avoir essayé de m'aider !


je ne sais pas comment on rend un sujet résolu ....

Eléphanteau du PHP | 45 Messages

17 oct. 2012, 13:26

Pour mes <option> à traiter sous php, j'ai toujours eu l'habitude d'écrire ainsi:
?>
<option value="<? echo $piece['virtuemart_product_id']?>">Pièce 1</option>
<? 
Ainsi j'évite la confusion des quote / double quote...


Edit:
Bien vu! Tu as posté avant moi! lol
Je crois que c'est le modo qui autorise le bouton RESOLU.

Eléphanteau du PHP | 31 Messages

17 oct. 2012, 13:47

lol asf21, désolé en tt cas merci d avoir essayé de m aider c super sympa ! =)

Eléphanteau du PHP | 45 Messages

17 oct. 2012, 18:34

Remercies AB, pas moi! ;)

Eléphanteau du PHP | 31 Messages

17 oct. 2012, 18:44

je vous remercie tous ^^