Page 1 sur 1

afficher plusieurs image uploader

Posté : 22 juin 2007, 05:11
par x@v
Bonjour,
j'ai un script d'upload, ou j'ai stocker le nom pour pouvoir l'afficher une fois télécharger :
$chemin='<img src="http://courant-alternatif.org/alain/images/'. 
$_FILES['photo']['name'].'" alt="'. $_FILES['photo']['name'].'" />';
ensuite je met la variable dans le textarea :
$chemin.stripslashes($article['article_text']);
Ce qui me permet effectivement d'afficher une seule image mais je souhaiterai pouvoir afficher plusieurs images differentes.
J'ai essayer de boucler dans un tableau en concatenant la varaible avec plusieurs chemin mais c'est la même photo qui se répètent,
Merci :)

Posté : 22 juin 2007, 07:42
par sadeq
Le problème est que les uploads se font un par un. Il faut donc mémoriser les chemins un par un dans une variable de session en les concaténant at quand les uploads des images sont terminés tu balance la sauce dans l'echo. :wink:

Un truc de ce genre:

Dans le code d'upload d'une image:
//activer la session
session_start();

//ajouter le chemin dans la mémoire globale
$_SESSION["chemin"] . = '<img src="http://courant-alternatif.org/alain/images/'. 
$_FILES['photo']['name'].'" alt="'. $_FILES['photo']['name'].'" />';
et dans l'afficheur:
$_SESSION["chemin"].stripslashes($article['article_text']);

Posté : 22 juin 2007, 13:27
par x@v
il y a un truc qui me tracasse, la variable de session sera écraser par la précédente comme à l'origine de mon problème. Mais pourquoi on la concatène et avec quoi ?
$_SESSION["chemin"] . =
:)

Posté : 22 juin 2007, 15:55
par sadeq
Mais non, justement puisqu'on utilise une variable de session et qu'on fait un .= (concaténation) la valeur précédente de la session reste et la nouvelle valeur sera ajoutée.

Exemple: NB: si tu veux vider cette mémoire de session volontairement t'as qu'à écrire le code suivant:
$_SESSION["chemin"] = null;
La session est faite pour ça, c'est à dire garder des valeurs durant toute la navigation d'un client.

Remarque sur la notation $variable .= 'valeur' :
Cette forme est une concaténation entre la valeur précédente (s'il y'en a) de $variable et la valeur donnée
C'est l'équivalent abrégé de la forme normale: $variable = $variable . 'valeur'

Posté : 22 juin 2007, 18:07
par x@v
sa fonctionne, mais j'ai du mal à comprendre le fonctionnement, avec une varaible pour concaténer on dois.
$i = 'balbla';
$i .= 'balbla';
si sa ne commence pas par une variable normal sa renvoie une erreur.
Puis comment se fait-il que la variable de session n'écrase pas la précédente.
$_SESSION["chemin"].stripslashes($article['article_text']);
:D

Posté : 22 juin 2007, 19:52
par thehawk
tu peux considerer le " . " comme un systeme de colle , qui permet par exemple d'assemblers des varibles du texte etc

Donc avec :
 
$variable2 = 'dit : jean claude';
$variable = 'bla'.$variable2;
//tu obtiendra : bla dit : jean claude
Ensuite la syntaxe :
$_SESSION['truc'] .= 'BLa';
A pour équivalent ,
$_SESSION['truc']  = $_SESSION['truc']. 'BLa';
En esperant etre clair

Posté : 22 juin 2007, 21:55
par sadeq
sa fonctionne, mais j'ai du mal à comprendre le fonctionnement, avec une varaible pour concaténer on dois.
$i = 'balbla';
$i .= 'balbla';
si sa ne commence pas par une variable normal sa renvoie une erreur.
Puis comment se fait-il que la variable de session n'écrase pas la précédente.
$_SESSION["chemin"].stripslashes($article['article_text']);
:D
Pour les variables normales, il faut effectivement initialiser la variable avant de procéder à des concaténations par .= comme dans l'exemple que t'as donné.

Pour la question de la session et pour le code que tu as affiché:
$_SESSION["chemin"].stripslashes($article['article_text']);
ici la variable de session ne sera pas modifiée car elle est simplement concaténée à la chaîne stripslashes($article['article_text']) pour être affichée.

Pour que cette forme devienne une modification de la variable de session il faut écrire une affectation par concaténation.
Par exemple:
$mot = "A"; //initialisation => création de la valeur de $mot (nouvelle valeur)
$mot . = "B" //affectation par concaténation => Ajout dans $mot (sauvegarde de l'ancienne valeur)
echo $mot . "C"; //affichage de $mot attaché à la lettre "C" => pas de modification de $mot 
Et c'est vrai aussi pour les variables de session.

Posté : 23 juin 2007, 03:31
par x@v
En faite ce qui se passe c'est que j'ajoute un article, mais quand je reviens dessus, les images que j'ai mise la première fois se répète, surement parce que la session à enregistrer les images.
Donc tu ma dit de faire
// remet à 0 la variable avant insertion
$_SESSION["chemin"] = null;
ce qui à pour effet d'effacer la session et donc de ne rien afficher.
Mon code (une partie de la fonction) :
$_SESSION["chemin"] = null;
<textarea id="textarea_article" name="article_text"><?php echo
 $_SESSION["chemin"].stripslashes($article['article_text']);
</textarea>
je ne maitrise pas sont comportement

Posté : 11 août 2007, 14:04
par artotal
seulement de cette manière on doit mettre les image avant sont article ou sinon sa efface l'article qui existe déjà !
Donc mettre les images avant de taper sont article.