IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

récupération des enregistrements avec PDO Fetch


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut récupération des enregistrements avec PDO Fetch
    Bonjour,

    Je suis actuellement en conception d'un panier sur un site web , je rencontre donc des problèmes avec ce dernier .

    Quelques explications avant , le client arrive sélectionne un produit clique sur ajouter et arrive donc sur la page panier . Je récupère bien l'id de l'article ainsi que la quantité mais j'ai un problème concernant le prix ... Impossible de le récupérer après de multiples tentatives , il me retourne un "boolean true" et rien d'autres . Je vous joins ici le code .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php
    session_start();
    include_once("function.php");
     
     
     
     
     
     
     
    if(isset($_SESSION['identifiant']) AND isset($_SESSION['password']))
    			{
     
    							//si il y a un session existante donc si la session est ouverte
     
     
     
    if(isset($_POST['idart']) && isset($_POST['qty']))
    {
    	$_SESSION['qty'] = $_POST['qty'];
    	$qty = $_SESSION['qty'];
     
    	echo $qty ;
     
    	$_SESSION['idart'] = $_POST['idart'];
    	$idart = $_SESSION['idart'];
     
    	echo $idart; 						
     
    }
    			}						
    			else
    			{
    							// Sinon la session est inexistante ...
    							echo "vous n'etes pas connecté";
    			}
    ?>
    ici le code défectueux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
     
    //on instancie la connexion
    $cnx = ouvrirconnexionbase();
     
     
     
    //On prépare la requete
     
    $sql = $cnx->prepare("SELECT Prix FROM t_articles WHERE id= ?;") or die(mysqli_error($cnx)) ;
    $sql->bind_param('i',$_POST['idart']) ;  //i	correspond à une variable de type entier/ s	correspond à une variable de type chaîne de caractères
    $sql->execute(); //execute la requete
    //$result = $sql->fetch(); //execute la requete
    $result = $sql->fecth(PDO::FETCH_OBJ);
    echo gettype ( $result );
    $cnx->close();  
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    <?php
    if(isset($_POST['vider']))
    {
    	$_SESSION['panier'] = array();
    }
     
     
    ?>
     
    <?php
    // $NbrCol : le nombre de colonnes
    // $NbrLigne : calcul automatique AVANT affichage
    // -------------------------------------------------------
    // (exemple)
    $NbrCol = 3;
    $tableau =$_SESSION['panier'];
    // -------------------------------------------------------
    // nombre de cellules à remplir
    $NbreData = count($tableau);
    // -------------------------------------------------------
    // calcul du nombre de lignes
    if (round($NbreData/$NbrCol)!=($NbreData/$NbrCol)) {
    	$NbrLigne = round(($NbreData/$NbrCol)+0.5);
    } else {
    	$NbrLigne = $NbreData/$NbrCol;
    }
    // -------------------------------------------------------
    // affichage
    if ($NbreData != 0) 
    {
    	$k = 0; // indice du tableau
    ?>
    	<table border="1">
    	<tbody>
    <?php
    	for ($i=1; $i<=$NbrLigne; $i++) 
    	{
    		// ligne $i
    ?>
    		<tr>
    <?php		for ($j=1; $j<=$NbrCol; $j++) 
    		{ // colonne $j
    			if ($k<$NbreData) {
    ?>
    			<td>
    <?php			// -------------------------
    			// DONNEES A AFFICHER dans la cellule
    			echo $tableau[$k];
    			// -------------------------
    ?>
    			</td>
    <?php
    				$k++;
    			} else { // cellule vide
    ?>
    			<td>&nbsp;</td>
    <?php
    			}
    		}
    ?>
    		</tr>
    <?php	}
    ?>
    	</tbody>
    	</table>
    <?php
    } else { ?>
    	pas de données à afficher
    <?php
    }
    ?>

    Je vous remercie d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = $sql->fetch(PDO::FETCH_OBJ);
    à préciser que ce bout de code retourne une erreur de type fetch n'accepte pas de paramètre ????
    c'est là ou j'ai jeté l'éponge en essayant de résoudre le problème sur le chat

    le message d'erreur :
    mysqli_stmt::fetch() expects exactly 0 parameters, 1 given
    Mais bien sûr ...
    https://www.php.net/manual/fr/pdostatement.fetch.php

    elle sert a quoi alors la liste des paramètres données dans la doc ????

    ou alors il y a un souci d'engine ou de version ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql->bind_param(1,$_POST['idart'], PDO::PARAM_INT) ;
    A+.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut
    Bonjour andry.aime ,

    J'ai essaye ton code , et j'obtient l'erreur suivante :

    " Fatal error: Cannot pass parameter 3 by reference"


    Merci bien d'avoir répondu .

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut
    Je penses qu'il serait intéressant que je mentionne ici les extensions car j'ai un doute sur le fait que ce soit peut être cela qui bloque ..

    API Extensions : mysql,mysqli,pdo_mysql;

    PDO drivers : mysql, sqlite ;

    PDO Driver for MySQL : Client API version : mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $ ;

    PDO Driver for SQLite 3.x : SQLite Library : 3.7.7.1 ;

    MysqlI Support : Client API library version : mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $ ;

    MySQL Support : Client API version : mysqlnd 5.0.10 - 20111026 - $Id: e707c415db32080b3752b232487a435ee0372157 $ ;

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $result = $sql->fecth(...........);
    2- Tu mélanges "procédural" et "orienté objet" : (mysqli::$error / mysqli_error)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = $cnx->prepare("....") or die(mysqli_error($cnx)) ;
    Ici, il faut mettre :
    3- MAINTENANT, la "QUESTION QUI TUE" : tu utilises mysqli ou PDO ???

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut
    Bonjour et merci jreaux62 de m'accordé de ton temps ,

    Concernant ton petit -1 je suis désolé j'ai mal copié c'est ma faute j'avais bien mit "fetch" autant pour moi ,

    Deuxièmement si je ne met que $cnx->error alors j'enlève donc le prepare si j'ai bien compris ?


    et pour repondre a ton -3/ alors effectivement j'utilises myqli mais pour ma partie panier j'en suis arrivé a utiliser du PDO car je rencontré des erreurs que je n'arrivais point à résoudre et en utilisant du PDO ces erreurs la ont disparus et j'ai pu avancé un peu plus .. Malgré qu'un mélange de technologie n'est pas conseillé ..

  8. #8
    Invité
    Invité(e)
    Par défaut
    1- c'est fetch !!

    2- LIS la doc.

    3- évite de mélanger mysqli et PDO : ce ne sont pas les mêmes syntaxes !!

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut
    D'accord ..
    1- Je viens de vérifier c'est bien ce que j'ai mit ...

    2- D'accord j'ai lu la doc je comprends mais le problème ne viens pas de cette ligne et rien n'a changé ^^

    3- Je le conçois tout à fait mais si j'en suis arrivé là c'est parce que ca ne marchais pas .. Nénamoins tout celà ne règle pas le problème .. J'ai beau essayé rien ne marche

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Comme le dit le dalmatien :
    Citation Envoyé par jreaux62 Voir le message
    3- évite de mélanger mysqli et PDO : ce ne sont pas les mêmes syntaxes !!
    Donc 1ère étape: nettoyer le code, c'est soit mysqli partout, soit PDO partout, mais pour l'amour du Grand Ingénieur, pas les deux dans le même script ! Sinon, on va pas s'en sortir. Ou au moins nomme explicitement tes connexions $pdoConnexion et $mysqliConnexion.

    Du coup, spaffy c'est pas étonnant que tu ne t'en sortes pas :
    Citation Envoyé par SpaceFrog Voir le message
    le message d'erreur :
    mysqli_stmt::fetch() expects exactly 0 parameters, 1 given
    Mais bien sûr ...
    https://www.php.net/manual/fr/pdostatement.fetch.php
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [PDO] Affichage des enregistrement avec php 5 PDO
    Par walid kh dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/04/2015, 17h00
  2. Réponses: 13
    Dernier message: 05/09/2006, 16h25
  3. récupération des paramètres avec javascript
    Par pcdj dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/07/2006, 09h45
  4. Récupération des paramètres avec une procedure stockée
    Par samlerouge dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/03/2004, 22h00
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo