Une requête qui se construit en listant un dossier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Une requête qui se construit en listant un dossier

par Truc » 17 avr. 2006, 01:07

De rien, :wink:
Mais je vois pas coment expliquer plus cette histoire de répertoire... il sont présent et c'est tout :lol:

Que le répertoire soit vide ou non il y a au moins ces deux la pour permettre la navigation.

par jpsartre » 17 avr. 2006, 01:06

//s'il s'agit d'un répertoire ET qu'il ne s'agit pas du courant ou parent
J'ai compris
Je peux passer la suite maintenant,
Alors à bientôt :wink:

par jpsartre » 17 avr. 2006, 01:01

Merci beaucoup,
ça marche, c'était ce que tu me disais depuis le début,
j'y arrivais pas parce que je ne comprends pas bien cette histoire
je vais essayer de saisir le truc,
Encore merci, c'est vraiment sympa

par Truc » 17 avr. 2006, 00:53

Bon effectivement pas 200 lignes non plus :lol:

utilise ceci:
$rep = "images/";
$dir = opendir($rep);

while ($f = readdir($dir)) 
{
	//s'il s'agit d'un répertoire ET qu'il ne s'agit pas du courant ou parent
        if(is_dir($rep.$f) && $f != "." && $f != ".." ) 
	{
		echo "Nom : ".$f;
		$query = "SELECT * FROM evenements WHERE id = '".$f."' ORDER BY dd DESC";
		$result = mysql_query($query);
		
		$Record = mysql_fetch_object($result)
		
		... 

par jpsartre » 17 avr. 2006, 00:48

C'est que j'ai essayé de l'intégrer et ça ne marchait plus, j'ai dû me planter , je mets le reste (mais j'ai peur de me faire souffler dans les bronches :
<?
//session_start();
//if (session_is_registered('pseudo')) 
//{ echo 
?>
<HTML>
<HEAD>
<TITLE>administration</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<LINK rel="stylesheet" href="../style.css" type="text/css">
</HEAD>

<BODY bgcolor="#FFFFFF" text="#000000" link="#3366CC" vlink="#3366CC" alink="#3366CC">
<? 
$repere = 'Galerie';
require ('header_abonnes.php');
include ('../connexion.php');

		$commentaire = StripSlashes ($commentaire);
		$rdv = StripSlashes ($rdv);
		$description = StripSlashes ($description);
		$nom = StripSlashes ($nom);
// Lister les dossiers contenus dans le dossier des galeries pour récupérer les noms de dossiers, donc les id		
	 	$rep = "images/";
		$dir = opendir($rep); 
		while ($f = readdir($dir)) {
   if(is_dir($rep.$f)) {
      echo "Nom : ".$f;
	  $query = "SELECT * FROM evenements WHERE id = '".$f."' ORDER BY dd DESC";
	  $result = mysql_query($query);
	 
	  $Record = mysql_fetch_object($result)
         
	
		//$query = "SELECT * FROM evenements WHERE id = '".$f."' ORDER BY nom ASC";
		//$result = mysql_query($query);
	//if($result)
	//{
	 //	while($Record = mysql_fetch_object($result))
	//	{
?>
<TABLE width="800" border="0" cellspacing="3" cellpadding="0" align="center">
  <TR> 
    <TD width="30" rowspan="2" class="fond_gris"> 
      <?
			if ($Record->type == "decouverte")
				echo  '<img src="images/decouverte.gif" width="30" height="30" border=1>';
			elseif ($Record->type == "sport")
				echo '<img src="images/sport.gif" width="30" height="30" border=1>';
			elseif ($Record->type == "detente")
				echo '<img src="images/detente.gif" width="30" height="30" border=1>';
			else 
				echo '<img src="images/sejours.gif" width="30" height="30" border=1>';
	?>
    </TD>
    <TD width="270" class="fond_gris"> 
      <?=$Record->nom?>
      - ( 
      <?=$Record->type?>
      ) </TD>
    <TD width="500" align="right" class="fond_gris">Du <b> 
      <?=substr($Record->dd,8,2).'-'.substr($Record->dd,5,2).'-'.substr($Record->dd,0,4)?>
      </b> &agrave;<b> 
      <?=substr($Record->hd,0,5)?>
      </b>au <b> 
      <?=substr($Record->df,8,2).'-'.substr($Record->df,5,2).'-'.substr($Record->df,0,4)?>
      </b> &agrave; <b> 
      <?=substr($Record->hf,0,5)?>
      </b></TD>
  </TR>
  <TR> 
    <TD class="fond_gris"> REF : 
      <?=$Record->ref?>
      | PRIX : 
      <?=$Record->prix?>
      &euro; </TD>
    <TD class="fond_gris">LIEU RDV : 
      <?=$Record->rdv?>
    </TD>
  </TR>
  <TR> 
    <TD colspan="3" class="fond_gris">Places disponibles 
      <?
$dispo = $Record->maxi - $Record->reserve;
	if ($Record->maxi)
		echo '<B>'.$dispo.'</B>';
	else 
		echo '';
	?>
      | Maximum participants 
      <?=$Record->maxi?>
      | Minimum participants 
      <?=$Record->mini?>
      | R&eacute;servations 
      <?=$Record->reserve?>
    </TD>
  </TR>
  <TR> 
    <TD colspan="3" class="fond_gris">DESCRIPTION : 
      <?=$Record->description?>
    </TD>
  </TR>
  <TR> 
    <TD colspan="3" class="fond_gris">COMMENTAIRE : 
      <?=$Record->commentaire?>
    </TD>
  </TR>
  <TR align="right"> 
    <TD colspan="3" class="titre_gris"> 
      <?
//vérification de l'existence du dossier
//if(is_dir('../abonnes/images/'.$id.'/')) 
if(is_dir('images/'.$Record->id.'/'))
{
// on compte le nombre de photo dans le dossier
				$nb_f = 0;

$opdir = opendir('images/'.$Record->id.'/');
while ($c = readdir($opdir)) 
{
   if (!is_dir($c)) $nb_f++;
}

closedir($opdir);

echo ("LA GALERIE CONTIENT ".$nb_f." PHOTOGRAPHIES | ");
?>
      <a href="archives_galerie.php?id=<?=$Record->id?>">VOIR LES PHOTOS</a> 
      <?
				}    
			else
			{
				echo  'PAS DE GALERIE';
				}
	$compte = mysql_query("SELECT Count(*) FROM evenements WHERE id = '".$Record->id."' AND statut = 1");
    $okpanier = mysql_result($compte, 0);
	if ($okpanier)
	{
?>
      | <a href="galeries.php?pseudo=<?=$_SESSION['pseudo']?>&ref=<?=$Record->ref?>&ADD=1?>">SELECTIONNER</a> 
      <?
	  }

	  ?>
    </TD>
  </TR>
  <TR> 
    <TD colspan="3"> <hr></TD>
  </TR>
</TABLE>
<?
		}
	}
//	else{
//			echo"erreur de requête";
//}
mysql_close();
?>
<? //} else{
//header("location: http://www.lj-traiteur.com/escapades/index.php?pass=no");

//}
?>
</BODY>
</HTML>
Et tu as vu en suivant le lien?
Merci

par Truc » 17 avr. 2006, 00:46

disons qu'à la base j'en voulais plus à me mettre sous la dent :lol:
mais rien que là on voit qu'il manque:
if ($file != "." && $file != "..") 
ce test a disparu :?

par jpsartre » 17 avr. 2006, 00:44

Juste ça :
// Lister les dossiers contenus dans le dossier des galeries pour récupérer les noms de dossiers, donc les id		
	 	$rep = "images/";
		$dir = opendir($rep); 
		while ($f = readdir($dir)) {
   if(is_dir($rep.$f)) {
      echo "Nom : ".$f;
	  $query = "SELECT * FROM evenements WHERE id = '".$f."' ORDER BY dd DESC";
	  $result = mysql_query($query);
	 
	  $Record = mysql_fetch_object($result)
Ou toute ma page?
Merci

par jpsartre » 17 avr. 2006, 00:41

Enfait, en regardant en bas d'un affichage d'enregistrement, je vois qu'il compte 5 choses dans les dossiers . et ..
Il compte donc ce qu'il y a dans le dossier images, soit les 5 dossiers de mes galeries.
Mais je ne vois pas comment empêcher ça, impossible d'intégrer ta prposition, j'y arrive pas,
Mais je ne vais pas lacher l'affaire
Merci

par Truc » 17 avr. 2006, 00:40

Montre nous le code qui se rapporte à la lecture du dossier avec la boucle et l'affichage.

par jpsartre » 17 avr. 2006, 00:35

Tu as peut-être regardé pendant que je testais, je l'ai remis avec le echo et mon premier code pour que le problème soit visible.
On voit bien mes 5 événements numérotés, et au dessus, les . et ..
Je crois que je bloque,
Merci

par Truc » 17 avr. 2006, 00:23

je ne vois rien de particulier :?

Fait une simple vérification des dossier qui passent dans le test if($file ! = ...) en affichant le dossier:
if ($file != "." && $file != "..")
{ 
   echo 'le dossier est '.$file.'<br>';
}
Pour les répertoires. ils sont donc présent dans tous les dossiers

par jpsartre » 16 avr. 2006, 23:19

Je te mets le lien j'ai enlevé la session pour que tu regardes :
http://www.lj-traiteur.com/escapades/ab ... leries.php
tu vois ce que ça fait, il liste bien le bon dossier mais sort toujours les deux enregistrements en plus, comme j'ai mis la vérification, ils ne sortent pas sur l'echo, mais c'est bien . et ..
J'avoue que je ne comprends pas bien et je sais que ../ sert à remonter d'un dossier mais je ne saisi pas le rapport ici...
Désolé si je suis pesant sur ce coup :oops:
Merci

par Truc » 16 avr. 2006, 23:04

". " représente le dossier courant
".." représente le dossier parent

Par exemple pour remonter d'un niveau dans l'arborescence et aller dans le dossier "dossier1":
../dossier1
pour appeler un fichier qui se trouve dans le même dossier que le script tu peux faire:
src = fichier.ext
src = ./fichier.ext
si tu veux appeler un fichier un niveau plus haut:
src = ../fichier.ext

Pour le script, affiches un message d'erreur sur l'exécution de la requete mysql_error() et affiche la requete générée:
echo $query;

par jpsartre » 16 avr. 2006, 22:56

ça ne parche toujours pas, mais c'est vrai que je ne comprends pas pourquoi il sort un . et un .. en ouvrant mon dossier image.
Si tu peux essayer de m'expliquer,
Merci

par Truc » 16 avr. 2006, 22:47

Hi hi, non mais l'exemple est la juste pour l'exemple faut pas faire un copier coller du tout :lol:

Faut tester les valeurs de file et si elles sont différentes de "." et ".." alors exécution du script:
if ($handle = opendir('images/')) 
{
   while (false !== ($file = readdir($handle))) 
  {
       if ($file != "." && $file != "..") 
      {
         $query = "SELECT * FROM evenements WHERE id = '".$file."' ORDER BY dd DESC";
         $result = mysql_query($query);
         $Record = mysql_fetch_object($result);
      }
   }
}
". " représente le dossier courant
".." représente le dossier parent

Par exemple pour remonter d'un niveau dans l'arborescence et aller dans le dossier "dossier1":
../dossier1