Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2006, 11h18   #1
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Par défaut Supprimer un espace en fin de chaine au sein d'une boucle

Bonjour à tous,

J'ai un petit souci pour enlever le dernier caractère d'une chaine, sachant que celui-ci a été placé à l'intérieur d'une boucle. trim() et rtrim() ne fonctionnent pas et c'est assez logique. Mais comment me débarrasser de ce tout dernier caractère ?

Code :
1
2
3
4
5
6
7
 
for($i=0;$i<count($_SESSION['ma_session]);$i++)
{
$item_number[$i] = $_SESSION['ma_session'][$i]['id']."-";//ajout tiret
$item_number[$i] = rtrim($item_number[$i], "-");
echo $item_number[$i];
}
Bref pour que cela ne donne pas 1-2-3-,
ni 123, qui est le résultat de mon exemple.

Merci de votre coup de pouce.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 11h20   #2
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
regarde la fonction substr cela devrait te permettre de t'en sortir, si tu l'utilise avec strlen.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 12h48   #3
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
merci du tuyau...mais je galère grave !!!
t'aurais pas un petit exemple pour illustrer l'utilisation de ces 2 fonctions ? je te remercie
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 13h30   #4
Membre habitué
 
Avatar de johnkro
 
Étudiant
Inscription : juin 2006
Messages : 276
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 276
Points : 146
Points : 146
Envoyer un message via MSN à johnkro
Code :
$chaine=substr ( ta_chaine  , 0 , 5  );
substr va te prendre les 6 premiers caractere de ta chaine spécifiée (ta_chaine). Du coup apres tu fais ce que tu veux. Par exemple si tu as 1-2-3 et que tu veux avoir 123, il te suffit de prendre 1, puis 2 puis 3, puis de les concaténer
__________________
L'eau est un liquide si corrosif, qu'une seule goutte suffit pour troubler le pastis.
johnkro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 14h17   #5
Invité régulier
 
Inscription : juillet 2006
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 8
Points : 6
Points : 6
Tu peux essayer ça :

Code :
1
2
3
4
$chaine="1-2-3-";
$chaine=explode("-",$chaine);
array_pop($chaine);
$chaine=implode("-",$chaine);
$chaine est égale à 1-2-3
luchk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 14h32   #6
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
Citation:
Envoyé par luchk
Tu peux essayer ça :

Code :
1
2
3
4
$chaine="1-2-3-";
$chaine=explode("-",$chaine);
array_pop($chaine);
$chaine=implode("-",$chaine);
$chaine est égale à 1-2-3
Code :
1
2
 
$machaine = substr($machaine,0,strlen($machaine) - 1);
est quand meme beaucoup plus rapide
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 14h37   #7
Membre habitué
 
Avatar de johnkro
 
Étudiant
Inscription : juin 2006
Messages : 276
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 276
Points : 146
Points : 146
Envoyer un message via MSN à johnkro
C'est plus court substr? Quand j'ai vu l'autre solution j'aurais pas cru. Il y a plus de traitement à faire avec substr, mais si c'est plus rapide...
__________________
L'eau est un liquide si corrosif, qu'une seule goutte suffit pour troubler le pastis.
johnkro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 14h40   #8
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
en fait je parlais en code, mais vu que tu fais un explode, puis un array_pop et apres un implode, je pense que le substr est plus rapide, mais sur un si petit exemple cela va etre difficilement vérifiable.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 14h44   #9
Membre habitué
 
Avatar de johnkro
 
Étudiant
Inscription : juin 2006
Messages : 276
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 276
Points : 146
Points : 146
Envoyer un message via MSN à johnkro
ah ok, façon si c'est pour tirer un espace à la fin et que tu as une longueur déterminé, vaut surement mieux faire un substr... Si c'est réolu, coche cette case magique lol. A la prochaine
__________________
L'eau est un liquide si corrosif, qu'une seule goutte suffit pour troubler le pastis.
johnkro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 07h45   #10
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Bonjour à tous ceux qui m'ont répondu...et aux autres.
J'ai dû m'absenter hier, mais là, je viens de tester les divers bouts de code que vous m'avez proposés.
Y a un truc qui cloche...Ma session contient 2 id de 3 chiffres. Ca aurait pu être 3 id de 2 chiffres c'est idem. Le résultat dont j'ai besoin est du type
525-654, ou, 22-45-96

Code :
1
2
3
4
5
6
7
 
for($j=0;$j<count($_SESSION["ma_sess"]);$j++) //parcours de la session
{
$item_number[$j] = $_SESSION["ma_sess"][$j]['id']."-";//ajout du tiret
$item_number[$j] = substr($item_number[$j],0,strlen($item_number[$j]) - 1);
echo $item_number[$j]; 
}
ce bout de code, donne, selon mon premier exemple: 525654, il n'y a donc plus de tiret du tout. Mais je pense que c'est parce que, à chaque tour, la boucle l'ajoute et l'enlève. C'était, je crois, le problème de base. Mais je ne vois pas comment faire à part parcourir le contenu de ma session sans cette boucle...
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 09h55   #11
Membre du Club
 
Inscription : juin 2003
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 46
Points : 43
Points : 43
Salut
Tu peux concatener dans la boucle, supprimer le "-" et afficher $item en dehors de la boucle.
Code :
1
2
3
4
5
6
7
 
for($j=0;$j<count($_SESSION["ma_sess"]);$j++) //parcours de la session
{
$item_number[$j] .= $_SESSION["ma_sess"][$j]['id']."-";//ajout du tiret
}
$item_number[$j] = substr($item_number[$j],0,strlen($item_number[$j]) - 1);
echo $item_number[$j];
__________________
Gaétan
gaetanc15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 10h07   #12
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
euh...c'est à dire que hors de la boucle, $j perd un peu de sa valeur...
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 10h20   #13
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
essaye plutot cela
Code :
1
2
3
4
5
6
 
for($j=0;$j<count($_SESSION["ma_sess"]);$j++) //parcours de la session
{
$item_number[$j] = $_SESSION["ma_sess"][$j]['id']."-";//ajout du tiret
}
$item_number= substr($item_number,0,strlen($item_number) - 1);
la tu virais le - a chaque boucle alors que tu veux l'enlever au final.
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 15h48   #14
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Ben non ça peut pas fonctionner (Array to string conversion), et même si je déclare $item=array(), puisque ma boucle parcourt vraiment un tableau multi-dimensionnel. Il faut que j'arrive à stopper la boucle dans son dernier tour, et à ce moment là: lancer le substr...
Quelle prise de chou !
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 15h57   #15
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
si j'ai bien compris dans $item_number tu as une valeur par ligne.
donc il te suffit de faire
Code :
1
2
 
echo implode("-",$item_number);
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 12h05   #16
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
on y est presque...implode affiche 123--456, je comprends pas trop bien pourquoi...
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 14h13   #17
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
que donne un
Code :
1
2
 
var_dump($item_number);
?
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 14h24   #18
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Merci de ton intérêt pour mon post. Ca donne: string(8) 655--332

je te remets mon code de la boucle

Code :
1
2
3
4
5
6
7
8
9
 
 
for($j=0;$j<count($_SESSION["panier"]);$j++)
{
$item_number[$j] = $_SESSION["panier"][$j]['id']."-";
}
$item_number = implode("-",$item_number); 
$item_number= substr($item_number,0,strlen($item_number) - 1);
echo var_dump($item_number);
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 14h31   #19
Membre Expert
 
Avatar de Bebel
 
Homme David B.
Développeur informatique
Inscription : avril 2003
Messages : 742
Détails du profil
Informations personnelles :
Nom : Homme David B.
Âge : 29
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : avril 2003
Messages : 742
Points : 1 085
Points : 1 085
De rien, ca me donne une idee un peu plus précise.
sinon tu peux ajouter également
un var_dump($_SESSION["panier"]);
et ton resultat que tu souhaite ca ne serait pas "655-332" ?
__________________
Tout énigme a une solution ! Tout est question de discipline !
Bebel est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 14h38   #20
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
le var_dump sur le $_SESSION ne donne rien...
et, oui un résulatat du type 123-456 est exactement ce que je recherche !
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h50.


 
 
 
 
Partenaires

Hébergement Web