|
Problème de PHP, j' m' en sors pas...
|
View this Thread in Original format
| stanymi |
Bon alors voilà j' expose.
Le code ASCII A à Z ca donne de A jusqu' à Z, ca c' est OK.
Si j' ai une variable $ascii='A'
echo $ascii; retourne A.
Bon OK, on continue...
J'ai ma base de données avec par exemple
Armin,
Bob,
Zoe,
Abdel,
Julien,
...
Je veux comptabiliser combien il y a de noms qui commencent par A(Y en a 2 donc !)
$req=mysql_query("SELECT noms FROM TABLE");
$compte="0";
While($cherche=mysql_fetch_array($req))
{
if($calcul=strstr($cherche['noms'], "$ascii")
{
$compte=$compte+1;
}
}
echo $compte;
Voilà mon pb, si ma variable de départ est $ascii="A", ca marche, mon echo $compte me retourne bien le 2 mais si je laisse mon $ascii='A' mon echo $compte me retourne 0.
Et vu que je fais ca pour toutes les lettres de l' alphabet ca m' était plus facile de faire une boucle en faisant des +1 sur le code ascii plutot que de mettre A>...>Z
J' espère m' etre bien fait comprendre et que vous trouverez une réponse à mon problème.
D' avance merci ! |
|
|
| PEZ68 |
| C est quoi la différence entre $ascii='A' et $ascii="A"? |
|
|
| maxxyme |
Il me semble que c'est un problème de différence entre un caractère et une chaîne de caractères.
$ascii="A" => ça doit être pour le caractère A
$ascii='A' => ça doit être pour la chaîne de caractères A
et en fait tu peux pas faire + 1 sur une chaîne de caractères... (enfin il me semble) ... je vais essayer de regarder ça ce soir (vite fait)
En fait vaudrait mieux que tu fasses une requête du type SELECT COUNT(*) FROM table WHERE nom LIKE "A%"
c'est mieux puisque c'est ta base de onnées qui va te compter directement le nombre de noms qui commencent par A...
et donc ta requête tu la fabriques au fur et à mesure que tu avances dans ta boucle. |
|
|
| Nightflowers |
la solution pour regler le problem est de passer par le code du caractere.
Comme ca en plus tu pourra faire ton incrementation
la fonction c'est ca:
string chr(int)
voila :) |
|
|
| stanymi |
Bon alors on efface tout on recommence...
Chui dsl, j' avais pas relu mon post...
Ma deuxième phrase, je voulais dire
"Le code ASCII &.#.6.5 à &.#.9.0(sans les points évidemment) ca donne de A jusqu' à Z, ca c' est OK."
Et comme je dois faire ca pour toutes les lettres de l' alphabet Maxx, ton truc marche mais ca me fait écrire 26 lignes :eyes:
Moi je veux faire une boucle ou $ascii=&.#.6.5;
$ascii=$ascii+1; juska $ascii=&.#.9.0
Voilà j' espère m' etre fait comprendre :rolleyes:
PS; il n' y a pas de pb de caractères-chaines de caractères...J' ai essayé ;) |
|
|
| mr_sick |
| quote: | Originally posted by maxxyme
Il me semble que c'est un problème de différence entre un caractère et une chaîne de caractères.
$ascii="A" => ça doit être pour le caractère A
$ascii='A' => ça doit être pour la chaîne de caractères A
et en fait tu peux pas faire + 1 sur une chaîne de caractères... (enfin il me semble) ... je vais essayer de regarder ça ce soir (vite fait)
En fait vaudrait mieux que tu fasses une requête du type SELECT COUNT(*) FROM table WHERE nom LIKE "A%"
c'est mieux puisque c'est ta base de onnées qui va te compter directement le nombre de noms qui commencent par A...
et donc ta requête tu la fabriques au fur et à mesure que tu avances dans ta boucle. |
C'est ce que j'aurais fait aussi... |
|
|
| LoginZ |
Je pense que le mieux c'est d'aller sur irc #tranceaddict
et de demander à Swamper parce que sur le php a aujourd'hui il doit en connaitre un bout... |
|
|
| Nightflowers |
| quote: | Originally posted by stanymi
Bon alors on efface tout on recommence...
Chui dsl, j' avais pas relu mon post...
Ma deuxième phrase, je voulais dire
"Le code ASCII &.#.6.5 à &.#.9.0(sans les points évidemment) ca donne de A jusqu' à Z, ca c' est OK."
Et comme je dois faire ca pour toutes les lettres de l' alphabet Maxx, ton truc marche mais ca me fait écrire 26 lignes :eyes:
Moi je veux faire une boucle ou $ascii=&.#.6.5;
$ascii=$ascii+1; juska $ascii=&.#.9.0
Voilà j' espère m' etre fait comprendre :rolleyes:
PS; il n' y a pas de pb de caractères-chaines de caractères...J' ai essayé ;) |
t'as essayé ma solution?
tu peux essayer de faire une boucle de 65 a 90 ke tu fou dans un param style $i et apres tu fou
$ascii=$i;
ou
$ascii=chr($i); |
|
|
| stanymi |
| quote: | Originally posted by Nightflowers
t'as essayé ma solution?
tu peux essayer de faire une boucle de 65 a 90 ke tu fou dans un param style $i et apres tu fou
$ascii=$i;
ou
$ascii=chr($i); |
:crazy:
Ca c pas le pb;
dans | quote: | | if($calcul=strstr($cherche['noms'], "$ascii") |
Si $ascii="&.#.6.5"; ca marche pas.
Si $ascii="A"; ca marche.
Je pense pas que tu aies compris mon pb...
La ca doit etre mieux nan ?
En tout k, merci de votre aide ben précieuse..
J' ai posté sur phpdebutant
forum phpdebutant et un mec me parle de la fonction ord() que j' essaierai demain...Pkoi demain ?Lisez mon dernier post, MDR !!!!! |
|
|
| Nightflowers |
ce que je comprend pas c'est ca :
$ascii="&.#.6.5";
tu veux avoir quoi dans $ascii en fait, tu veux avoir "A" ou "&.#.6.5" ?
je veux dire, "&.#.6.5" c'est sencé etre égal à "A"?
parce que si c'est le cas $ascii=chr(65); ca marche
je capte pas la |
|
|
| stanymi |
Je veux éviter d' avoir $ascii=A, $ascii1=B...$ascii25=Z.
C' est pour ca qu' avec le code ascii, vu qu' il y a des chiffres, je pouvais faire une boucle.
Mais ton chr(65) renvoit A ?
Ben alors si ca ca marche, je vais essayer car je connaissais pas :p .
Je te redis tout ca ce soir.Merci de ton(votre) coup de main !Super sympa. |
|
|
| Nightflowers |
ouaip ca renvoit A
| quote: |
chr
(PHP 3, PHP 4 )
chr -- Retourne un caractère spécifique
Description
string chr ( int ascii)
chr retourne une chaîne d'un seul caractère, dont le code ASCII est donné par le paramètre ascii.
|
d'ailleur je te conseil ce site qui est incontournable et meme indispensable : http://www.php.net/manual/fr/
y'a un moteur de recherche de fonctions etc... c'est bien foutu :) |
|
|
|
|