Bonjour,
j'ai un soucis de requête mysql dans une clause WHERE.
$result = $mysqli->query('SELECT * FROM basket INNER JOIN items WHERE basket.item_id = items.item_id AND web_user_id = ' .$user_id);


Le problème est que ma variable user_id est un cookie. Le reste de la syntaxe est juste car quand je supprime AND we_user_id = ............ je n'ai aucune erreur et ce que je souhaite afficher s'affiche. Mais je voudrais justement que s'affiche que les éléments si web_user_id = $user_id.

Voici ma page complète

<?php
$title = 'Mon panier';
require('inc/connexion.php');
require('inc/header.php');

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$user_id = $_COOKIE['user_id'];
var_dump($user_id);
$result = $mysqli->query('SELECT * FROM basket INNER JOIN items WHERE basket.item_id = items.item_id AND web_user_id = ' .$user_id);
while ($row = $result->fetch_array()) {
    $items[$row['item_name']] = $row['item_price'];
}
?>

<?php foreach ($items as $name => $price): ?>
<p><?php echo $name ?></p>
<p><?php echo $price ?></p>
<?php endforeach ?>


Merci d'avance
connecté
Modérateur
Bonjour,

Il y a quoi dans ton $user_id?

Est-ce que tu as essayé ta requête dans phpMyAdmin ?

Amicalement,
$user_id se fait sur la page index.php

<?php
$title = 'Les produits';
require('inc/connexion.php');
require('inc/header.php');

if (!isset($_COOKIE['user_id'])) {
    $user_id = uniqid();
    $result = $mysqli->query('SELECT * FROM items');
    if (isset($_GET['id'])) {
        $choice = $_GET['id'];
        $result = $mysqli->query('SELECT item_id FROM items WHERE item_id = "' .$choice. '"');
        $row = $result->fetch_array();
        $item_id = $row['item_id'];
        setcookie('item', $item_id, time() +1296000, '/');
        $mysqli->query('INSERT INTO basket VALUES ("' .$user_id. '", "' .$item_id. '")');
    }

}
else {
    $user_id = $_COOKIE['user_id'];
    $result = $mysqli->query('SELECT * FROM items');
    if (isset($_GET['id'])) {
        $choice = $_GET['id'];
        $result = $mysqli->query('SELECT item_id FROM items WHERE item_id = "' .$choice. '"');
        $row = $result->fetch_array();
        $item_id = $row['item_id'];
        setcookie('item', $item_id, time() +1296000, '/');
        $mysqli->query('INSERT INTO basket VALUES ("' .$user_id. '", "' .$item_id. '")');
    }
}
setcookie('user_id', $user_id, time() +1296000, '/');


?>
<div class="items">
    <ul class="items-list">
        <?php while ($row = $result->fetch_array()): ?>
        <li><?php echo $row['item_name'] .' : '. $row['item_price'] .' €'; ?><a href="index.php?id=<?php echo $row['item_id'] ?>">J'achète</a></li>
        <?php endwhile ?>
    </ul>
</div>
connecté
Modérateur
Bonjour,

Le '602fed3333df5' qu'il y a dans ton message d'erreur, il vient d'où ?

Amicalement,
connecté
Modérateur
Bonjour,

Et je répète ma question : il y a quoi dans $user_id (au moment où ça plante) ?

Amicalement,
connecté
Modérateur
Bonjour,

$user_id n'étant pas un nombre visiblement, il faut le mettre entre quotes.

Remplace :
$result = $mysqli->query('SELECT * FROM basket INNER JOIN items WHERE basket.item_id = items.item_id AND web_user_id = ' .$user_id);

par
$result = $mysqli->query("SELECT * FROM basket INNER JOIN items WHERE basket.item_id = items.item_id AND web_user_id = '".$user_id."'");


Amicalement,