TranceAddict Forums (www.tranceaddict.com/forums)
- Europe - France
-- Problème de PHP, j' m' en sors pas...
Problème de PHP, j' m' en sors pas...
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 !
C est quoi la différence entre $ascii='A' et $ascii="A"?
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.
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 
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 
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
PS; il n' y a pas de pb de caractères-chaines de caractères...J' ai essayé 
| 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. |
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...
| 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 ![]() 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 PS; il n' y a pas de pb de caractères-chaines de caractères...J' ai essayé |
| 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); |
| quote: |
| if($calcul=strstr($cherche['noms'], "$ascii") |
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
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
.
Je te redis tout ca ce soir.Merci de ton(votre) coup de main !Super sympa.
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. |
| quote: |
| Originally posted by Nightflowers ouaip ca renvoit A 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 |
| quote: |
| Originally posted by stanymi Ouaip je connais, d' ailleurs le Damien SEGUY, il s' occupe aussi de nexen je crois.A mon avis, le mec assure à peine en PHP |
Pour Stan
Solution finale :
j'ai bossé ça ce midi:
Avec la table suivante
#
# Structure de la table `table_test`
#
| quote: |
| CREATE TABLE table_test ( nom varchar(16) NOT NULL default '' ) TYPE=MyISAM; # # Contenu de la table `table_test` # INSERT INTO table_test VALUES ('Armin'); INSERT INTO table_test VALUES ('Shito'); INSERT INTO table_test VALUES ('Lytchix'); INSERT INTO table_test VALUES ('Stan'); INSERT INTO table_test VALUES ('Tiesto'); INSERT INTO table_test VALUES ('Svenson'); INSERT INTO table_test VALUES ('Gielen'); INSERT INTO table_test VALUES ('Dumonde'); |
| quote: |
|
mysql_connect('localhost', 'test', '') or die(mysql_error()); mysql_select_db('test') or die(mysql_error()); $lettre = 'A'; echo ' ';'; ?> |
| quote: |
| A => 1 D => 1 G => 1 L => 1 S => 3 T => 1 |
Powered by: vBulletin
Copyright © 2000-2021, Jelsoft Enterprises Ltd.