Enlever le dernier tiret(-)

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 : Enlever le dernier tiret(-)

Re: Enlever le dernier tiret(-)

par rimie » 14 févr. 2012, 15:26

merci a vous tous, c'est RESOLU

Re: Enlever le dernier tiret(-)

par moogli » 14 févr. 2012, 14:37

par exemple ^^

Re: Enlever le dernier tiret(-)

par rimie » 14 févr. 2012, 12:46

un truc comme:
<?php
$sentence = array('apple'=>'one', 'orange'=>'two');

foreach($sentence as $k=>$v)
{
	$suite[] = '<a href="'.$v.'">'.$k.'</a>';
}

$liste = implode(' - ', $suite);
echo $liste;
?>

Re: Enlever le dernier tiret(-)

par sirakawa » 14 févr. 2012, 10:24

Quant à moi, je pense que le plus simple est de mettre les éléments dans un tableau, comme dit ci-dessus,
foreach()
{
$tableau[] = "tout le barratin voulu";
}
$liste = implode ("-", $tableau);

Re: Enlever le dernier tiret(-)

par rimie » 14 févr. 2012, 09:56

La variable est écrasée à chaque itération de la boucle.
Il faut utiliser un tableau ou concaténer les valeurs dans une chaîne de caractères suivant ce que tu veux faire.
quelque chose comme:
$sentence = array('apple'=>'one', 'orange'=>'two');

$list = '';
foreach($sentence as $k=>$v)
{
	$list .= $k. ', ';
	$suite[] = $k;
}

var_dump($suite).'<br />'; // retourne: array(2) { [0]=> string(5) "apple" [1]=> string(6) "orange" }
la comment extraire apple - orange

Re: Enlever le dernier tiret(-)

par moogli » 14 févr. 2012, 09:49

<?php

$etudiants_list = '';
                foreach($resultshk as $shkK=>$shkV)
                {
                        $etudiants_ar = $shkV['etudiants_ar'];
                        $etudiants_tran = $shkV['etudiants_tran'];

                $etudiants_list [size=200][b].=[/b][/size] '<a href="etudiantss/'.$etudiants_tran.'.html" title="'.$pic.'" class="tooltip">'.$etudiants_ar.'</a> - ';   
                
                echo substr($etudiants_list, 0,-1); // resultat: Etudiant1 -Etudiant2 -
                }
?>
==> $etudiants_list .= '<a href="etudiantss/'.$etudiants_tran.'.html" title="'.$pic.'" class="tooltip">'.$etudiants_ar.'</a> - ';
j'suis p'tet pas réveillé le matin mais c'est déja ce que fait le code de base, avec le echo a mettre en dehors.
ou est le problème ?

tu ne comprend pas le code que tu a posté ? si oui demande et peux expliquer, sinon ça va tourner en rond ^^

@+

Re: Enlever le dernier tiret(-)

par xTG » 14 févr. 2012, 09:37

La variable est écrasée à chaque itération de la boucle.
Il faut utiliser un tableau ou concaténer les valeurs dans une chaîne de caractères suivant ce que tu veux faire.

Re: Enlever le dernier tiret(-)

par rimie » 14 févr. 2012, 08:16

si je defini une variable au sein de foreach(), et je la recupere apres, je dois obtenir tous les etudiants, par contre j'obtiens seulement le dernier:
foreach(){

$var = $etudiant;
}

echo $var; // je dois avoir ici la liste des etudiants

Re: Enlever le dernier tiret(-)

par moogli » 14 févr. 2012, 07:49

Avec le code que tu indique tu ajoute à la chaîne un lien à chaque tour de foreach (c'est le rôle du .=).

D'ailleurs en y réfléchissant ton code récupère seulement le dernier caractère. (regarde bien la doc de la fonction c'est un des cas qui y sont expliqués).

Encore une fois regarde la doc de la fonction que je t'est indiqué, ou utilisé substr avec la bonne fin.

@+

Re: Enlever le dernier tiret(-)

par rimie » 14 févr. 2012, 07:02

je mets comme ca:
foreach(){ 

}

echo '...............';
alors je voudrais avoir un echo hors de la boucle et recuperer tout le resultat, pas le dernier seulement, c'est pour cela j'ai mis "$etudiants_list = '';"

Re: Enlever le dernier tiret(-)

par moogli » 14 févr. 2012, 06:58

Le echo c'est en dehors de la boucle qu'il faut le mettre ^^

Le reste semble bon en dehors du fait que ton dernier caractère c'est pas un tirer mais un espace :mrgreen:

Je te conseil d'utiliser la fonction indiquée ci dessous voir de rester avez if dans le foreach !

@+

Re: Enlever le dernier tiret(-)

par rimie » 14 févr. 2012, 06:34

Salut,

Si tu est sur de ton coup tu peux utiliser strrchr pour trouver la dernière occurrence tu tirer et le supprimer ainsi Ue ce qu'il a ensuite.

Tu peux aussi, lors de la construction, vérifier s'il s'agit du dernier et ne mettre le tiret. Côté perd je ne sais pas lequel serait le plus rapide.

@+
j'ai edite la partie
et quand je met echo hors de foreach{} il affiche juste le dernier element
elle etait dans le code

Re: Enlever le dernier tiret(-)

par moogli » 14 févr. 2012, 06:31

Salut,

Si tu est sur de ton coup tu peux utiliser strrchr pour trouver la dernière occurrence tu tirer et le supprimer ainsi Ue ce qu'il a ensuite.

Tu peux aussi, lors de la construction, vérifier s'il s'agit du dernier et ne mettre le tiret. Côté perd je ne sais pas lequel serait le plus rapide.

@+

Enlever le dernier tiret(-)

par rimie » 14 févr. 2012, 05:34

Bonjour,

Je fais une boucle foreach issue d'une requete, dont je selectionne les etudiants en les separant par un tiret (-), je veux enlever le dernier tiret pour avoir un affichage comme: Etudiant1 - Etudiant2 - Etudiant3
<?php

$etudiants_list = '';
		foreach($resultshk as $shkK=>$shkV)
		{
			$etudiants_ar = $shkV['etudiants_ar'];
			$etudiants_tran = $shkV['etudiants_tran'];

		$etudiants_list .= '<a href="etudiantss/'.$etudiants_tran.'.html" title="'.$pic.'" class="tooltip">'.$etudiants_ar.'</a> - ';	
		
		echo substr($etudiants_list, 0,-1); // resultat: Etudiant1 -Etudiant2 -
		}
		
		    				


?>

et quand je met echo hors de foreach{} il affiche juste le dernier element :(

merci pour votre aide