[RESOLU] faire une boucle

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 : [RESOLU] faire une boucle

Re: faire une boucle

par baddevil » 01 déc. 2012, 23:04

je vais jeter un oeil dessus malgré que tout soit en anglais et que je comprend pas tout, sinon faudrait que je trouve la solution comme tu l as dit de mettre le code de AB mais de l interpreté par tbs ensuite,c est ce que j essayai de faire au debut mais e n y arrivait pas

en faite je sais recuperé la variable et de l affiché dans le template
mais la le code de AB j ai dossier file et value et je vois pas comment fusionné le tout

Re: faire une boucle

par Saian » 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.

Re: faire une boucle

par Saian » 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 ?

Re: faire une boucle

par baddevil » 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

Re: faire une boucle

par Saian » 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.

Re: faire une boucle

par baddevil » 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;
}
}  

Re: faire une boucle

par Saian » 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).

Re: faire une boucle

par baddevil » 01 déc. 2012, 21:45

tu penses que cela viendrai d ou?

Re: faire une boucle

par Saian » 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 ?

Re: faire une boucle

par baddevil » 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

Re: faire une boucle

par Saian » 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...

Re: faire une boucle

par baddevil » 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 ?

Re: faire une boucle

par Saian » 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>

Re: faire une boucle

par baddevil » 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...

Re: faire une boucle

par Saian » 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>";