Function implode ne fonctionne pas

Résolu
mobrobot Messages postés 173 Date d'inscription   Statut Membre Dernière intervention   -  
mobrobot Messages postés 173 Date d'inscription   Statut Membre Dernière intervention   -
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
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

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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.

0
mobrobot Messages postés 173 Date d'inscription   Statut Membre Dernière intervention   1
 
0
mobrobot Messages postés 173 Date d'inscription   Statut Membre Dernière intervention   1
 
0
mobrobot Messages postés 173 Date d'inscription   Statut Membre Dernière intervention   1
 
0
mobrobot Messages postés 173 Date d'inscription   Statut Membre Dernière intervention   1
 
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Le fichier DB .... pas les autres...

Le message d'erreur t'indique clairement une erreur à la ligne 29 du fichie db
db.class.php on line 29

Visiblement.. une parenthèse en trop je suppose...
0
mobrobot Messages postés 173 Date d'inscription   Statut Membre Dernière intervention   1
 
Comment ça une parenthèse je comprend pas ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > mobrobot Messages postés 173 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
mobrobot Messages postés 173 Date d'inscription   Statut Membre Dernière intervention   1
 
Ok je vais vérifier et voir
0
mobrobot Messages postés 173 Date d'inscription   Statut Membre Dernière intervention   1
 
Je penses je vue le problème la session n'est pas récupéré dans la page
0