Function implode ne fonctionne pas

Messages postés
107
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 octobre 2019
- - Dernière réponse : mobrobot
Messages postés
107
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 octobre 2019
- 30 sept. 2019 à 00:58
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
Afficher la suite 

2 réponses

Messages postés
26481
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 octobre 2019
1822
0
Merci
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.

mobrobot
Messages postés
107
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 octobre 2019
1 -
mobrobot
Messages postés
107
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 octobre 2019
1 -
mobrobot
Messages postés
107
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 octobre 2019
1 -
mobrobot
Messages postés
107
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 octobre 2019
1 -
Commenter la réponse de jordane45
Messages postés
26481
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 octobre 2019
1822
0
Merci
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...
mobrobot
Messages postés
107
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 octobre 2019
1 -
Comment ça une parenthèse je comprend pas ?
jordane45
Messages postés
26481
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 octobre 2019
1822 > mobrobot
Messages postés
107
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 octobre 2019
-
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 :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
mobrobot
Messages postés
107
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 octobre 2019
1 -
Ok je vais vérifier et voir
mobrobot
Messages postés
107
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
7 octobre 2019
1 -
Je penses je vue le problème la session n'est pas récupéré dans la page
Commenter la réponse de jordane45