Page 1 sur 1
Problème de tableau
Posté : 13 sept. 2010, 17:45
par jay64
Je pense que la solution est évidente mais je ne la vois pas !
Dans mon script, quand je fais ceci, tout se passe bien :
//pour envoyer un message aux destinataires 2 et 3
$apns->newMessage(array(2,3));
Du coup, j'alimente à l'aide d'une boucle une variable $liste_pid et quand j'y fais un print_r de celle-ci, cela affiche :
Array ( [0] => 2 [1] => 3 )
Ce qui me fait écrire ceci :
$apns->newMessage($liste_pid);
Et bien ce n'est pas bon. Pouvez-vous me dire où je cafouille ?
Merci !
Jérôme
Re: Problème de tableau
Posté : 13 sept. 2010, 17:49
par stealth35
qu'est ce qui n'est pas bon , y'a un message d'erreur ?
Re: Problème de tableau
Posté : 13 sept. 2010, 18:04
par Aureusms
Est ce que $liste_pid est en format tableau i.e. est ce que $liste_pid = array (2,3); ?
Que donne ?
$liste_pid = array (2,3);
$apns->newMessage($liste_pid);
Re: Problème de tableau
Posté : 13 sept. 2010, 19:27
par jay64
Voici précisément mon code :
//on place dans un tableau tous les destinataires qui vont recevoir la notification
$query_ListeDevices = "SELECT pid FROM apns_devices WHERE pushbadge = 'enabled' OR pushalert = 'enabled' OR pushsound = 'enabled'";
$ListeDevices = mysql_query($query_ListeDevices, $connection_ebplo) or die(mysql_error());
$totalRows_ListeDevices = mysql_num_rows($ListeDevices);
while ($row_ListeDevices = mysql_fetch_assoc($ListeDevices))
{
$liste_pid[] = $row_ListeDevices['pid'];
}
$NbDevices = count($liste_pid);
// CREATE DATABASE OBJECT ( MAKE SURE TO CHANGE LOGIN INFO IN CLASS FILE )
$db = new DbConnect();
$db->show_errors();
// FETCH $_GET OR CRON ARGUMENTS TO AUTOMATE TASKS
$apns = new APNS($db);
// APPLE APNS EXAMPLE 3
//nettoyage du texte
$texte_ok = stripslashes($texte);
//$liste_pid = array(2,3);
//$apns->newMessage(array(2,3));
$apns->newMessage($liste_pid);
$apns->addMessageAlert($texte_ok);
//$apns->addMessageBadge(1);
$apns->addMessageSound('alarm.caf');
$apns->queueMessage();
// SEND ALL MESSAGES NOW
$apns->processQueue();
//header('Location: ../../envoi_push_form.php');
//exit();
print_r($liste_pid);
Quand je fais
$liste_pid = array(2,3); c'est bon, quand je fais avec
$liste_pid[] = $row_ListeDevices['pid']; dont le print_r retourne exactement la même chose, voici l'erreur que j'obtiens :
otice: TO id was not an integer. 1) APNS::queueMessage -> File: envoi_push_script.php (line 71) 2) APNS::_triggerError -> File: class_APNS.php (line 598) in /homepages/18/d302109344/htdocs/sportwif/ebplo/EasyAPNS/php/classes/class_APNS.php on line 488
Notice: TO id was not an integer. 1) APNS::queueMessage -> File: envoi_push_script.php (line 71) 2) APNS::_triggerError -> File: class_APNS.php (line 598) in /homepages/18/d302109344/htdocs/sportwif/ebplo/EasyAPNS/php/classes/class_APNS.php on line 488
Array ( [0] => 2 [1] => 3 )
Re: Problème de tableau
Posté : 13 sept. 2010, 19:28
par stealth35
$liste_pid et $liste_pid[] c'est pas la meme chose
Re: Problème de tableau
Posté : 13 sept. 2010, 19:48
par jay64
d'accord, il y a une différence. Et que puis-je faire alors ?
Merci
Re: Problème de tableau
Posté : 13 sept. 2010, 20:20
par stealth35
tu dois faire ca dans ta boucle
Re: Problème de tableau
Posté : 13 sept. 2010, 21:30
par jay64
Dans ma boucle je mets $liste_pid sans les crochets ?
Re: Problème de tableau
Posté : 13 sept. 2010, 21:33
par stealth35
Dans ma boucle je mets $liste_pid sans les crochets ?
a chaque tour de boucle faut faire un newMessage
Re: Problème de tableau
Posté : 14 sept. 2010, 09:04
par jay64
Merci mais faire un newmessage à chaque parcours de ma boucle ne me va pas.
Autrement dit, j'ai besoin d'alimenter dynamiquement les valeurs saisies manuellement sous cette forme :
$apns->newMessage(array(2,3));
Ces valeurs (2, 3, etc ...) sont récupérées par ma requête suivante :
//on place dans un tableau tous les destinataires qui vont recevoir la notification
$query_ListeDevices = "SELECT pid FROM apns_devices WHERE pushbadge = 'enabled' OR pushalert = 'enabled' OR pushsound = 'enabled'";
$ListeDevices = mysql_query($query_ListeDevices, $connection_ebplo) or die(mysql_error());
$totalRows_ListeDevices = mysql_num_rows($ListeDevices);
while ($row_ListeDevices = mysql_fetch_assoc($ListeDevices))
{
$liste_pid[] = $row_ListeDevices['pid'];
}
Comment faire pour que mon pid vienne alimenter mon array à la place de 2, 3, etc .... ?
Merci !
Re: Problème de tableau
Posté : 14 sept. 2010, 10:11
par Aureusms
En regardant l'erreur : TO id was not an integer., il semblerait que ta fonction nécessite des entiers. Aussi, que te donne un var_dump ($liste_pid); ?
Je dirais de forcer la création d'un integer, peut être il y a-t-il un espace que se balade quelques parts...
while ($row_ListeDevices = mysql_fetch_assoc($ListeDevices))
{
$liste_pid[] = intval(trim($row_ListeDevices['pid']));
}
Re: Problème de tableau
Posté : 14 sept. 2010, 18:38
par jay64
Effectivement, je récupérais un string (en d'autre circonstances je ne dis pas non ...

)
En forçant en integer, c'est parfait !
Merci !