Function implode ne fonctionne pas

Résolu/Fermé
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 - 29 sept. 2019 à 20:22
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 - 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

2 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 sept. 2019 à 20:34
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 vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
29 sept. 2019 à 20:45
0
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
29 sept. 2019 à 20:46
0
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
29 sept. 2019 à 20:47
0
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
29 sept. 2019 à 20:49
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
29 sept. 2019 à 20:50
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 vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
29 sept. 2019 à 23:43
Comment ça une parenthèse je comprend pas ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023
29 sept. 2019 à 23:50
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 vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
30 sept. 2019 à 00:19
Ok je vais vérifier et voir
0
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
30 sept. 2019 à 00:58
Je penses je vue le problème la session n'est pas récupéré dans la page
0