8797 sujets

Développement web côté serveur, CMS

Bonjour, j'aimerai suite à ce morceau de code afficher le résultat de la requête sélectionné par $req.
Par la suite mettre le résultat de la seconde requête exécuté dans un .csv mais ça je me débrouillerai.

Mon souci est que le résultat de $pity s'affiche en double du fait de la redondance du while.

Voici mon code :

require 'connect_bdd.php';
$recup = $_POST['choix'];
if(!empty($_POST['choix']))
{


$file = fopen("/var/www/glpi/test.csv", "w");
	
$req = mysql_db_query("glpi","SELECT requete FROM requete WHERE id_requete = '".$recup."'");
$ligne1=true;
			
	while($row = mysql_fetch_array($req)) // début d'écriture de l'indice
	{

		$marche = mysql_query($row[0]);
		
		while($test = mysql_fetch_array($marche))
		{

			for($d=0;$pity=each($test);$d++)
			{
				echo $pity[1];
			}
	
		}
	


	fclose($file);
	mysql_free_result($req);
	return "télécharger la table :$table:<br>";
	}
}


Y aurait-il un moyen d'éviter d'avoir deux boucles while ?
Modifié par hathyr (15 Jan 2009 - 14:37)

<?php
 
require 'connect_bdd.php';
$recup = $_POST['choix'];
if(!empty($_POST['choix']))
{


$file = fopen("/var/www/glpi/test.csv", "w");
	
$req = mysql_db_query("glpi","SELECT requete FROM requete WHERE id_requete = '".$recup."'");
$ligne1=true;
			
$row = mysql_fetch_row($req); // début d'écriture de l'indice
$marche = mysql_query($row[0]);
		
		while($test = mysql_fetch_array($marche))
		{
			
			for($d=0;$pity=each($test);$d++)
			{
				echo $pity[1];
			}
	
		}
	


	fclose($file);
	mysql_free_result($req);
	return "télécharger la table :$table:<br>";
}
    
?>	


Voici quelques modifications, le première boucle while n'étant en fait pas nécessaire.

L'affichage en double des valeurs viendrait donc du fait que ma boucle for et dans un un while.

Je suis un peu bloqué là je dois dire je vois pas comment faire autrement. :s

<!-- Meta permettant le retour sur la page principale via un refresh vers la page principale en 0s -->
<meta http-equiv="refresh" content="0; url=request.php"> 
<?php
 
//Apppel de l'objet connect_bdd.php pour se connecter au serveur puis à la base de données glpi
require 'connect_bdd.php';

//Récuperation de l'id de la requête sélectionné dans la liste déroulante
$recup = $_POST['choix'];

//Si un choix à été fait
if(!empty($_POST['choix']))
{

//Exécution de la requête permettant de récupérer la requête choisie via l'id récupérée
$req = mysql_db_query("mabase","SELECT requete FROM requete WHERE id_requete = '".$recup."'");

//Exécution de la requête permettant de récupérer le nom de la requête choisie via l'id récupérée
$req1 = mysql_db_query("mabase","SELECT nom_requete FROM requete WHERE id_requete = '".$recup."'");

//Insertion du résultat de le requête req1 dans la variable $nom
$nom = mysql_fetch_row($req1);

//Création et ouverture d'un nouveau fichier .csv dans le répertoire glpi ayant le même nom que celui sélectionné
//dans la liste déroulante. On précise que l'on va écrire dans ce fichier.
$file = fopen("./$nom[0].csv", "w");
		
//Insertion du résultat de le requête req dans la variable $nom	
$row = mysql_fetch_row($req);

//Exécution de la requête choisie dans la liste déroulante
$marche = mysql_query($row[0]);
		
		//Boucle permettant de récupéré les résultats de la requête
		while($test = mysql_fetch_row($marche))
		{
			//On récupére tous les résultats grâce à l'incrémentation
			for($d=0;$pity=each($test);$d++)
			{
				//Ecriture des résultats dans le fichier qui a été créé
				fwrite($file,"\"$pity[1]\";");
			}
		}

	//Fermeture du fichier
	fclose($file);
}
    
?>


Voilou qui fonctionne