Page 1 sur 2

Quelques questions PHP avec SMS GO de RENTABILIWEB

Posté : 01 déc. 2006, 19:48
par sisi37
Salut à tous !
Tout d'abord, je suis très débutant dans le PHP, je commence tout doucement à étudier MySQL et ensuite aborder le PHP... mais bon, il va me falloir du temps !

Donc je souhaitez avoir de l'aide à propos de ça :
http://documentation.rentabiliweb.com/SMSgo.pdf

Je m'explique, cela permet à des utilisateurs d'envoyer une requête sur un site Internet par SMS. Et ils reçoivent en réponse un SMS pré-programmé pour répondre OUI ou NON.

Voilà ce que je voudrais faire :
Ce serait que tous les 10 SMS, la réponse soit "OUI" et que le reste du temps, la réponse soit "NON".

Avez-vous une idée de comment faire ?

Je vous en seriez super reconnaissant !

Merci à tous ! par contre je rappel que je suis super débutant et qu'il faudra donc tout m'expliquer de A à Z :-S

Posté : 01 déc. 2006, 22:12
par mere-teresa
Modération :
Merci d'utiliser un titre clair et qui correspond bien à votre demande.
Les titres contenant "HELP", "Aidez-moi !" n'apportent rien à la compréhension de votre problème.
Par ailleurs, nous savons déjà par votre message que vous avez besoin d'aide.

Pouvez vous éditer votre message pour mettre un titre plus explicite ?

Merci de prendre le temps de lire les règlements.

Posté : 01 déc. 2006, 22:15
par sisi37
Modifié j'espère que ça convient mieux :-) merci de tes conseils !

Posté : 01 déc. 2006, 22:24
par Ajoloca
Bonsoir,

Tu crées un champ dans ta base que tu incrémentes de 1 à chaque appel

Si ce nombre modulo la valeur (dans ton exemple 10) est = à 0 tu envoies "OUI" sinon tu envoies "NON".

Posté : 02 déc. 2006, 01:02
par sisi37
Bon je vais essayer de réfléchir, car c'est un peu du chinoix pour moi :-) si je comprend vraiment pas je repasse vous voir !

Posté : 02 déc. 2006, 01:02
par Tortue Mania
c'est tout simple !!!!

Posté : 02 déc. 2006, 01:05
par sisi37
Ah... dans ce cas je veux bien que tu me le fasse :lol:

Posté : 02 déc. 2006, 01:21
par Truc
c'est tout simple !!!!
Genre de commentaire tout à fait inutile.

Si tu as d'autres remarques qui peuvent faire avancer le sujet dans le bon sens t'en prives pas.

@l'impératrice : sisi37 Pour plus de détails sur le fameux "modulo"

Posté : 02 déc. 2006, 01:44
par Ajoloca
Re,

On vas essayer avec d'autres termes. Tu véras que c'est extrémement simple.

Modulo, c'est quoi ?

C'est le reste d'une division euclidienne. Autrement dit c'est le reste d'une division entière (pas de virgule dans le quotient).

Dans ton cas on dit modulo 10 == 0
ça veux dire que si je divise ma valeur (le nombre d'appels) par 10 le reste doit être 0.

Si actuellement nous avons 51 appels, on auras accordé le "OUI" aux appels : 10, 20, 30, 40, et 50.

Pourquoi ?
Si je divise 10 par 10 mon quotient est de 1 et le reste = 0
Si je divise 20 par 10 mon quotient est de 2 et le reste = 0
Si je divise 30 par 10 mon quotient est de 3 et le reste = 0
Si je divise 40 par 10 mon quotient est de 4 et le reste = 0
Si je divise 50 par 10 mon quotient est de 5 et le reste = 0

Pour toutes les autres valeurs, exemple 15
15 divisé par 10 (en division entière) me donnera quotient 1 et reste 5.
Donc le 15 ne correspond pas à nôtre critère qui est "le reste doit être 0"

En PHP c'est le caractère '%' qui effectue cette opération (donne le modulo).
Il existe aussi une fonction MySQL qui fait la même chose "MOD()"

Quand je te parle de créer une colonne (champ) dans une table, c'est peut être pas la bonne solution si tu as déjà une table qui les gére (les appels)
Si c'es le cas, le plus simple c'est de compter le nombre de rangs (à condition que chaque rang représente un appel).

Une fois cette valeur obtenue (quelle que soit la méthode, champ ou nombre de lignes) tu effectues ton test avec QQ chose du style
// $nbr_apels représente le nombre d'appels
if($nbr_apels % 10 == 0){
   echo 'Appel gagnant';
}
else{
   echo 'Essayez encore une fois!';
}
C'est plus clair ou bien je t'ai embrouillé d'avantage ?

Posté : 02 déc. 2006, 10:50
par zeus
Modulo, c'est quoi ?

C'est le reste d'une division euclidienne. Autrement dit c'est le reste d'une division entière (pas de virgule dans le quotient).

Dans ton cas on dit modulo 10 == 0
ça veux dire que si je divise ma valeur (le nombre d'appels) par 10 le reste doit être 0.

Pour toutes les autres valeurs, exemple 15
15 divisé par 10 (en division entière) me donnera quotient 1 et reste 5.
Donc le 15 ne correspond pas à nôtre critère qui est "le reste doit être 0"
Juste pour préciser cette explication, ce qu'on appelle le quotient c'est ça :
Quand tu divises 15 par 10, tu as 1 fois 10 dans 15 et il reste 5 => le quotient est de 5.

Quand tu divises 20 par 10, tu as 2 fois 10 dans 20 et il reste 0 => le quotient est de 0

Je ne sais pas si cet exemple complémentaire à l'explication d'Ajoloca te permettras de mieux comprendre mais elle me semblait utile ;)

Posté : 02 déc. 2006, 11:19
par sisi37
Merci beaucoup pour vos explications :love5: je comprend mieux !

Posté : 02 déc. 2006, 11:56
par sisi37
Sinon voici l'exemple donné par RENTABILIWEB :
<?
$sms=strtoupper($_REQUEST['SMS']); //mise en majuscule
$mot=explode(" ",$sms);//séparer les mots dans le message : où [0] = action et [1] le pseudo
$action=$mot[0];
$id=$mot[1];
switch ($action){
case 'START' :
//VOTRE CODE DE TRAITEMENT
echo 'oui' ; //Renvoi le message de retour configuré par SMS
break ;
case 'STOP' :
echo 'oui';
//VOTRE CODE DE TRAITEMENT
default:
echo 'non'; //Renvoi le message de retour configuré par SMS
}
?>

Donc voilà mon soucis : je n'ai pas de "case". C'est à dire que je souhaiterais que les gens envoient le SMS en mettant uniquement le mot clé, donc sans "case" comme eux ils mettent "START" ou "STOP".
Et qu'à chaque réception d'un SMS, ça ajoute 1 au compteur, et que ça fasse un MODULO par rapport au compteur.

(je sais que je suis un peu nul :oops: mais je voyais pas ça si compliqué :lol: )

Posté : 02 déc. 2006, 12:40
par Ajoloca
Bonjour,
Juste une petite remarque
Quand tu divises 15 par 10, tu as 1 fois 10 dans 15 et il reste 5 => le quotient est de 5.

Quand tu divises 20 par 10, tu as 2 fois 10 dans 20 et il reste 0 => le quotient est de 0
Ici
=> le quotient est de 5.
=> le quotient est de 0
il à voulu dire le modulo.

Ton exemple n'est pas des plus parlants, d'autres informations nous seront plus utiles.

Comment géres-tu le nombre des SMS ?
Avec un compteur?
Si c'est le cas. Comment s'appellent ton champ et ta table?
Si c'est par table (comptage des lignes) le nom de ta table ?

Avec ça on peux commencer à faire QQ chose qui poura t'aider.

Posté : 02 déc. 2006, 13:33
par sisi37
Je sais pas encore trop comment faire :-) c'est pour ça que j'étais venu ici. Faut que je regarde comment puis-je faire un compteur qui ajoute 1 à chaque requête, et à partir de ce compteur faire un MODULO.

Posté : 02 déc. 2006, 13:57
par Ajoloca
Re,

Donc pour l'instant tu n'as rien, c'est ça ?

Dans ce cas commence par te posser des questions du style.

Dois-je conserver une trace des SMS ?

Non, je ne conserve pas d'infos.
Tu crées une table qui contient un seul champ de type entier non signé.
Un exemple.
La table s'applle 'tbl_sms' et le champ 'sms_count'. Pour la créer

Code : Tout sélectionner

CREATE TABLE `tbl_sms` ( `sms_count` INTEGER UNSIGNED );
Pour ajouter un SMS

Code : Tout sélectionner

UPDATE `tbl_sms` SET `sms_count` = `sms_count` + 1;
Pour connaitre le nombre de SMS

Code : Tout sélectionner

SELECT `sms_count` FROM `tbl_sms`;
C'est juste un exemple qu'il faudra bien entendu adapter.

Oui, je conserve les infos
Quelles informations je dois conserver ?
Avec cette liste tu construis ta table, il te suffira par la suite de compter le nombre de lignes dans cette table pour avoir le nombre de SMS.
Si c'est cette option que tu as choisis il faudra la liste des informations pour créer la table.