[RESOLU] faire une boucle

Eléphant du PHP | 123 Messages

01 déc. 2012, 17:16

Si tu prends le code de AB et que tu le mets à l'endroit ou tu affiches les images en prenant soin de bien définir les variables comme il faut, tu ne devrais pas avoir de problème.
ben je pensai mais je viens de copier ceci dans ma page html






include'connect.php';
$requete = "SELECT *  FROM autotran ";
              $resultat = mysql_query ($requete);

              $tempo = mysql_fetch_assoc($resultat);
              $IdVO=$tempo['IdVO'];
              $dossier = 'photos';
$match = '#CARDIFF_BBDZ_'.$IdVO.'_([0-9]+).(jpg|png|gif)$#i';
$files = new RegexIterator(new DirectoryIterator($dossier),$match);
$nb_fichiers = iterator_count($files);
 
 foreach ($files as $val){
 echo "<a href=$dossier/$val><img  width=\"100\" src=$dossier/$val></a>";
 //echo '<img  width="100" src="'.$dossier.'/'.$value.'"/>';
 echo $val."<br />";

}
qui fonctionne sur la page en php directement mais la j ai des erreur si tu va voir le lien que j ai donné plus haut

Avatar du membre
Mammouth du PHP | 1609 Messages

01 déc. 2012, 17:23

Je ne vois pas d'erreur en revanche je vois ça en haut de la page (bien que je ne vois rien qui y corresponde dans le code que tu montres) :
"; //echo ''; echo $val."
"; } ?>
Le php ne doit pas être bien écrit.
Cette ligne par exemple (manque des " au href et src) :
// html mal formé
echo "<a href=$dossier/$val><img  width=\"100\" src=$dossier/$val></a>";
// corrigée
echo "<a href=\"$dossier/$val\"><img  width=\"100\" src=\"$dossier/$val\"/></a>";
// je préfère
echo '<a href="'.$dossier.'/'.$val.'"><img  width="100" src="'.$dossier.'/'.$val.'"/></a>";
Et pourquoi pas, soyons fous :
$image = $dossier.'/'.$val;
echo '<a href="'.$image.'"><img  width="100" src="'.$image.'"/></a>";
Modifié en dernier par Saian le 01 déc. 2012, 17:28, modifié 1 fois.
Développeur web depuis + de 20 ans

Eléphant du PHP | 123 Messages

01 déc. 2012, 17:27

Je ne vois pas d'erreur en revanche je vois ça en haut de la page :
"; //echo ''; echo $val."
"; } ?>
Le php ne doit pas être bien écrit.
Cette ligne par exemple (manque des " au href et src) :
// html mal formé
echo "<a href=$dossier/$val><img  width=\"100\" src=$dossier/$val></a>";
// corrigée
echo "<a href=\"$dossier/$val\"><img  width=\"100\" src=\"$dossier/$val\"/></a>";
// je préfère
echo '<a href="'.$dossier.'/'.$val.'"><img  width="100" src="'.$dossier.'/'.$val.'"/></a>";
justement je pensai qu il fallait juste copier coller etant donné que sur php ca fonctionne et que j ai declaré dans la partie php <?php ?> du code html mais cela ne l interprete pas pareil et je ne sais pas comment l ecrire alors

j ai copier ton code mais j ai toujours des choses en trop...

Avatar du membre
Mammouth du PHP | 1609 Messages

01 déc. 2012, 17:35

En espérant que ça t'aide à comprendre :
<?php
// du php ici qui echo du html
echo '<p>du html</p'>;
?>
<!-- du html ici, donc sans echo -->
<p>du html</p>
<!-- du php dans l'html -->
<p><?php echo 'du php qui echo dans le html'; ?></p>
Concrètement (il faut bien sur que $files et $dossier soient préalablement définis) :
<tr>
<?php foreach ($files as $val): ?>
  <td>
    <a href="<?php echo $dossier.'/'.$val; ?>"><img  width="100" src="<?php echo $dossier.'/'.$val; ?>"></a>
    <?php echo $val; ?>
  </td>
<?php endforeach; ?>
</tr>
Développeur web depuis + de 20 ans

Eléphant du PHP | 123 Messages

01 déc. 2012, 17:53

je desespere ... j ai fais ceci
<?php 

include'connect.php';
$requete = "SELECT *  FROM autotran ";
              $resultat = mysql_query ($requete);

              $tempo = mysql_fetch_assoc($resultat);
              $IdVO=$tempo['IdVO'];
              $dossier = 'photos';
$match = '#CARDIFF_BBDZ_'.$IdVO.'_([0-9]+).(jpg|png|gif)$#i';
$files = new RegexIterator(new DirectoryIterator($dossier),$match);
$nb_fichiers = iterator_count($files);
?> 
 <?php foreach ($files as $val): ?>
   
     <a href="<?php echo $dossier.'/'.$val; ?>"><img  width="100" src="<?php echo $dossier.'/'.$val; ?>"></a>
     <?php echo $val; ?>
   
 <?php endforeach; ?>
mais ca me retourne rien
est ce que si je ferme la balise ?> le code n est plus pris en compte plus bas en ouvrant ?

Avatar du membre
Mammouth du PHP | 1609 Messages

01 déc. 2012, 17:57

Tu peux fermer et ouvrir les balises php autant de fois que tu veux.
Si ça ne t'affiche rien c'est que $files est vide. Teste ta requête et fais des vérifications de tes variables si tu veux comprendre le problème.
Moi je dois filer. Bon courage.

EDIT
Je suppose que dans autotran tu as 1 ligne par véhicule ? la ton code récupère la première ligne et cherche les photos correspondantes au premier véhicule.
Hors si ça ne t'affiche rien c'est que le premier véhicule retourné par la requête ne doit pas avoir de photos...
Développeur web depuis + de 20 ans

Eléphant du PHP | 123 Messages

01 déc. 2012, 18:08

Tu peux fermer et ouvrir les balises php autant de fois que tu veux.
Si ça ne t'affiche rien c'est que $files est vide. Teste ta requête et fais des vérifications de tes variables si tu veux comprendre le problème.
Moi je dois filer. Bon courage.

EDIT
Je suppose que dans autotran tu as 1 ligne par véhicule ? la ton code récupère la première ligne et cherche les photos correspondantes au premier véhicule.
Hors si ça ne t'affiche rien c'est que le premier véhicule retourné par la requête ne doit pas avoir de photos...
merci pour ton aide et encouragements

tu peux voir par le lien donné plus haut qu il y a bien des photos....
ma requete est bonne car le code de AB me retourne bien un resultat su un autre fichier.php que je me sert pour testé ,l echo me retournai bien les image

hors la ca ne marche plus dans le fichier ou j ai mon html

edit: maintenant j ai limage de croix qui a pour lien http://www.creaweb68.fr/autotran/%3C?php echo $dossier.'/'.$val; ?> ce qui n est pas normal

Avatar du membre
Mammouth du PHP | 1609 Messages

01 déc. 2012, 21:31

Re, quand je regarde le code source de la page je vois ça dedans :

Code : Tout sélectionner

... <body> <?php include('connect.php'); $requete = "SELECT * FROM autotran "; $resultat = mysql_query ($requete); $tempo = mysql_fetch_assoc($resultat); $IdVO=$tempo['IdVO']; $dossier = 'photos'; $match = '#CARDIFF_BBDZ_'.$IdVO.'_([0-9]+).(jpg|png|gif)$#i'; $files = new RegexIterator(new DirectoryIterator($dossier),$match); $nb_fichiers = iterator_count($files); foreach ($files as $val): ?> <a href="<?php echo $dossier.'/'.$val; ?>"><img width="100" src="<?php echo $dossier.'/'.$val; ?>"></a> <?php endforeach; ?> <table id="General"><tr> ...
Bref le php n'est pas interprété, pourquoi ?
Développeur web depuis + de 20 ans

Eléphant du PHP | 123 Messages

01 déc. 2012, 21:45

tu penses que cela viendrai d ou?

Avatar du membre
Mammouth du PHP | 1609 Messages

01 déc. 2012, 22:23

Je sais pas, t'as fait un echo file_get_contents() du fichier. ^^
Sérieux sans voir tous les fichiers impliqués et éventuellement la configuration du serveur, je ne saurai te dire.

EDIT A minima faudrait voir la page details.php et en particulier l'endroit ou y a le code non interprété (avec au moins quelques lignes du dessus et du dessous).
Développeur web depuis + de 20 ans

Eléphant du PHP | 123 Messages

01 déc. 2012, 22:35

je passe par tinybutstrong pour afficher ma page ,mais j ai jamais eu de soucis avec ...

le code qui permet d afficher la page c est ca
header ('Content-type:text/html; charset=utf-8');
 include("connect.php");
 include("TinyButStrong/tbs_class_php5.php") ;
 
 	mysql_set_charset ('UTF8');
  
 
 if(isset($_GET['action']))
{
      
        switch($_GET['action'])
            { 
            case "details":    
            //créšation un nouvel objet tbs
              $tbs = new clsTinyButStrong ;            
              //modèžle html dynamique Ó utiliser
              $tbs -> LoadTemplate("Page_detail.php");
              //créšation de la requete
              
              $requete = "SELECT * ,date_format(Mec, '%d/%m/%Y') AS MeC FROM autotran where IdVO='".$_GET['ID']."'";
              $resultat = mysql_query ($requete);

              $tempo = mysql_fetch_assoc($resultat);
        
        $IdVO=$tempo['IdVO'];
        $VO=$tempo['VO'];
        $Typedevehicules=$tempo['Type_de_vehicules'];
        $Marque=$tempo['Marque'];
        $Modele=$tempo['Modele'];
        $Version=$tempo['Version'];
        $Carosserie=$tempo['Carosserie'];
        $NombrePortes=$tempo['NbPortes'];
        $Energie=$tempo['Energie'];
        $BoiteVitesses=$tempo['Boite_de_vitesses'];
        $Pfiscale=$tempo['Puissance_fiscale'];
        $PDIN=$tempo['Puissance_DIN'];
        $Millesime=$tempo['Millesime'];
        $MiseCirculation=$tempo['MeC'];
        $Kilometrage=$tempo['Kilometrage'];
        $Couleur=$tempo['Couleur'];
        $PremiereMain=$tempo['Premiere_main'];
        $Options=$tempo['Equip_Options'];
        $PrixPublic=$tempo['Prix_public'];
        $PrixMarchant=$tempo['Prix_Marchant'];
        $NomGarantie=$tempo['Nom_Garantie'];
        $DureeGarantie=$tempo['D_Garantie'];
        $Sellerie=$tempo['Sellerie'];
        $CouleurInt=$tempo['Couleur_interieur'];
        $NombrePlaces =$tempo['NbPlaces'];
        $KilometrageGaranti=$tempo['Kilometrage_Garantie'];
        $TVA=$tempo['Avec_TVA'];
        $Commentaire=$tempo['Commentaire_additionnel'];
        $CO2=$tempo['CO2'];
        $ConsoMixte=$tempo['Conso_mixte'];                            
        $ConsoUrbaine=$tempo['Conso_urbaine'];
        $consoExtra=$tempo['Conso_extra_urbaine'];
        $Longueur=$tempo['Longueur'];
        $Largeur=$tempo['Largeur'];
        $Hauteur=$tempo['Hauteur'];
        $Genre=$tempo['Genre'];
        $Provenance=$tempo['Provenance'];
        
        $Options=str_replace(', ',".\r\n",$Options );    
        
if(ISSET($tempo['D_Garantie'])&& $tempo['D_Garantie']>'0');
else
{$DureeGarantie="Non";}


            
            $photo1='CARDIFF_BBDZ_'.$IdVO.'_1.jpg';
            $photo2='CARDIFF_BBDZ_'.$IdVO.'_2.jpg';
            $photo3='CARDIFF_BBDZ_'.$IdVO.'_3.jpg';
            $photo4='CARDIFF_BBDZ_'.$IdVO.'_4.jpg';
            $photo5='CARDIFF_BBDZ_'.$IdVO.'_5.jpg';
            $photo6='CARDIFF_BBDZ_'.$IdVO.'_6.jpg';
            $photo7='CARDIFF_BBDZ_'.$IdVO.'_7.jpg';
            $photo8='CARDIFF_BBDZ_'.$IdVO.'_8.jpg';
            $photo9='CARDIFF_BBDZ_'.$IdVO.'_9.jpg';
            $photo10='CARDIFF_BBDZ_'.$IdVO.'_10.jpg';
            
            
      

        
$tbs -> MergeBlock('fic',$files);
$tbs -> Show();
 break;
}
}  

Avatar du membre
Mammouth du PHP | 1609 Messages

01 déc. 2012, 22:39

Je ne connais pas tinybutstrong mais je suppose que tu as ajouté le code de AB dans le template "Page_detail.php".
N'y a t il pas des règles particulières pour mettre du php dans le template avec tinybutstrong ? visiblement le php dans un template tinybutstrong n'est pas interprété.

A quoi ressemble le fichier du template car la on ne voit pas l'intégration de la boucle ?
Logiquement, vu que tu utilises un système de template, tu serais sensé mettre le code pour récupérer les images dans le fichier detail.php et passer les variables au template.
Ensuite dans le template il doit y avoir une méthode pour faire la boucle et "imprimer" le code html.
Développeur web depuis + de 20 ans

Eléphant du PHP | 123 Messages

01 déc. 2012, 22:49

j ai mis effectivement le code de AB sur la page_details.php mais je l avais mis dans le code que je viens de te donné avant ca et cela s affichait tres bien ,seulement pas ou je le veut biensur
je pense pas qu il y est de particularité avec tbs pour le php

Avatar du membre
Mammouth du PHP | 1609 Messages

01 déc. 2012, 22:55

je pense pas qu il y est de particularité avec tbs pour le php
Ben pourtant on dirait bien que si vu que le php dans le template n'est pas interprété mais affiché.
As tu regardé dans la documentation de tinybutstrong ?
Développeur web depuis + de 20 ans

Avatar du membre
Mammouth du PHP | 1609 Messages

01 déc. 2012, 23:01

Sur la page "Why use TinyButStrong ?" (http://www.tinybutstrong.com/description.php) je lis dès le 3ème paragraphe :
With TinyButStrong , there is no piece of code in your Templates. Code is all in the Php side. If you need to multiply the rows of a table, use a block which you combine with a data source using only one Php statement.
Donc à moins qu'il y ai un expert TBS ici je te conseille de te pencher sur sa documentation ou de trouver un forum sur ce moteur.

EDIT tu pourrais mettre à jour le titre du sujet. "Faire une boucle dans un template tinybutstrong". Si quelqu'un connait tu auras plus de chance d'avoir une réponse.
Modifié en dernier par Saian le 01 déc. 2012, 23:18, modifié 1 fois.
Développeur web depuis + de 20 ans