[php] Fatal error: Unsupported operand types [Résolu/Fermé]

fabrice11901 790 Messages postés dimanche 31 juillet 2005Date d'inscription 12 juillet 2007 Dernière intervention - 18 nov. 2006 à 08:43 - Dernière réponse : PhP 1771 Messages postés lundi 11 décembre 2000Date d'inscription 23 décembre 2009 Dernière intervention
- 30 juil. 2008 à 16:28
Bonjour
Sur le script suivant, j'obtient cette erreur :
Fatal error: Unsupported operand types in ... online8
le script consiste à récupérer le nombre présent dans le champ compteur dans la table visites et de lui ajouter un point de plus...

<?php mysql_connect("sql.free.fr","****","***");

mysql_select_db("codg82");
$requete="SELECT * from visites";
$result=mysql_query($requete);
$compteur=mysql_fetch_array($result);

$nombre=$compteur+1;
$requete1="UPDATE visites SET compteur='$nombre' WHERE compteur='$compteur'";
$result1=mysql_query($requete1);
echo "Nous avons déjà eu $nombre visiteurs sur le service telenote";
mysql_close();   ?>


merci d'avance
Afficher la suite 
790Messages postés dimanche 31 juillet 2005Date d'inscription 12 juillet 2007 Dernière intervention

10 réponses

PhP 1771 Messages postés lundi 11 décembre 2000Date d'inscription 23 décembre 2009 Dernière intervention - 18 nov. 2006 à 11:51
-1
Utile
Autant pour moi : remet les apostrophes ce code était bon !
J'avais pas lu ton code attentivement mais tu utilises un objet tableau au lieu d'une variable simple dans $compteur ! Pas étonnant que ca plante LOL

Remplace:

$compteur=mysql_fetch_array($result);

$nombre=$compteur+1;



Par

$champs=mysql_fetch_array($result);
$compteur = $champs['compteur']; // ou $champs[n] avec n correspondant à la position du champ compteur
$nombre=$compteur+1;

PhP 1771 Messages postés lundi 11 décembre 2000Date d'inscription 23 décembre 2009 Dernière intervention - 30 juil. 2008 à 14:40
-1
Utile
Bonjour

Bon alors voile some explanations

je suppose que l'extrait ci-dessous provient du var_dump($_SESSION) sauf erreur

["jours"]=>
  &array(6) {
    [1]=>
    array(7) {
      [1]=>
      string(0) ""
      [2]=>
      int(1)
      [3]=>
      int(2)
      [4]=>
      int(3)
      [5]=>
      int(4)
      [6]=>
      int(5)
      [7]=>
      int(6)
    }



$_SESSION est un tableau associatif dans lequel on retrouve toutes les variables de la session

["jours"]=> &array(6)

La variable "jours" est de type array donc un tableau en fait une référence sur un tableau (d'où le signe & devant)
qui contient 6 éléments

[1]=> array(7)
L'élément "1" du tableau "jours" est lui même un tableau de 7 éléments

Si on écrit $jours=$_SESSION["jours"]
alors $jours[1][1] contient une chaine vide ce qui correspond à

["jours"]=>
&array(6) {
[1]=>
array(7) {
[1]=>
string(0) ""




maintenant lorsque tu écris
$travail=$_SESSION['jours'];
$travail=($travail+$count);

dans $travail tu as un tableau dans $count je ne sais pas ... toujours est-il qu'on ne peut pas ajouter un tableau avec une autre variable car ça n'a pas de sens donc $travail+$count plante avec ton msg d'erreur : type d'opérande non supporté et c'est logique en général une addition opère sur des nombres D'Oh !
Shena 10 Messages postés vendredi 6 juin 2008Date d'inscription 30 juillet 2008 Dernière intervention - 30 juil. 2008 à 14:45
-1
Utile
Je me doute bien que ça vient d'un problème d'addition de tableau, ce que je ne comprend pas c'est comment ce tableau c'est créer, en effet il m'a fallut changer de noms, et enlever un espace pour que le problème soit corriger, et c'est plutôt ça qui me perturbe.
Mais merci de ton explication ^^
PhP 1771 Messages postés lundi 11 décembre 2000Date d'inscription 23 décembre 2009 Dernière intervention - 30 juil. 2008 à 16:28
-1
Utile
Ca je peux pas dire je sais pas comment ton code est fichu c plutôt inquiétant que tu ne saches pas pourquoi telle ou telle variable se retrouve dans ta session ca sent pas la fiabilité (ne pas mettre en production surtout si application sensible)
PhP 1771 Messages postés lundi 11 décembre 2000Date d'inscription 23 décembre 2009 Dernière intervention - 18 nov. 2006 à 11:22
-2
Utile
Bjr


Ho,ho c'est bizarre ...

Eventuellement si ton champ compteur est de type numérique essai en supprimant les apostrophes

$requete1="UPDATE visites SET compteur=$nombre WHERE compteur=$compteur";


mais je n'y crois guère ...

De quel type est exactement ton champ "compteur" ?
fabrice11901 790 Messages postés dimanche 31 juillet 2005Date d'inscription 12 juillet 2007 Dernière intervention - 18 nov. 2006 à 11:26
-2
Utile
Mon champ est de type varchar...
cela vient de ça le pb?
fabrice11901 790 Messages postés dimanche 31 juillet 2005Date d'inscription 12 juillet 2007 Dernière intervention - 18 nov. 2006 à 12:04
-2
Utile
en effet, j'avais oublié ça !
ça marche maintenant.
Merci
Shena 10 Messages postés vendredi 6 juin 2008Date d'inscription 30 juillet 2008 Dernière intervention - 29 juil. 2008 à 15:49
-2
Utile
1
Je vais honteusement remonté ce topic, mais tant pis, il me convient très bien.
Alors, j'ai à peu près le même problème, je récupère ma variable transmise par session (mise à 0 quelques temps avant, et qu'on incrémente à chaque passage sur la page qui me pose problème), ça marche parfaitement en local, par contre une fois en ligne, ça merdouille.
Ma variable "jours" existe bien pourtant, j'ai fait de nombreux test, voilà mon code
 $travail=$_SESSION['jours'];
 $travail=($travail+$count);
 $_SESSION['jours']=$travail;


Le message : Fatal error: Unsupported operand types in /homepages/33/d181993762/htdocs/arondor.com/Html/cra/account/docs/cra/cra_multi_print.php on line 40

La ligne 40, c'est la deuxième ^^'

Vous avez une idée? Parceque là, je coince x_x

Merci de m'aider :3
PhP 1771 Messages postés lundi 11 décembre 2000Date d'inscription 23 décembre 2009 Dernière intervention - 29 juil. 2008 à 23:19
Bonsoir

Hum pas évident de savoir ce que contiennnent tes variables $travail et $count comme ça

Déja tu peux vérifier en faisant un peu de "dumping"

A placer avant $travail=($travail+$count);

<?php
echo "<pre>";
var_dump($_SESSION);
var_dump($travail);
var_dump($count);
echo "</pre>";
exit;
?>


normalement il faudrait placere ce code dans la balise body mais bon c'est juste pour déboguer ;-)







Shena 10 Messages postés vendredi 6 juin 2008Date d'inscription 30 juillet 2008 Dernière intervention - 30 juil. 2008 à 10:00
-2
Utile
Merci de ta réponse, j'obtiens des trucs bizarre que je ne comprend pas vraiment, je vous le met ici :

 ["ident"]=>
  &string(32) "ea5fdbf44f86b785707b62753207a015"
  ["compte"]=>
  &#8747;(1)
  ["jours"]=>
  &array(6) {
    [1]=>
    array(7) {
      [1]=>
      string(0) ""
      [2]=>
      int(1)
      [3]=>
      int(2)
      [4]=>
      int(3)
      [5]=>
      int(4)
      [6]=>
      int(5)
      [7]=>
      int(6)
    }
    [2]=>
    array(7) {
      [1]=>
      int(7)
      [2]=>
      int(8)
      [3]=>
      int(9)
      [4]=>
      int(10)
      [5]=>
      int(11)
      [6]=>
      int(12)
      [7]=>
      int(13)
    }
    [3]=>
    array(7) {
      [1]=>
      int(14)
      [2]=>
      int(15)
      [3]=>
      int(16)
      [4]=>
      int(17)
      [5]=>
      int(18)
      [6]=>
      int(19)
      [7]=>
      int(20)
    }
    [4]=>
    array(7) {
      [1]=>
      int(21)
      [2]=>
      int(22)
      [3]=>
      int(23)
      [4]=>
      int(24)
      [5]=>
      int(25)
      [6]=>
      int(26)
      [7]=>
      int(27)
    }
    [5]=>
    array(7) {
      [1]=>
      int(28)
      [2]=>
      int(29)
      [3]=>
      int(30)
      [4]=>
      int(31)
      [5]=>
      string(0) ""
      [6]=>
      string(0) ""
      [7]=>
      string(0) ""
    }
    [6]=>
    array(7) {
      [1]=>
      string(0) ""
      [2]=>
      string(0) ""
      [3]=>
      string(0) ""
      [4]=>
      string(0) ""
      [5]=>
      string(0) ""
      [6]=>
      string(0) ""
      [7]=>
      string(0) ""
    }
  }
  ["joursmax"]=>
  &#8747;(46)
}
array(6) {
  [1]=>
  array(7) {
    [1]=>
    string(0) ""
    [2]=>
    int(1)
    [3]=>
    int(2)
    [4]=>
    int(3)
    [5]=>
    int(4)
    [6]=>
    int(5)
    [7]=>
    int(6)
  }
  [2]=>
  array(7) {
    [1]=>
    int(7)
    [2]=>
    int(8)
    [3]=>
    int(9)
    [4]=>
    int(10)
    [5]=>
    int(11)
    [6]=>
    int(12)
    [7]=>
    int(13)
  }
  [3]=>
  array(7) {
    [1]=>
    int(14)
    [2]=>
    int(15)
    [3]=>
    int(16)
    [4]=>
    int(17)
    [5]=>
    int(18)
    [6]=>
    int(19)
    [7]=>
    int(20)
  }
  [4]=>
  array(7) {
    [1]=>
    int(21)
    [2]=>
    int(22)
    [3]=>
    int(23)
    [4]=>
    int(24)
    [5]=>
    int(25)
    [6]=>
    int(26)
    [7]=>
    int(27)
  }
  [5]=>
  array(7) {
    [1]=>
    int(28)
    [2]=>
    int(29)
    [3]=>
    int(30)
    [4]=>
    int(31)
    [5]=>
    string(0) ""
    [6]=>
    string(0) ""
    [7]=>
    string(0) ""
  }
  [6]=>
  array(7) {
    [1]=>
    string(0) ""
    [2]=>
    string(0) ""
    [3]=>
    string(0) ""
    [4]=>
    string(0) ""
    [5]=>
    string(0) ""
    [6]=>
    string(0) ""
    [7]=>
    string(0) ""
  }
}
int(2)


Je crois que je suis dans la mierda.


Edit: Bon, j'ai fait des milliards de print, changer le nom de "jours" en "nbjours" et coller ma déclaration mon $_SESSION['nbjours']= à mon 0 et là tout marche merci de l'aide.

(rien de tel que les prints)