Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 07-04-2008 15:23:59

jayden
Membre
Date d'inscription: 07-04-2008
Messages: 5

Erreur parsage sms pour base de donnée

Bonjour,
Je suis en train de mettre en place un site permettant de traité des sms et de les mettre dans une base de données permettant de gérer un parc informatique de setup box.Pour ce faire je dois traité le sms reçu pour récupéré les différentes infos nécessaire.
Malheureusement toutes mes variables ne contiennent que des array après traitement.Je ne vois pas ou j'ai fauté pour le parsage.Le message est bien reçu puisque sur ma page j'affiche le message contenu dans content après plus rien.Un sms a cette forme :

smim gekobox69945282806/Apr/02:006/Apr/02:0Bonne04345c69e70280||1&& gekobox69945282806/Mar/02:006/Apr/02:0Bonne04345c69e70280||2&&gekobox69945282806/Apr/02:006/Apr/02:0Bonne04345c69e70280||3

Chaque box différentes est séparé par '&&' et 'II' sépare la sauvegarde du reste de l'info.
VOilà mon code:

[php]
<?p
//supression premier mot (smim) qui ne sert à rien
$content = urlencode(substr(strstr($content," "),1));
echo 'Content : '.$content.'<br />';
//séparation grâce aux délimiteurs des différents tags, du corps de chacun et de la sauvegarde
foreach ($lines as $lines) :
$lines = explode("&&", $content);
list($str, $sauv) = explode("||", $lines);

//séparation du corps sans délimiteurs avec les tailles des données grâce à strsplit
$nom = str_split($str,7);
$num = str_split($str,10);
$datei = str_split($str,11);
$dater = str_split($str,11);
$etat = str_split($str,5);
$uid = str_split($str,14);
?>
[/php]


Merci pour votre aide.

Hors ligne

 

#2 08-04-2008 06:43:52

Asherah
Membre
Date d'inscription: 15-11-2007
Messages: 147
Site web

Re: Erreur parsage sms pour base de donnée

Normal que tes variable contiennent des array puisque tu essai de les attribuer a des valeurs de tableau..

http://www.manuelphp.com/php/function.list.php

Code:

$lines = explode("&&", $content);
list($str, $sauv) = explode("||", $lines);

//séparation du corps sans délimiteurs avec les tailles des données grâce à strsplit

structure de list()

Code:

$info = array('café', 'noir', 'cafeine');

// Liste de toutes les variables
list($drink, $color, $power) = $info;
echo "$drink est $color et la $power le rend particulier.\n";

ce qui donneras: "café est noir et la caféine le rend particulier"

donc si tu veut lire tes variables il faut les attribuer a un tableau array ou alors tu enleve list()

Hors ligne

 

#3 09-04-2008 02:58:03

jayden
Membre
Date d'inscription: 07-04-2008
Messages: 5

Re: Erreur parsage sms pour base de donnée

Oui merci je vois mon erreur maintenant.

Hors ligne

 

#4 09-04-2008 03:53:11

jayden
Membre
Date d'inscription: 07-04-2008
Messages: 5

Re: Erreur parsage sms pour base de donnée

Maintenant je découpe bien ma chaine mais seulement le début.Ca ne parse pas les données se trouvant après &&.POur par exemple ce sms:
smim Gekobox069945282806/Apr/200806/Apr/2008Bonne04345c69e70280||2&&Gekobox069945282806/Apr/200806/Apr/2008Mauva04345c69e70280||3

Je ne parse que cette partie:
Gekobox069945282806/Apr/200806/Apr/2008Bonne04345c69e70280||2
Voilà mon code:
[php]
<?p
{//cas de réception sms pour ajout à la base de donnée
//supression premier mot (smim) qui ne sert à rien
$content = trim(urlencode(str_replace("smim ", "" , $content)));
echo 'Content : '.$content.'<br />';

//séparation grâce aux délimiteurs des différents tags, du corps de chacun et de la sauvegarde

//Découpage de $content sous forme d'un tableau $lines
$lines = explode("&&", $content);

//boucle de parcours du tableau $lines ligne par ligne nommée $line
foreach ($lines as $line)
{
   //Récup des données $str et du n° de sauvegarde $sauv à partir d'une ligne $line
   list($str, $sauv) = explode("||", $line);


//séparation du corps sans délimiteurs avec les tailles des données grâce à substr
$nom=substr($str, 0, 7);
$num=substr($str, 7, 10);
$datei=substr($str, 17, 15);
$dater=substr($str, 32, 15);
$etat=substr($str, 47, 5);
$uid=substr($str, 52, 14);

//Insertion dans la base de donnée.
$sql = mysql_query("INSERT INTO Opérateur SET Produit='$nom', Op='$num', DatI='$dati', DatR='$dater', Etat='$etat'");
} }?>
[/php]
Quel erreur ai-je encore commise?

Hors ligne

 

#5 09-04-2008 05:12:38

Asherah
Membre
Date d'inscription: 15-11-2007
Messages: 147
Site web

Re: Erreur parsage sms pour base de donnée

Extrait de la note d'informations de Manuel PHP concernant "urlencode()":


Note: Faites bien attention aux variables qui ressemblent à des entités HTML, comme &amp, &copy et &pound, qui sont analysées par le client web et remplacée par leur valeur. C'est un vrai problème qui a été montré par le W3C depuis longtemps. La référence est ici : http://www.w3.org/TR/html4/appendix/notes.php#h-B.2.2 . PHP supporte le remplacement de séparateur d'arguments par un point-virgule, comme recommandé par le W3C, grâce à la directive arg_separator  du fichier php.ini  . Malheureusement, la plupart des clients web n'envoient pas leurs données de formulaire avec des points-virgules. Une solution plus portable est d'utiliser &amp;  à la place de &  comme séparateur. Vous n'avez alors pas à changer la directive arg_separator  . Laissez-la à &, mais encodez vos URL en utilisant htmlentities  ou htmlspecialchars  .



http://www.manuelphp.com/php/function.urlencode.php

Dernière modification par Asherah (09-04-2008 05:13:58)

Hors ligne

 

#6 09-04-2008 19:35:16

jayden
Membre
Date d'inscription: 07-04-2008
Messages: 5

Re: Erreur parsage sms pour base de donnée

Merci pour l'aide.Je comprends maintenant pourquoi bug il y avait.

Hors ligne