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 :

Affichage des champs mysql en php


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut Affichage des champs mysql en php
    bonjour,
    voici mon code (il semble normal)
    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
     
    $requete="SELECT * FROM LIVRES WHERE " . $type_recherche . " LIKE '%%" . $terme_recherche . "%%'";
    //$requete="SELECT * FROM LIVRES";
    $resultat = $db->query($requete);
    $nbLig = $resultat->num_rows;
    if (!$nbLig)
    	echo "Aucun livre trouvé&nbsp !<br />";
    else
    	echo "<p>Nombre de livres trouvés&nbsp;: " . $nbLig . "</p>";
    for ($i = 0; $i < $nbLig; $i++)
    {
    	$ligne = $resultat->fetch_object();
    	echo "<p><strong>" . ($i+1) . ". Titre&nbsp;: ";
    	echo htmlspecialchars(stripslashes($ligne->titre));
    	echo "</strong>";
    	echo "<br />Auteur&nbsp;: ";
    	echo stripslashes($ligne->auteur);
    	echo "<br />isbn&nbsp;: ";
    	echo stripslashes($ligne->ISBN);
    	echo "<br />prix&nbsp;: ";
    	echo number_format($ligne->prix,2);
    	echo '</p>';
    }
    $resultat->free();
    $db->close();
    le problème est que quoique je mette dans la clause "select" de la requête, PHP ne récupère que les deux premiers champs (en l'occurrence pour *, il s'agit de ISBN et auteur).
    En ligne de commande dans mysql, ça fonctionne et dans phpmyadmin aussi mais pas avec PHP.
    Quelqu'un aurait déjà eu ce problème ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    As-tu controlé ce que contenait $ligne ?

    Au passage tu peux abandonner ton for{} et simplement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ($ligne = $resultat->fetch_object()) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    J'ai contrôlé avec is_null() qui me renvoie faux pour les champs non affichés.

    merci pour la boucle.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    pardon, je rectifie... is_null me renvoie VRAI.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    apparemment, ça ne fonctionne pas non plus avec les functions non objets

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    utilise var_dump() pour controler une variable.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    c'est bien sympa comme fonction (j'ai 15 jours de php)
    Voilà ce que j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    object(stdClass)#3 (4) 
    {
    ["ISBN"]=>  string(13) "..." 
    ["auteur"]=>  string(14) "..." 
    ["LIVRES"]=>  string(31) "..." 
    ["livres"]=>  string(5) "..."
    }
    ce qui est très bizarre. "ISBN" et "auteur", c'est ok mais "LIVRES", c'est le nom de la base et "livres" celui de la table ?!

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    "LIVRES" et "livres" me renvoie la valeur des champs que je recherche c'est-à-dire "prix" et "auteur".
    Ca pourrait venir de mon windows 64 bits ?
    Sur la page de démarrage de PhpMyAdmin, je n'ai pas d'erreur de cohérence de version de MySQL comme il m'est arrivé et j'ai dû réinstaller une version plus ancienne de MySQL. Actuellement j'ai PHP 5.5.13 et MySQL 5.0.67 : Y a-t'il des incompatibilités entre ces deux versions ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    erratum : "LIVRES" et "livres" me renvoie respectivement "titre" et "prix" mais si j'avais changer l'ordre de la clause SELECT, j'aurais toujours eu les deux champs "invisibles".

  10. #10
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    erratum : "LIVRES" et "livres" me renvoie respectivement "titre" et "prix" mais si j'avais changer l'ordre de la clause SELECT, j'aurais toujours eu les deux champs "invisibles".
    Je ne parviens pas à te suivre.
    De quelle ordre parle tu ? Si on se tient à ton plus haut, les champs ne sont pas nommés car il y a un SELECT * , donc tous les champs sont récupérés.

    Aussi, ton code exploite une classe $db ($db->query), du coup, il y a peut être quelque chose, des explications à ce niveau.
    En somme, que retourne exactement un $db->query() ?
    Même chose pour $resultat->fetch_object().

    Et puis, quelle est la structure de cette table LIVRES ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut
    Je vais essayer d'être plus clair :

    1)
    Nom de ma base : livres
    Table :
    LIVRES
    Champs :

    ISBN CHAR(13) NOT NULL PRIMARY KEY,
    auteur CHAR(50),
    titre CHAR(100),
    prix FLOAT(4,2)

    2) ex :
    SELECT * : var_dump($ligne) contient les valeurs ci-dessus
    ce qui est l'ordre de création des champs dans la table

    SELECT prix,titre,auteur,ISBN : var_dump($ligne) contient prix,titre,LIVRES,livres

    SELECT titre,auteur,ISBN,prix :var_dump($ligne) contient
    titre,auteur,LIVRES,livres

    D'une manière générale, j'obtiens les deux premiers champs de mon SELECT en tant que propriété de $ligne et les deux derniers s'appellent systématiquement "LIVRES" et "livres". Ces derniers me renvoient par contre les bonnes valeurs (le contenu des deux derniers champs de la clause SELECT).

    3)
    sinon
    var_dump($resultat) <=> object(mysqli_result)#2 (0) { }

    Voilà, j'espère être assez explicite. Si tu as une idée...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 23
    Par défaut au secours
    Si quelqu'un peut faire le test chez lui, je peux lui envoyer les sources de mes deux formulaires et les .sql de création et remplissage des tables.
    Ce ne sont pas des données confidentielles, juste un test de débutant php.
    Sinon quelqu'un saurait si le problème peut venir de mon systeme 64 bits ?

Discussions similaires

  1. [MySQL] Contrôler la localisation de l'affichage des champs DATE
    Par Teaniel dans le forum Bases de données
    Réponses: 1
    Dernier message: 30/10/2011, 15h59
  2. [VB6][MYSQL] recuperer des données MySQL via PHP
    Par psykotox dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 18/01/2008, 11h25
  3. [SQL-Server] Affichage des erreurs mssql en php
    Par Laure13 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/05/2006, 12h05
  4. affichage des champs vides
    Par nada83 dans le forum Access
    Réponses: 5
    Dernier message: 02/05/2006, 15h33
  5. Réponses: 5
    Dernier message: 08/03/2005, 13h22

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