Function implode ne fonctionne pas
Résolu
mobrobot
Messages postés
182
Statut
Membre
-
mobrobot Messages postés 182 Statut Membre -
mobrobot Messages postés 182 Statut Membre -
Bonsoir, mes frères s'ils vous plais j'ai besoin d'aide, y a une partie de mon code qui refusent de s'exécuter, voici l'erreur qui s'affiche quand je essaye de l'exécuter
Le code de la connexion à la base de données
Voici la page execution dans la quel se trouve la function implode
Merci pour la compréhension
Warning: PDOStatement syntaxe erreur prés de la ligne 2, wamp/localhost/db.class.php on line 29
Le code de la connexion à la base de données
<?php
class DB{
private $host = "localhost";
private $username = "root";
private $password = "";
private $database = "projet";
private $db;
public function __construct($host = null, $username = null, $password = null, $database = null){
if($host != null){
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->database = $database;
}
try{
$this->db = new PDO('mysql:host='.$this->host.';dbname='.$this->database, $this->username, $this->password, array(
PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8',
PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
));
}catch(PDOException $e){
die('Impossible de se connecter à la base de donnée');
}
}
public function query($sql, $data = array()){
$req =$this->db->prepare($sql);
$req->execute($data);
return $req->fetchAll(PDO::FETCH_OBJ);
}
}
?>
Voici la page execution dans la quel se trouve la function implode
<?php
require_once "demarrage.php";
require "_header.php";
?>
<!DOCTYPE HTML>
<html>
<head>
<title>projet</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<meta name="Robots" content="all"/>
<meta name="description" content="produit" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="viewport" content="width=device-width, maximum-scale=1"/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script type="text/javascript" language="javascript" src="jsp/behavior.js"></script>
<script type="text/javascript" language="javascript" src="jsp/rating.js"></script>
<link rel="stylesheet" type="text/css" href="css/rating.css" />
<link rel="stylesheet" href="assets/css/main.css" />
<link rel="stylesheet" href="assets/css/caption.css" />
<link rel='stylesheet' href='css/jquery-ui-1.8.22.custom.css' />
<link rel="icon" type="image/png" href="logo/logo_.png">
<link rel='stylesheet' href='jquery-ui-1.8.22.custom.css' />
<script type='text/javascript' src='jquery-1.7.2.min.js'></script>
<script type='text/javascript' src='jquery-ui-1.8.22.custom.min.js'></script>
</head>
<body class="single is-preload">
<!-- Wrapper -->
<div id="wrapper">
<!-- Header -->
<?php require_once "menu/header.php" ?>
<!-- Main -->
<div id="main">
<h3>Table</h3>
<h4>Default</h4>
<div class="table-wrapper">
<table>
<thead>
<tr>
<th>Nom</th>
<th>Description</th>
<th>Prix</th>
</tr>
</thead>
<?php
$ids = array_keys($_SESSION['paniex']);
var_dump($ids);
/*unset($_SESSION);*/
$products = $DB->query('SELECT * FROM products WHERE id IN ('.implode(" ", $ids).') ');
var_dump($products);
foreach($products as $product):
?>
<tbody>
<tr>
<td>Item01 One</td>
<td>Ante turpis integer.</td>
<td>29.99</td>
</tr>
<?php endforeach; ?>
</tbody>
<tfoot>
<tr>
<td colspan="2"></td>
<td>100.00</td>
</tr>
</tfoot>
</table>
</div>
</div>
<!-- Footer -->
<?php require_once "menu/footer.php" ?>
</div>
<!-- Scripts -->
<script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>
<script src="js/jssor.slider-27.5.0.min.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function ($) {
var jssor_options = {
$AutoPlay: 1,
$SlideWidth:1100,
$ArrowNavigatorOptions: {
$Class: $JssorArrowNavigator$
},
$BulletNavigatorOptions: {
$Class: $JssorBulletNavigator$
}
};
var jssor_slider = new $JssorSlider$("jssor", jssor_options);
/*#region responsive code begin*/
var MAX_WIDTH = 1100;
function ScaleSlider() {
var containerElement = jssor_slider.$Elmt.parentNode;
var containerWidth = containerElement.clientWidth;
if (containerWidth) {
var expectedWidth = Math.min(MAX_WIDTH || containerWidth, containerWidth);
jssor_slider.$ScaleWidth(expectedWidth);
}
else {
window.setTimeout(ScaleSlider, 30);
}
}
ScaleSlider();
$(window).bind("load", ScaleSlider);
$(window).bind("resize", ScaleSlider);
$(window).bind("orientationchange", ScaleSlider);
/*#endregion responsive code end*/
});
</script>
<script src="jss/slides.js"></script>
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/browser.min.js"></script>
<script src="assets/js/breakpoints.min.js"></script>
<script src="assets/js/util.js"></script>
<script src="assets/js/main.js"></script>
</body>
</html>
Merci pour la compréhension
Configuration: Android / Chrome 77.0.3865.92
2 réponses
-
Bonjour,
Aucun rapport avec ta fonction implode ...
Si tu relis bien le message il te parle de ton fichier de connexion à la bdd... à la ligne 2
Il serait bien de nous montrer le code COMPLET de ton fichier
NB: Les balises de code du forum étant actuellement buguées..., exceptionnelement, une capture écran serait plus adaptée.
Merci.
-
Le fichier DB .... pas les autres...
Le message d'erreur t'indique clairement une erreur à la ligne 29 du fichie dbdb.class.php on line 29
Visiblement.. une parenthèse en trop je suppose...
-
- Oublie la parenthèse.
C'est du aux balises de code...
Par contre, as tu essayé de voir ce que te retourne exactement cette requête ?SELECT * FROM products WHERE id IN ('.implode(" ", $ids).') '
Si tu en fais un echo... et que tu la testes ensuite directement dans ta bdd... ça marche ?
Sachant que lorsque tu utilises un "IN".. il faut séparer les valeurs par des virgules...$sql = "SELECT * FROM products WHERE id IN ('".implode("','", $ids)."') '";
Et au passage ...
N'oublie pas de mettre également l'exécution de tes requêtes dans des blocs TRY/CATCH
comme ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
-
-
-



