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 :

Liste déroulante à partir d'une BDD avec Mysqli en procédural [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut Liste déroulante à partir d'une BDD avec Mysqli en procédural
    Bonjour,

    Passant de Mysql à Mysqli, mon nouveau script ne fonctionne +

    L'ancien script est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    echo ("<form action='suite.php' method='post'>");
    echo ("<select name = 'ChoixFamille'>");
    $SQL = "SELECT DISTINCT family FROM plant ORDER by family ASC";
    $req1 = mysql_query($SQL);
    $Familles_Nbre =mysql_num_rows($req1);
    echo '<option value="Aucune famille sélectionnée">sélectionnez parmi les '.$Familles_Nbre.' familles</option>';
    while($val=mysql_fetch_array($req1))
        {
            echo "<option value=\"".$val["family"]."\">".$val["family"]."</option>\n";
        }
    echo ("</select>");
    echo "<input type= 'submit' name= 'SelFamille' value= 'Valider'>";
    echo ("</form>");
    Tandis que le nouveau est
    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
    <?php
    // Afficher les erreurs à l'écran
    ini_set('display_errors', 1);
    // Enregistrer les erreurs dans un fichier de log
    ini_set('log_errors', 1);
    // Nom du fichier qui enregistre les logs (attention aux droits à l'écriture)
    ini_set('error_log', dirname(__file__) . '/log_error_php.txt');
    // Afficher les erreurs et les avertissements
    error_reporting(e_all);
     
    echo ("<form action='suite.php' method='post'>");
    echo ("<select name = 'ChoixFamille'>");
    $SQL = "SELECT DISTINCT family FROM plant ORDER by family ASC";
     
    if ($req = mysqli_prepare($link, $SQL))
        {
            mysqli_stmt_execute($req);
            mysqli_stmt_store_result($req);
            mysqli_stmt_bind_result($req, $family);
            $rows = mysqli_stmt_num_rows($req);
        }
     
    if ($rows>0)
        {
            echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>';
            while($tuple=mysqli_fetch_assoc($req))
                {
                    echo "<option value=\"".$tuple["family"]."\">".$family."</option>\n";
                }
        }
    echo ("</select>");
    echo "<input type= 'submit' name= 'SelFamille' value= 'Valider'>";
    echo ("</form>");
    ?>
    Dans le 1er cas, la liste déroulante apparait bien mais pas dans le second (le formulaire est présent mais sans aucune ligne en dessous). J'ajoute qu'aucun message d'erreur ne s'affiche.

    Merci de votre aide future.

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà que mysqli c'est tordu comme syntaxes, c'est pas la peine d'en rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if ($result = $mysqli_query($link, $SQL)) {
     
        $rows = mysqli_num_rows($result);
        if ($rows>0)
            {
                echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>';
                while($tuple=mysqli_fetch_assoc($result))
                    {
                        echo '<option value="'.$tuple["family"].'">'.$family.'</option>'."\n";
                    }
            }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    Bonjour sabotage et merci pour ta participation active.
    Le code devient si je ne m'abuse le suivant:
    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
    <?php
    // Afficher les erreurs à l'écran
    ini_set('display_errors', 1);
    // Enregistrer les erreurs dans un fichier de log
    ini_set('log_errors', 1);
    // Nom du fichier qui enregistre les logs (attention aux droits à l'écriture)
    ini_set('error_log', dirname(__file__) . '/log_error_php.txt');
    // Afficher les erreurs et les avertissements
    error_reporting(e_all);
     
    	/* Variables de connexion */
    	include "../php/mysqli_conf.inc.php"; // Inclusion du fichier de connexion à la base de données
    	$link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link));	// Connexion à MySql
     
    	/* Vérifie la connexion */
    	if (mysqli_connect_errno()) {
    	    printf("Échec de la connexion : %s\n", mysqli_connect_error());
    	    exit();
    	}
     
      /* Modification du jeu de résultats en utf8 */
      if (!mysqli_set_charset($link, "utf8"))
    	  {
    	      printf("Erreur lors du chargement du jeu de caractères utf8 : %s\n", mysqli_error($link));
    	      exit();
    	  }
     
     
     
    echo ("<form action='suite.php' method='post'>");
    echo ("<select name = 'ChoixFamille'>");
    $SQL = "SELECT DISTINCT family FROM plant ORDER by family ASC";
     
    if ($result = $mysqli_query($link, $SQL)) {
     
        $rows = mysqli_num_rows($result);
        if ($rows>0)
            {
                echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>';
                while($tuple=mysqli_fetch_assoc($result))
                    {
                        echo '<option value="'.$tuple["family"].'">'.$family.'</option>'."\n";
                    }
            }
    }
    echo ("</select>");
    echo "<input type= 'submit' name= 'SelFamille' value= 'Valider'>";
    echo ("</form>");
    ?>
    Et à l'exception du formulaire vide, rien ne s'affiche, pas même "Aucune famille sélectionnée"
    Cela me semble normal, la variable $family est indéfinie.

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    La constante c'est E_ALL pas e_all
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error_reporting(E_ALL);
    Fais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($result = $mysqli_query($link, $SQL)) {
         echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>'
        $rows = mysqli_num_rows($result);
     
        if ($rows>0)
            {
    Si tu n'as toujours rien, c'est que la requête plante, il faudra donc afficher les erreurs de la requête
    Si tu as seulement "aucune famille" c'est que c'est la recupération des résultats de la requête qui ne va pas.

    Bref il faut debuguer, pas regarder le code
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    J'ai modifié en mettant E_ALL et toujours pareil (rien, quoi).
    J'en déduis comme tu me le dis que c'est ma requête qui pose problème malgré qu'elle fonctionne avec Mysql au lien de Mysqli. De + j'ai testé directement dans PhpMyadmin et la requête fonctionne bien en affichant les familles de façon distincte.
    C'est curieux.

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

    1/ la 1ère erreur est d'avoir remplacé mysql_ par mysqli_...
    C'est une fausse bonne idée (motivée par un faux sentiment de simplicité).

    Tu devrais plutôt utiliser PDO.
    La syntaxe n'est pas si difficile à appréhender, et les requêtes préparées bien plus simples à faire (une fois la syntaxe assimilée).



    2/ De plus :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	/* Variables de connexion */
    	include "../php/mysqli_conf.inc.php"; // Inclusion du fichier de connexion à la base de données
    	$link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link));	// Connexion à MySql
     
    	/* Vérifie la connexion */
    	if (mysqli_connect_errno()) {
    	    printf("Échec de la connexion : %s\n", mysqli_connect_error());
    	    exit();
    	}
    Pourquoi ne mets-tu pas tout ce code directement DANS le fichier mysqli_conf.inc.php ??

    3/ et ça, tu l'as pêché où ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      /* Modification du jeu de résultats en utf8 */
      if (!mysqli_set_charset($link, "utf8"))
    	  {
    	      printf("Erreur lors du chargement du jeu de caractères utf8 : %s\n", mysqli_error($link));
    	      exit();
    	  }
    Intérêt très limité... voire nul.
    Sinon, à mettre aussi dans mysqli_conf.inc.php.

    4/ Tu n'es pas obligé non plus de mettre tout le code html dans des echo ...;
    Il suffit de "sortir de PHP avec ?>, puis d'y rentrer avec <?php
    Ce sera plus lisible, facile à déboguer...
    ...et ça évitera, entre autres, des galères avec les apostrophes et les doubles quotes...
    Dernière modification par Invité ; 12/08/2017 à 17h26.

  7. #7
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    J'en déduis comme tu me le dis que c'est ma requête
    Tu ne peux déduire ça que si tu as fais la modification que je t'ai indiqué.

    As-tu affiché les erreurs mysqli ?

    Au passage d'ailleurs ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     or die(mysqli_error($link));
    ne sert à rien : les erreurs de connexion sont dans mysqli_connect_error() comme tu l'as d'ailleurs bien écrit en dessous.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    Bonjour Jreaux62,

    Tu dis "la 1ère erreur est d'avoir remplacé mysql_ par mysqli_... C'est une fausse bonne idée (motivée par un faux sentiment de simplicité)." Pour moi, c'est simplement pour me mettre .. au gout du jour avec déjà quelques années de retard

    Tu dis également "Tu devrais plutôt utiliser PDO." Alors là, j'ai déjà du mal à assimiler Mysqli donc si je passe à PDO je ne te dis pas la salade composée que ça va donner !
    Je préférerais tâcher de bien comprendre l'un avant d'éventuellement passer à l'autre. Ça doit bien être possible avec Mysqli, non ?

  9. #9
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Justement comme j'ai dit au début Mysqli est une horreur. PDO est plus simple.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    jreaux62,

    Je viens de déplacer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /* Variables de connexion */
    	include "../php/mysqli_conf.inc.php"; // Inclusion du fichier de connexion à la base de données
    	$link = mysqli_connect($host,$login,$password,$base));	// Connexion à MySql
     
    	/* Vérifie la connexion */
    	if (mysqli_connect_errno()) {
    	    printf("Échec de la connexion : %s\n", mysqli_connect_error());
    	    exit();
    	}
    dans mysqli_conf.inc.php
    J'ai effectivement supprimé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     or die(mysqli_error($link)
    suite à la remarque de sabotage.

    L'intérêt de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      /* Modification du jeu de résultats en utf8 */
      if (!mysqli_set_charset($link, "utf8"))
    	  {
    	      printf("Erreur lors du chargement du jeu de caractères utf8 : %s\n", mysqli_error($link));
    	      exit();
    	  }
    a été de résoudre un problème que j'avais rencontré précédemment avec les accents. Je l'ai également déplacé dans mysqli_conf.inc.php

  11. #11
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    sabotage,
    Citation Envoyé par sabotage Voir le message
    Tu ne peux déduire ça que si tu as fais la modification que je t'ai indiqué.
    Si j'ai dit ça, c'est que j'avais fait la modification, mon code étant maintenant:

    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
    <?php
    // Afficher les erreurs à l'écran
    ini_set('display_errors', 1);
    // Enregistrer les erreurs dans un fichier de log
    ini_set('log_errors', 1);
    // Nom du fichier qui enregistre les logs (attention aux droits à l'écriture)
    ini_set('error_log', dirname(__file__) . '/log_error_php.txt');
    // Afficher les erreurs et les avertissements
    error_reporting(E_ALL);
     
    	/* Variables de connexion */
    	include "../php/mysqli_conf.inc.php"; // Inclusion du fichier de connexion à la base de données
     
    echo ("<form action='suite.php' method='post'>");
    echo ("<select name = 'ChoixFamille'>");
    $SQL = "SELECT DISTINCT `family` FROM `plant` ORDER by `family` ASC";
     
    if ($result = $mysqli_query($link, $SQL)) {
         echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>'
        $rows = mysqli_num_rows($result);
     
        if ($rows>0)
            {
                echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>';
                while($tuple=mysqli_fetch_assoc($result))
                    {
                        echo '<option value="'.$tuple["family"].'">'.$tuple["family"].'</option>'."\n";
                    }
            }
    }
    echo ("</select>");
    echo "<input type= 'submit' name= 'SelFamille' value= 'Valider'>";
    echo ("</form>");
    ?>

    Citation Envoyé par sabotage Voir le message
    As-tu affiché les erreurs mysqli ?
    Dans mysqli_conf.inc.php, j'ai
    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
    if (!$link)
    	{
    	    echo "Erreur: Impossible de se connecter a MySQL." . PHP_EOL;
    	    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    	    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    	    exit;
    	}
     
     
    	/* Vérification de la connexion */
    	if (mysqli_connect_errno())
    		{
    			printf("Échec de la connexion : %s\n", mysqli_connect_error());
    			exit();
    		}
    Ca ne suffit pas pour afficher les erreurs ?

  12. #12
    Invité
    Invité(e)
    Par défaut
    Tant qu'à ne rien comprendre à mysqli_,... autant passer à PDO...

  13. #13
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    Bon, d'accord, je vais essayer de m'y mettre mais il y a autant de modification à faire avec mysqli ?

  14. #14
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour afficher les erreurs mysqli c'est comme avec mysql :
    après la requête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    Merci sabotage. J'ai modifié pour obtenir
    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
    $SQL = "SELECT DISTINCT `family` FROM `plant` ORDER by `family` ASC";
     
    if ($result = $mysqli_query($link, $SQL)) {
    	$rows = mysqli_num_rows($result);
         echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>'
     
     
        if ($rows>0)
            {
                echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>';
                while($tuple=mysqli_fetch_assoc($result))
                    {
                        echo '<option value="'.$tuple["family"].'">'.$tuple["family"].'</option>'."\n";
                    }
            }
         echo mysqli_error();
    }
    et rien ne s'affiche, ni erreur, ni rien d'autre.

  16. #16
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est normal puisque tu as mis l'affichage de l'erreur à l'interieur du IF qui veut dire que la requête a fonctionné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $SQL = "SELECT DISTINCT `family` FROM `plant` ORDER by `family` ASC";
    $result = $mysqli_query($link, $SQL);
    echo mysqli_error($link);
    if ($result) {
       ....
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut,

    c'est mysqli_query et non $mysqli_query (PHP aurait dû afficher une erreur)

    Il y a aussi http://php.net/manual/en/function.mysqli-report.php pour la gestion des erreurs.
    Il serait aussi intéressant de lire la doc sur mysqli .
    Le bienfait n'est jamais perdu

  18. #18
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par Willy_k Voir le message
    c'est mysqli_query et non $mysqli_query (PHP aurait dû afficher une erreur).
    En effet, merci, je viens de corriger cette erreur. Ceci étant, si PHP n'affiche pas les erreurs, c'est embêtant....

    Citation Envoyé par sabotage Voir le message
    C'est normal puisque tu as mis l'affichage de l'erreur à l'interieur du IF qui veut dire que la requête a fonctionné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $SQL = "SELECT DISTINCT `family` FROM `plant` ORDER by `family` ASC";
    $result = $mysqli_query($link, $SQL);
    echo mysqli_error($link);
    if ($result) {
       ....
    sabotage, je viens de la sortir et le problème reste toujours entier avec
    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
    $SQL = "SELECT DISTINCT `family` FROM `plant` ORDER by `family` ASC";
     
    if ($result = mysqli_query($link, $SQL)) {
    	$rows = mysqli_num_rows($result);
         echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>'
     
     
        if ($rows>0)
            {
                echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>';
                while($tuple=mysqli_fetch_assoc($result))
                    {
                        echo '<option value="'.$tuple["family"].'">'.$tuple["family"].'</option>'."\n";
                    }
            }
     
    }
     
         echo mysqli_error();
    mais, comme le dit willy_k, si PHP n'affiche pas les erreurs...

  19. #19
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    C'est vrai que passer par PDO faciliterait bien les choses.
    Sinon oui PHP n'affiche pas les erreurs chez vous (donc même avec PDO, vous avez des erreurs vous ne saurez rien), parce que par exemple mysqli_error prend en argument le $link.
    Vous utilisez quoi comme environnement de dev ?

    La requête fonctionne bien dans phpmyadmin ? Si oui aucune raison que PHP fasse du "n'importe quoi" . Il serait intéressant de redonner votre code complet avec le mysqli_conf.inc.php
    Le bienfait n'est jamais perdu

  20. #20
    Membre habitué
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 482
    Points : 193
    Points
    193
    Par défaut
    Bonjour,
    Merci Willy_k pour votre coup de main.
    Citation Envoyé par Willy_k Voir le message
    C'est vrai que passer par PDO faciliterait bien les choses.
    Sinon oui PHP n'affiche pas les erreurs chez vous (donc même avec PDO, vous avez des erreurs vous ne saurez rien), parce que par exemple mysqli_error prend en argument le $link.
    Les remarques de Sabotage font que je vais me mettre à PDO mais il me semblait que je ne devais pas être loin avec mysqli donc ça me fait râler.

    Citation Envoyé par Willy_k Voir le message
    La requête fonctionne bien dans phpmyadmin ? Si oui aucune raison que PHP fasse du "n'importe quoi" .
    En effet, la requête fonctionne dans phpmyadmin.
    Citation Envoyé par Willy_k Voir le message
    Il serait intéressant de redonner votre code complet avec le mysqli_conf.inc.php
    mysqli_conf.inc.php:
    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
    <?php
    	// Paramètres de configuration de la base de données
    	$host = 'XXX'; // Nom du serveur
    	$base = 'XXX'; // Nom de la base
    	$login = 'XXX'; // Nom d'utilisateur
    	$password = 'XXX'; // Mot de passe
     
    	$link = mysqli_connect($host,$login,$password,$base));	// Connexion à MySql
    	mysqli_set_charset ( $link , 'UTF8' ); // ON IMPOSE UTF-8
     
    if (!$link)
    	{
    	    echo "Erreur: Impossible de se connecter a MySQL." . PHP_EOL;
    	    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    	    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    	    exit;
    	}
     
     
    	/* Vérification de la connexion */
    	if (mysqli_connect_errno())
    		{
    			printf("Échec de la connexion : %s\n", mysqli_connect_error());
    			exit();
    		}
     
      /* Modification du jeu de résultats en utf8 */
      if (!mysqli_set_charset($link, "utf8"))
    	  {
    	      printf("Erreur lors du chargement du jeu de caractères utf8 : %s\n", mysqli_error($link));
    	      exit();
    	  }
     
    ?>
    Mon script:
    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
    <?php
    // Afficher les erreurs à l'écran
    ini_set('display_errors', 1);
    // Enregistrer les erreurs dans un fichier de log
    ini_set('log_errors', 1);
    // Nom du fichier qui enregistre les logs (attention aux droits à l'écriture)
    ini_set('error_log', dirname(__file__) . '/log_error_php.txt');
    // Afficher les erreurs et les avertissements
    error_reporting(E_ALL);
     
    	/* Variables de connexion */
    	include "../php/mysqli_conf.inc.php"; // Inclusion du fichier de connexion à la base de données
     
    echo ("<form action='suite.php' method='post'>");
    echo ("<select name = 'ChoixFamille'>");
    $SQL = "SELECT DISTINCT `family` FROM `plant` ORDER by `family` ASC";
     
    if ($result = mysqli_query($link, $SQL)) {
    	$rows = mysqli_num_rows($result);
         echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>'
     
     
        if ($rows>0)
            {
                echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>';
                while($tuple=mysqli_fetch_assoc($result))
                    {
                        echo '<option value="'.$tuple["family"].'">'.$tuple["family"].'</option>'."\n";
                    }
            }
     
    }
     
         echo mysqli_error();
     
    echo ("</select>");
    echo "<input type= 'submit' name= 'SelFamille' value= 'Valider'>";
    echo ("</form>");
    ?>
    Voila, vous savez tout ;-)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Création liste déroulante à partir d'une feuille "BDD"
    Par grokh dans le forum Excel
    Réponses: 10
    Dernier message: 01/04/2016, 11h31
  2. Réponses: 4
    Dernier message: 28/12/2009, 15h37
  3. [SQL] Liste déroulante à partir d'une table avec tri
    Par ksper92 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/11/2006, 11h25
  4. [MySQL] Remplissage d'une liste déroulante à partir d'une requête SQL
    Par gaucher dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/05/2006, 15h46
  5. alimenter un liste déroulante à partir d'une popup
    Par allowen dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/01/2006, 15h27

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