[RESOLU] Warning: Illegal string offset PHP5_4

Eléphanteau du PHP | 18 Messages

18 oct. 2012, 16:52

Bonjour à tous,
Alors voilà, je suis en train de réaliser un mini réseau social. Le problème est qu'il m'affiche deux erreurs lorsque je veux consulter mes invitations Warning: Illegal string offset 'pseudo_exp' in /homez.541/testdrup/www/pages/invitations.php on line 18 et /homez.541/testdrup/www/pages/invitations.php on line 16
r'height='100'width='100'alt='avatar'>

invitations.php
<?php
include('functions/membre.func.php');
include('body/header.php');
include('body/menu.php');

?>
<h3>Vos invitations</h3>
<?php
$invitations = recup_invitations();

  if($invitations == true)
  {
      foreach($invitations as $invitation)
	  {
	    ?>
		   <img src='avatar/<?php echo $invitation['avatar'];?>'height='100'width='100'alt='avatar'>
		   <div class='error'>
		<?php echo $invitation['pseudo_exp'];?>a voulu vous ajouter comme ami(e)<br />
		 <a href=''>Accepter </a><a href=''>Refuser</a>
		 </div>
		 <?php
	  }
  
  }else{
     ?>
	    <div class='error'>Vous n'avez pas d'invitations
	 <?php
  }
  
?>
invitations.func.php
<?php
//la fonction qui va récupérer les invitations
function recup_invitations()
{
  $query = mysql_query("
  SELECT pseudo_exp,date_invitation,active,avatar
  FROM amis
  INNER JOIN utilisateurs ON utilisateurs.pseudo = amis.pseudo_exp
  WHERE pseudo_dest = '{$_SESSION['pseudo']}'
  ORDER BY date_invitation DESC
  ");
  
  $results = array();
  while($row = mysql_fetch_assoc($query))
  {
    $results[] = rows;
	
  }
  return $results;

}

Eléphanteau du PHP | 18 Messages

18 oct. 2012, 18:39

oupps j'ai oublié le $ dans: $results[] = $rows;
Cette fois-ci lorsque je clique sur invitation j'ai l'avatar qui s'affiche mais pas le pseudo_exp.

Eléphanteau du PHP | 45 Messages

18 oct. 2012, 19:21

Hello.
Cherche à quoi correspond pseudo_exp dans ta bdd et corriges ta requête en conséquence.

Eléphanteau du PHP | 18 Messages

18 oct. 2012, 19:52

Le pseudo_exp est celui qui invite voilà ce que j'ai sous les yeux: TABLE: amis
Nom des champs et (type): id_invitation int(11)
pseudo_exp varchar(100)
pseudo_dest varchar(100)
date_invitation datetime
date_confirmation datetime
active tinyint(1)

Eléphanteau du PHP | 45 Messages

18 oct. 2012, 19:55

C'est après avoir cliqué ou avant de cliquer, l'avatar apparait?

Eléphanteau du PHP | 18 Messages

18 oct. 2012, 20:07

C'est après avoir cliqué, l'avatar ne s'affiche pas non plus.
Cordialement moi j'habite pas loin je suis de Besançon.

Eléphanteau du PHP | 45 Messages

18 oct. 2012, 20:17

Donc, il y aurait une coquille soit sur ta bdd, soit...???
On a bien la requête
SELECT pseudo_exp,date_invitation,active,avatar
FROM amis

et l'affichage $invitation['pseudo_exp']...
Si $invitation['avatar'] s'affiche, donc $invitation['pseudo_exp'] devrait s'afficher aussi! Là y'a un truc. :shock:

Eléphanteau du PHP | 18 Messages

18 oct. 2012, 20:46

Ok merci je vais regarder tout ça merci.

ViPHP
ViPHP | 1996 Messages

18 oct. 2012, 21:20

Il va falloir apprendre à tester vos variables avant de les afficher les enfants... Ralala faut tout leur dire...
En plus empty() est parfait pour cela car cette fonction test si la variable existe ET si elle n'est pas nulle (ou =0)
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 18 Messages

19 oct. 2012, 10:34

Bonjour,
Voici ce que j'ai fait un print_r(recup_invitations()); le problème est qu'il me renvoi sur la page vos invitations Array ( [0] => ) alors que je devrais avoir Array ( [0] => Array([pesudo_exp]=>Moi[date_invitation]=>2012-19-10 10:30:00 [active] => 0 [avatar] => 12345.jpg))
invitations.php
<?php
include('functions/membre.func.php');
include('body/header.php');
include('body/menu.php');

?>
<h3>Vos invitations</h3>
<?php
print_r(recup_invitations());
 
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

19 oct. 2012, 12:49

Salut,


Tu as quoi ton tableau normalement ?

Plutôt que de t'emmerder a grand coup de print/ var_dump utilise un débogguer (xdebug ou celui de zend).

Tu travaillera beaucoup simplement et efficacement (un point d'arrêt sur la ligne du return et tu pourra voir ce que ton script retourne.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 18 Messages

19 oct. 2012, 13:57

Je vais essayer ça; merci.

Eléphanteau du PHP | 18 Messages

19 oct. 2012, 17:15

Ca y est j'ai trouvé et ce grace à vous dans le fichier invitations.func.php =>$results[] = rows; remplacé par $results[] = $row;
et fermeture balise php. Erreur de débutant quoi. :oops: