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

Résolu
Aka13 Messages postés 184 Statut Membre -  
Aka13 Messages postés 184 Statut Membre -
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

--
Cordiallement Aka13

2 réponses

  1. Aka13 Messages postés 184 Statut Membre 8
     
    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
  2. Groarh Messages postés 706 Statut Membre 185
     
    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
    1. Aka13 Messages postés 184 Statut Membre 8
       
      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
    2. rudak Messages postés 590 Date d'inscription   Statut Membre Dernière intervention   46
       
      preg_match ?
      0
    3. Aka13 Messages postés 184 Statut Membre 8
       
      J'ai déjà essayer je n'arrive pas avec preg_match
      0
    4. Groarh Messages postés 706 Statut Membre 185
       
      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
    5. Aka13 Messages postés 184 Statut Membre 8
       
      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