scalar value ?

Par Jeremie Dupas, il y a 9 ans


Bonjour la page php me retourne l'erreur suivante :

<br /> <b>Warning</b>: Cannot use a scalar value as an array in <b>/var/www/html/jeremie/pages/home/requetes/like.php</b> on line <b>41</b><br />

Sauf que j'ai bien déclaré la variable avant d'insérer une valeur.
Voici mon code

<?php if (!empty($_POST) and isset($_POST['id']) and is_numeric($_POST['id'])){ session_start(); if (!empty($_SESSION) and isset($_SESSION['compte']['id']) and is_numeric($_SESSION['compte']['id'])){ if (isset($_SESSION['compte']['likes'][$_POST['id']])){ if ($_SESSION['compte']['likes'][$_POST['id']] > time()){ require 'bdd.php'; if (isset($bdd)){ $sql = 'delete from `likes` where `time`>'.time().' and `id_compte`='.$_SESSION['compte']['id'].' and `id_post`='.$_POST['id']; $requete = $bdd->exec($sql); if ($requete == 1){ unset($sql,$bdd,$requete); unset($_SESSION['compte']['likes'][$_POST['id']]); unset($_POST); echo json_encode(0); }else{ echo json_encode('SQL'); } }else{ unset($_POST); echo json_encode('BDD'); } }else{ unset($_POST); echo json_encode('TIME'); } }else{ require 'bdd.php'; if (isset($bdd)){ $time = time() + 500; $sql = 'insert into `likes` (`id_post`,`id_compte`,`time`) value('.$_POST['id'].','.$_SESSION['compte']['id'].','.$time.')'; $requete = $bdd->exec($sql); if ($requete == 1){ unset($sql,$bdd,$requete); if (empty($_SESSION['compte']['likes'])){ $_SESSION['compte']['likes'] = array(); } $_SESSION['compte']['likes'][$_POST['id']] = $time; unset($_POST); echo json_encode($time); unset($time); }else{ unset($_POST,$requete,$time); echo json_encode('SQL'); } }else{ unset($_POST); echo json_encode('BDD'); } } }else{ unset($_POST); echo json_encode('SESSION'); } }else{ unset($_POST); echo json_encode('ISSET'); } ?>

Merci pour votre proposition de solution :)

3 réponses

maroufle, il y a 9 ans

Oui c'est pas valide d'insérer un nombre scalaire dans plusieurs (un tableau)
C'est comme si on voulait mettre une pomme dans plusieurs paniers à la fois, c'est pas possible, à moins de la découper.

$_SESSION['compte']['likes'][$_POST['id']] = $time;
Jeremie Dupas, il y a 9 ans

Je ne veux pas le mettre dans plusieurs tableaux à la fois ? :/

$key = $_POST['id']; $_SESSION['compte']['likes'][$key] = $time;

Ca marche si je fait ca ? :/

maroufle, il y a 9 ans

Oui ça marche si la valeur de l'index du tableau est scalaire aussi ;)