Substr_replace PHP
Dernière réponse : dans Programmation
Bonsoir
J'ai un problème concernant le remplacement d'une chaine de caractère au moment voulu.
Donc dans ma base de donnée j'ai des numéro de téléphones qui sont stockés.
Et moi ce que je veux faire c'est mettre un virgule à la dernière position de ma chaine de caractère.
J'ai fait ca:
donc à priori cette méthode marche très bien, mais pas comme je voudrai, car vu de cette façon, ca me rajoute une virgule à chaque chaine de caractère comme par ex si j'ai 2 numéros j'aurais: +33612345678,+336891011123,
Or moi ce que je veux faire c'est ajouté une virgule entre chaque nouveau numero et enlever la virgule qui traine derrière.
Dois je faire une boucle?
Cordialement
J'ai un problème concernant le remplacement d'une chaine de caractère au moment voulu.
Donc dans ma base de donnée j'ai des numéro de téléphones qui sont stockés.
Et moi ce que je veux faire c'est mettre un virgule à la dernière position de ma chaine de caractère.
J'ai fait ca:
$req=mysql_query("SELECT numero,droit FROM tbl_user WHERE droit= TRUE ") or die(mysql_error()); while($row=mysql_fetch_object($req)){ $destinataire=substr_replace("$row->numero",",",12,0); echo $destinataire; }
donc à priori cette méthode marche très bien, mais pas comme je voudrai, car vu de cette façon, ca me rajoute une virgule à chaque chaine de caractère comme par ex si j'ai 2 numéros j'aurais: +33612345678,+336891011123,
Or moi ce que je veux faire c'est ajouté une virgule entre chaque nouveau numero et enlever la virgule qui traine derrière.
Dois je faire une boucle?
Cordialement
Autres pages sur : substr replace php
Lassé par la pub ? Créez un compte
Oups pardon, en effet c'est du PHP, j'ai oublié de mettre les $ devant les noms de variables, et puis je suis pas sûr qu'on ai besoin de mettre de "int" devant les variables en PHP. Désolé, je faisais du C# à côté
Ca donnerait plutôt :
Et pour l'explication de :
C'est une condition (un if) ternaire équivalent à
On regarde si le numéro de ligne actuel est égal au nombre de lignes dans la requête, si c'est égal, on ne concatène rien au numéro, et sinon on concatène une virgule.
Ca donnerait plutôt :
$req=mysql_query("SELECT numero,droit FROM tbl_user WHERE droit= TRUE " ) or die(mysql_error());
$rowCount = mysql_row_count($req);
$i = 1;
while($row=mysql_fetch_object($req)){
$destinataire= $row->numero + ($i == $rowCount) ? "" : ",";
echo $destinataire;
$i++;
}
Et pour l'explication de :
($i == $rowCount) ? "" : ","
C'est une condition (un if) ternaire équivalent à
if ($i == $rowCount)
return "";
else
return ",";
On regarde si le numéro de ligne actuel est égal au nombre de lignes dans la requête, si c'est égal, on ne concatène rien au numéro, et sinon on concatène une virgule.
lol oui c'est ce que j'ai vu sur ce site: http://www.phpfreaks.com/forums/index.php?topic=127946....
"its not
mysql_count_row
but its
mysql_num_rows"
"its not
mysql_count_row
but its
mysql_num_rows"
j'essaye de refaire à ma sauce avec des if pour mieux comprendre, mais je sèche vraiment.
$req1=mysql_query("SELECT id_user,numero,droit FROM tbl_user WHERE droit= TRUE ");
$nombre=mysql_num_rows($req1);
//echo $nombre;
while($row=mysql_fetch_object($req1)){
$i++;
if($nombre == 1){
echo $row->numero;
}
else {
$num_modif=$row->numero ;
}
}
je n'y arrive pas, che pas quoi mettre pour ajouter une virgule uniquement entre les deux numeros.
$req1=mysql_query("SELECT id_user,numero,droit FROM tbl_user WHERE droit= TRUE ");
$nombre=mysql_num_rows($req1);
//echo $nombre;
while($row=mysql_fetch_object($req1)){
$i++;
if($nombre == 1){
echo $row->numero;
}
else {
$num_modif=$row->numero ;
}
}
je n'y arrive pas, che pas quoi mettre pour ajouter une virgule uniquement entre les deux numeros.
Je n'ai pas compris...
Si tu as 2 chaines dans ta base de données :
$nombre = 2 et avant d'entrer dans le while, $i=0
on entre dans le while, $i = 1, $i est différent de $nombre, donc on affiche le numéro et une virgule
on boucle dans le while, $i = 2, $i est égal à $nombre, donc on affiche seulement le numéro
Qu'est ce qui ne va pas là dedans ?
Si tu as 2 chaines dans ta base de données :
Qu'est ce qui ne va pas là dedans ?
Salut Omar,
Voila dans ma base de donnée j'ai exactement deux numéros de portables qui sont à TRUE;
Donc moi ce que je voudrais c'est simplement ajouter une virgule entre deux numéros de téléphone,
Comme: +3361234578,+331234678 GOOD
et ainsi de suite:
+3361234567,+3361234678,+3312364578 GOOD
Mais je ne doit pas avoir de virgule à la fin de du dernier numéro:
+336123456,+3312345678, : FAUX
Voici une méthode qui permet d'envoyer un sms via la lib SOAP!
Dans cette méthode telephonySmsSend, le paramètre $destinataire: c'est justement les numéros que je récupère de ma base de donnée'si il y en a plusieurs) et je les affiche dans cette fonction.
Donc en aucun cas je dois avoir de virgule qui traine à la fin des numéros, mais toujours entre deux numéros ou trois ou quatre ect... consécutif sans quoi elle va crier ^^
En gros la syntaxe que je doit adopter est la suivante:
Ou si il n'y a qu'un seul numéro, on ajoute pas de virgule:
MAIS JAMAIS une virgule à la fin!!!!
Je ne sais pas si ta compris?
Cordialement
Voila dans ma base de donnée j'ai exactement deux numéros de portables qui sont à TRUE;
Donc moi ce que je voudrais c'est simplement ajouter une virgule entre deux numéros de téléphone,
Comme: +3361234578,+331234678 GOOD
et ainsi de suite:
+3361234567,+3361234678,+3312364578 GOOD
Mais je ne doit pas avoir de virgule à la fin de du dernier numéro:
+336123456,+3312345678, : FAUX
Voici une méthode qui permet d'envoyer un sms via la lib SOAP!
$result=$soap->telephonySmsAccountList($session);
$soap->telephonySmsSend($session, "$result[0]", "$expéditeur", "$destinataire", "Alerte! une intrusion a ete detecte", "fale", "1", "0", "3");
Dans cette méthode telephonySmsSend, le paramètre $destinataire: c'est justement les numéros que je récupère de ma base de donnée'si il y en a plusieurs) et je les affiche dans cette fonction.
Donc en aucun cas je dois avoir de virgule qui traine à la fin des numéros, mais toujours entre deux numéros ou trois ou quatre ect... consécutif sans quoi elle va crier ^^
En gros la syntaxe que je doit adopter est la suivante:
$soap->telephonySmsSend($session, "$result[0]", "$expéditeur", "+33612345678,+3312345678", "Alerte! une intrusion a ete detecte", "fale", "1", "0", "3");
Ou si il n'y a qu'un seul numéro, on ajoute pas de virgule:
$soap->telephonySmsSend($session, "$result[0]", "$expéditeur", "+3312345678", "Alerte! une intrusion a ete detecte", "fale", "1", "0", "3");
MAIS JAMAIS une virgule à la fin!!!!
$soap->telephonySmsSend($session, "$result[0]", "$expéditeur", "+3312345678,+33123645678,", "Alerte! une intrusion a ete detecte", "fale", "1", "0", "3");
Je ne sais pas si ta compris?
Cordialement
Hmm mais chez moi ca ne marchait pas,
mais j'ai trouvé la solution c'est d'utiliser la fonction implode, et ca marche bien $_$
J'ai fait comme ceci:
Et ca marche
Cordialement
mais j'ai trouvé la solution c'est d'utiliser la fonction implode, et ca marche bien $_$
J'ai fait comme ceci:
$req1 = mysql_query("SELECT id_user,numero,droit FROM tbl_user WHERE droit= TRUE "); $liste = array(); while($row=mysql_fetch_object($req1)) { $liste[] = $row->numero; } echo implode(',',$liste).'</br>';
Et ca marche
Cordialement
Lassé par la pub ? Créez un compte