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
Réponse acceptée

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;
maroufle
Réponse acceptée

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

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 ? :/