Bonjour les amis,
Voila je rencontre un petit problème avec mon code.
voici l'erreur
Erreur fatale : PDOException non interceptée: SQLSTATE [HY000]: Erreur générale: 1 jeton non reconnu,
J'ai passe toute la journee sans rien trouver de concret
Décrivez ici votre code ou ce que vous cherchez à faire
Voici le code
<?php
use App\NumberHelper;
define('PER_PAGE', 20);
require 'vendor/autoload.php';
$pdo = new PDO("sqlite:./data.sql",null,null,[
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION
]);
$query = "SELECT * FROM products";
$queryCount = "SELECT COUNT(id) as count FROM products";
$params =[];
//recherche par ville
if(!empty($_GET['q'])){
$query.= " WHERE city LIKE :city";
$params['city']='%'.$_GET['q'] .'%';
}
//Pagination
$page =(int)($_GET['p'] ?? 1);
$offset =($page-1) * PER_PAGE;
$query .= " LIMIT " .PER_PAGE."OFFSET $offset";
$statement = $pdo->prepare($query);
$statement->execute($params);
$products =$statement->fetchAll();
$statement = $pdo->prepare($queryCount);
$statement->execute($params);
$count = (int)$statement->fetch()['count'];
$pages = ceil($count/PER_PAGE);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="bootstrap.min.css">
<title>Biens immobiliers</title>
</head>
<body class="p-4">
<h1>Les biens immobiliers</h1>
<form action="" class="mb-4">
<div class="form-group">
<input type="text" class="form-control" name="q" placeholder="Rechercher par ville" value="<?= htmlentities($_GET['q']?? null)?>">
</div>
<button class="btn btn-primary">Recherche</button>
</form>
<table class="table table-striped">
<thead>
<th>ID</th>
<th>Nom</th>
<th>Prix</th>
<th>Ville</th>
<th>Adresse</th>
</thead>
<tbody>
<?php foreach($products as $product):?>
<tr>
<td><?= $product['id']?></td>
<td><?$product['name']?></td>
<td><?=Numberhelper::price($product['price']);?>$</td>
<td><?=$product['city']?></td>
<td><?=$product['address']?></td>
</tr>
<?php endforeach?>
</tbody>
</table>
<?php if($pages >1 ):?>
<a href="?p=<?=$page + 1?>" class="btn btn-primary">Page suivante</a>
<?php endif ?>
</body>
</html>
Bonjour,
1ère fois que je vois cela.
Par contre il manque un espace devant OFFSET
Et l'erreur viens de quelle requête ? car pour la querycount, tu essayes de passer le tableau $params en paramètre mais en sois, elle n'a pas besoin d'être préparer vu que tu n'as aucun marqueur
Bonjour merciful !
Tout d'abord, l'erreur que nous as transmise est incomplète. En effet, après "Jeton non reconnu", il y a quelque chose d'indiqué, le fameux jeton en question ! Sans ça, il sera difficile de répondre à ton problème.
En realite voici l'erreur complete :
Erreur fatale : PDOException non interceptée: SQLSTATE [HY000]: Erreur générale: 1 jeton non reconnu: "20OFFSET" dans C: \ xampp \ htdocs \ TP \ index.php: 24 Trace de pile: # 0 C: \ xampp \ htdocs \ TP \ index.php (24): PDO-> prepare ('SELECT * FROM p ...') # 1 {main} jeté dans C: \ xampp \ htdocs \ TP \ index.php à la ligne 24
Merci beaucoup les gars,il s'agissait vraiment d'espace comme courage10 l'a bien dit.Merci encore