Si la chaine commence par... alors...

Résolu/Fermé
Aka13 Messages postés 153 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 8 février 2016 - 12 févr. 2011 à 01:16
Aka13 Messages postés 153 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 8 février 2016 - 12 févr. 2011 à 12:42
Bonjour,

Ma table sql "pseudo" contient :

ABC123
ABC555
BDE221
ABC485
ZKK215

J'aimerais que si la chaine commence par "ABC", num sera égal à 1
$pseudo = $row["pseudo"];
if ($pseudo ^ABC)
	{$num = "1";}
else
	{$num = "2";}
$url = "$pseudo : http://monsite.fr/$num";

echo "$url";

J'aimerais que le résultat soit :
ABC123 : http://monsite.fr/1
ABC555 : http://monsite.fr/1
BDE221 : http://monsite.fr/2
ABC485 : http://monsite.fr/1
ZKK215 : http://monsite.fr/2

2 réponses

Aka13 Messages postés 153 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 8 février 2016 8
12 févr. 2011 à 12:39
Problème résolu,

Au lieu de mettre :

$pseudo = $row["pseudo"];
$test = substr($pseudo,0,3);
if ($test == "ABC")
	{$num = "1";}
if ($test == "XXX")
	{$num = "2";}
if ($test == "KSJ")
	{$num = "3";}
else
	{$num = "4";}


J'ai mis :
$pseudo = $row["pseudo"];
$test = substr($pseudo,0,3);
if ($test == "ABC")
	{$num = "1";}
else if ($test == "XXX")
	{$num = "2";}
else if ($test == "KSJ")
	{$num = "3";}
else
	{$num = "4";}


Donc en gros remplacer "if" par "else if"

Merci à toi Groarh de m'avoir rappeller la fonction substr :)
1
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
12 févr. 2011 à 01:34
Salut,
y'a tout un tas de solutions.
> PHP :
- utiliser substr ou toute autre variante, combiné à une comparaison == ;
- utiliser substr_compare qui fait les deux en même temps ;
- utiliser une regexp (peut-être un peu exagéré).

> SQL :
utiliser LIKE, comme dans :
SELECT * FROM table WHERE pseudo LIKE 'ABC%'


Tu as le choix des armes ;)
-1
Aka13 Messages postés 153 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 8 février 2016 8
12 févr. 2011 à 01:44
Salut,
Pour SELECT * FROM table WHERE pseudo LIKE 'ABC%'
Je ne peut pas faire cette fonction, $pseudo est utiliser pour beaucoup d'autres choses dans mon code. Et j'ai besoin de IF et ELSE

Donc il me faudrait un style :
if ($pseudo == "^ABC")
	{$num = "1";}
else
	{$num = "2";}

Ou sinon tu pourrais m'expliquer pour substr ou substr_compare
0
rudak Messages postés 587 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
12 févr. 2011 à 08:42
preg_match ?
0
Aka13 Messages postés 153 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 8 février 2016 8
12 févr. 2011 à 09:49
J'ai déjà essayer je n'arrive pas avec preg_match
0
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
12 févr. 2011 à 11:06
substr_compare est une fonction de comparaison de chaînes, elle renvoie un nombre indiquant la « différence » entre ces deux chaînes, basé sur une sorte d'ordre alphabétique. Si les chaînes sont identiques, elle renvoie 0.
Contrairement à str_compare, cette fonction permet de ne regarder que le début des chaînes : on lui donne un offset et une longueur. Dans notre cas, l'offset est 0 (le début de la chaîne) et la longueur 3.

if (0 == substr_compare($pseudo, 'ABC', 0, 3)) {
    $num = "1";
} else {
    $num = "2";
}


https://www.php.net/manual/fr/function.substr-compare.php
0
Aka13 Messages postés 153 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 8 février 2016 8
12 févr. 2011 à 12:02
Merci, mais comme j'ai beaucoup de comparaison a faire j'aurais préférer un code plus cour.
J'ai donc utiliser sa :


$pseudo = $row["pseudo"];
$test = substr($pseudo,0,3);
if ($test == "ABC")
	{$num = "1";}
else
	{$num = "2";}

Ce morceau de code va très bien mais si je veut faire + de valeurs, il me compte que le dernier if :
$pseudo = $row["pseudo"];
$test = substr($pseudo,0,3);
if ($test == "ABC")
	{$num = "1";}
if ($test == "XXX")
	{$num = "2";}
if ($test == "KSJ")
	{$num = "3";}
else
	{$num = "4";}

Il ne me compte que KSJ ou le else
Comment remédier à sa ?
0