PB Concaténation PHP [Résolu/Fermé]

Signaler
Messages postés
106
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
17 août 2014
-
virtualsof
Messages postés
106
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
17 août 2014
-
Bonjour à tous,
Voila mon ptit souci.

Je cherche à faire une concaténation dans un fichier PHP. Concaténation qui génére les données qui vont êtres insérées dans le fichier XML lui même généré par le fichier PHP... J'me comprends!

le code :

$fichierXML = "sourceXMLgalerie.xml";
//Initialise le compteur à 0
$compteur = 0;
//Répertoire des images à lister
$rep = 'repertoire';
//Constante Vignette
$vign = 'thumbnails'

$compteur = mon array

voila pour les variables et ensuite le résultat après avoir été lire dans un répertoire le nom des fichiers a lister, je voudrai créer le chemin par :

$chemin=("<desc big='$rep .'/'.$vign.'/'.$compteur'/>");

Mais voila, je n'arrive pas à trouver cette syntaxe.

Si qq de bien intentionné et qui aurai un réponse et surtout vois ce message, je lui en serait éternellem.. non reconnaissant tout cours de bien vouloir m'aider :p

MERCI

15 réponses

Messages postés
4100
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
2 septembre 2013
829
Si tu veux concaténer tes informations pour recréer le chemin fais plutot comme ca :
$chemin= "<desc big='".$rep."/".$vign."/".$compteur."'/>"; 

Messages postés
533
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
98
Salut,

Ca ne serait pas quelques chose comme ça ?
$chemin= '<desc big="' . $rep . '/' . $vign . '/' . $compteur . '"/>'; 
Salut,
et $chemin = "<desc big='".$rep ."'/'".$vign."'/'".$compteur."'/>"; ?
2 fois grillaid !
Messages postés
106
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
17 août 2014
14
WHAOU super rapide les gars, merci...

J'essaye et je vous dis ce qu'il en est.

Par contre, si je peux me permettre j'ai un autre ti souci :

Comment je fais pour passer ces valeurs au php qui sont renvoyées à flash ?

J'ai essayé :

<param name="movie" value="../SlideShowModule.swf?galleriexml=XMLGenerator.php&rep=repertoire" />

mais encore une fois je bloque. :(

Ne riez pas svp :p
Messages postés
106
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
17 août 2014
14
Bon alors ca ne marche pas :(

Pour tout vous dire, j'ai utilisé cette source : http://semifershome.free.fr/...

dont j'ai modifié qq lignes :

Fichier PHP : --------------------------------------------------------------------

<?php
//Fichier XML de destination
$fichierXML = "galerieSourceGenerator.xml";
//Initialise le compteur à 0
$compteur = 0;
//Répertoire des images à lister
$rep = 'slideshows/societe/';
//Constante Vignette
$vign = 'thumbs'
//Arborescence
$list = array('.','..');

//Fonction de listage du répertoire------------------------
function listFolder($dest_files) {
    GLOBAL $list;
    $dossier=opendir($dest_files);
    while ($fichier = readdir($dossier)) {
        if (!in_array($fichier, $list)){
            //On incrémente de +1 à chaque fois,
            //ce qui correspond au numéro de l'image
            //dans le fichier XML généré.
            $compteur++;
            //C'est la variable qui contient le résultat
           $e.=('<desc big="' . $rep . '/' . $compteur . '" small="' . $rep . '/' . $vign . '/' . $compteur . '" com='$fichier'/>'); // Merci à vous
        }
    }
    //variable retournée par la fonction
    return $e;
}

//On récupère le résultat de la fonction dans une variable
$dynamic_content = listFolder($rep);

//On ouvre le fichier en mode écriture
//$openfichier = fopen($fichierXML,"r+");
$openfichier = fopen($fichierXML,"w");

//Entête du fichier XML
fwrite($openfichier,'<?xml version="1.0" encoding="utf-8"?>');

//Balise d'ouverture
fwrite($openfichier,'<gallerie>');

//On remplit le fichier avec le résultat retourné par la fonction
fwrite($openfichier,$dynamic_content);

//Balise de fermeture
fwrite($openfichier,'</gallerie>');

//On ferme le fichier
fclose($openfichier); 

?>


----------------------------------------------------------------------------------------------------

Et voici le XML que j'aimerai générer :

<gallerie>
  <desc big="image1.jpg" small="thumbs/image1.jpg" com="image1.jpg"/>
  
</gallerie>


----------------------------------------------------------------------------------------------------


D'ans l'action script :

galleriexml.load("galerieSource.php");




Et enfin le code HTML :

<param name="movie" value="../SlideShowModule.swf" />




J'ai donc comme erreur :

Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\SiteWeb\galeries\SlideShowReader.php on line 11


D'avance merci pour vos conseils eclairés et de passer du temps la dessus
Messages postés
533
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
98
J'ai pas regardé le reste mais pour le parse error, il manque déjà un ;
après
$vign = 'thumbs'
Dr Zoidberg
Messages postés
533
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
98
et remplace
$e.=('<desc big="' . $rep . '/' . $compteur . '" small="' . $rep . '/' . $vign . '/' . $compteur . '" com='$fichier'/>'); 

par (plus simple)
$e.="<desc big=\"$rep/$compteur\" small=\"$rep/$vign/$compteur\" com=\"$fichier\" />"; 

Messages postés
4100
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
2 septembre 2013
829
Comme le souligne Zoidberg, la seule erreur apparente est le ';' manquant.
Après j'ai regardé la source, et elle semble nickel, même pour ce que tu nous as demandé en premier... donc attention aux erreurs de recopies ;)

Bon courage pour la suite.
Messages postés
106
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
17 août 2014
14
ERFFF oui merci effectivement maintenant je n'ai plus cette erreur et en plus ca marche !!!

MERCI Dr Zoidberg.

MAIS (et oui...) ca me renvoie un truc bizarre...

Voici le code XML généré :
<desc big="/1" small="//1" com="NomDuFichier.jpg" />


Je ne comprend pas pq il me numerote les fichiers jusqu'au nombre de fichiers contenus dans le répertoire au lieu de récuperer le nom tout simplement.

Alors voici ce que j'ai essayé :

$e.="<desc big=\"$rep/climextSlideSociete(".$compteur.").jpg\" small=\"$rep/$vign/climextSlideSociete(".$compteur.").jpg\" com=\"$fichier\"/>\n";



Et ca me retourne :

<desc big="/ImageSlideShow(1).jpg" small="//ImageSlideShow(1).jpg" com="ImageSlideShow(10).jpg" />


Dailleurs pq il m'affiche pas la valeur de $vign et de $rep ?

En fait ca me suffirait amplement si cette solution pouvait fonctionner...

Encore merci
Messages postés
4100
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
2 septembre 2013
829
Et si tu remplace :
$rep = 'slideshows/societe/';
//Constante Vignette
$vign = 'thumbs';

Par :
$rep = "slideshows/societe/";
//Constante Vignette
$vign = "thumbs";


Ca te donne quoi ?
Messages postés
533
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
98
Le problème c'est que tes variables $rep et $vign sont définies hors de la fonction listFolder et qu'elles ne sont ni globales, ni passées en paramètres à la fonction. Le plus propre serait de les passées en paramètres.
Messages postés
106
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
17 août 2014
14
Pour répondre à Kij_82, ca ne change rien.

Pour répondre au Dr Zoidberg : heu... bon... bin... ok

Vais essayer de chercher encore :(

En tout cas et je ne le dirais jamais assez : merci
Messages postés
4100
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
2 septembre 2013
829
Il te suffit juste d'inclure tes deux variables dans ta fonction et ca marchera, c'est qu'à voulu dire Dr :
function listFolder($dest_files) {
    GLOBAL $list;
    $dossier=opendir($dest_files);
    $rep = 'slideshows/societe/';
    $vign = 'thumbs';

    while ($fichier = readdir($dossier)) {
        if (!in_array($fichier, $list)){
            //On incrémente de +1 à chaque fois,
            //ce qui correspond au numéro de l'image
            //dans le fichier XML généré.
            $compteur++;
            //C'est la variable qui contient le résultat
           $e.=('<desc big="' . $rep . '/' . $compteur . '" small="' . $rep . '/' . $vign . '/' . $compteur . '" com='$fichier'/>'); // Merci à vous
        }
    }
    //variable retournée par la fonction
    return $e;
}

Messages postés
533
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
98
Si je n'ai pas été clair, tu peux essayer de remplacer:
function listFolder($dest_files,) 

par
function listFolder($rep,$vign)

et
$dynamic_content = listFolder($rep);

par
$dynamic_content = listFolder($rep,$vign);

et
$dossier=opendir($dest_files);

par
$dossier=opendir($rep);


... si je ne me trompe pas
Messages postés
106
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
17 août 2014
14
BRAVO !!!

Je m'incline, ca marche nickel !

Hormis le fait qu'il envoie comme variable à "$com" le nom du fichier qui se trouve en tête du répertoire :

<desc big="slideshows/societe/ImageSlideShow(1).jpg" small="slideshows/societe/thumbs/ImageSlideShow(1).jpg" com="ImageSlideShow(10).jpg"/>


Mais ca en fait, c'est le cadet de mes soucis dans l'immédiat !

Encore un grand merci à tous et spéciale dédicace au Docteur et a Kij_82 !


A BIENTÔT ! hihihihi

RESOLVU !