Problème de tableau

Eléphant du PHP | 331 Messages

13 sept. 2010, 17:45

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

ViPHP
ViPHP | 5462 Messages

13 sept. 2010, 17:49

qu'est ce qui n'est pas bon , y'a un message d'erreur ?

ViPHP
ViPHP | 1996 Messages

13 sept. 2010, 18:04

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);
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 331 Messages

13 sept. 2010, 19:27

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 )

ViPHP
ViPHP | 5462 Messages

13 sept. 2010, 19:28

$liste_pid et $liste_pid[] c'est pas la meme chose

Eléphant du PHP | 331 Messages

13 sept. 2010, 19:48

d'accord, il y a une différence. Et que puis-je faire alors ?
Merci

ViPHP
ViPHP | 5462 Messages

13 sept. 2010, 20:20

tu dois faire ca dans ta boucle

Eléphant du PHP | 331 Messages

13 sept. 2010, 21:30

Dans ma boucle je mets $liste_pid sans les crochets ?

ViPHP
ViPHP | 5462 Messages

13 sept. 2010, 21:33

Dans ma boucle je mets $liste_pid sans les crochets ?
a chaque tour de boucle faut faire un newMessage

Eléphant du PHP | 331 Messages

14 sept. 2010, 09:04

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 !

ViPHP
ViPHP | 1996 Messages

14 sept. 2010, 10:11

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']));
        }
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 331 Messages

14 sept. 2010, 18:38

Effectivement, je récupérais un string (en d'autre circonstances je ne dis pas non ... :D )

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

Merci !