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 :

Passage d'une chaine de caractère à une requête via une fonction [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 116
    Points : 46
    Points
    46
    Par défaut Passage d'une chaine de caractère à une requête via une fonction
    Salut tout le monde,

    voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function nombre_instruction($addiction,$niveau_instruction)
    {
    	$sql_instruction = "SELECT COUNT(`p_id`) FROM `personne` WHERE `p_niveau_instruction`={$niveau_instruction} AND `{$addiction}`=1";
    	$res_instruction = mysql_query($sql_instruction) or die(mysql_error());
    	while($nombre_instruction_array = mysql_fetch_array($res_instruction))
    	{
    		$nombre_instruction = $nombre_instruction_array[0];
    	} 
    	return $nombre_instruction;
    }
    un appel du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nombre_instruction('p_fumeur','secondaire');
    génère l'erreur suivante:

    Unknown column 'analphabete' in 'where clause'

    Quelqu'un voit le problème?
    Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    Salut,
    pour faire ce que tu veux faire il éxiste une fonction de php.

    Elle s'utilise de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
     
    $sql_instruction = "SELECT COUNT(`p_id`) FROM `personne` WHERE `p_niveau_instruction`={$niveau_instruction} AND `{$addiction}`=1";
     
    $nombre_instructions = mysql_num_rows($sql_instruction);
     
    echo 'Il y a '.$nombre_instruction.' instructions.';
    En espèrant avoir bien compris ton problème,

    Raphaël.

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 116
    Points : 46
    Points
    46
    Par défaut
    Merci pour la réponse Rapahel

    Toutefois, je pense que mon problème se trouve plutôt ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE `p_niveau_instruction`={$niveau_instruction}
    En appelant ma fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nombre_instruction('p_fumeur','secondaire');
    c'est comme si 'secondaire' était un nom de colonne alors que ce n'est pas le cas...

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 116
    Points : 46
    Points
    46
    Par défaut
    J'avais fait une bêtise:

    Lors de l'appel de ma fonction il fallait mettre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nombre_instruction('p_fumeur','\'secondaire\'');
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nombre_instruction('p_fumeur','secondaire');
    Conseil du jour: éviter le développement après 2h du matin

  5. #5
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Citation Envoyé par Kobhqlt Voir le message
    Salut,
    pour faire ce que tu veux faire il éxiste une fonction de php.

    Elle s'utilise de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
     
    $sql_instruction = "SELECT COUNT(`p_id`) FROM `personne` WHERE `p_niveau_instruction`={$niveau_instruction} AND `{$addiction}`=1";
     
    $nombre_instructions = mysql_num_rows($sql_instruction);
     
    echo 'Il y a '.$nombre_instruction.' instructions.';
    En espèrant avoir bien compris ton problème,

    Raphaël.
    Bonjour,

    Ce code est faux, $nombre_instructions renverra forcement 1 puisque COUNT ne renvoie qu'une seule ligne dans le jeu de résultat, ligne qui ne contient que le nombre de lignes de la table personne.

    De plus, mysql_num_rows prend une resource mysql en paramètre.

    Deux manières possible de faire ceci :


    1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql_instruction = "SELECT COUNT(`p_id`) AS nb FROM `personne` WHERE `p_niveau_instruction`={$niveau_instruction} AND `{$addiction}`=1";
     
    $nombre_instructions = mysql_result(mysql_query($sql_instruction), 0, 'nb');
     
    echo 'Il y a '.$nombre_instruction.' instructions.';
    2 (moins performant) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql_instruction = "SELECT * FROM `personne` WHERE `p_niveau_instruction`={$niveau_instruction} AND `{$addiction}`=1";
     
    $nombre_instructions = mysql_num_rows(mysql_query($sql_instruction));
     
    echo 'Il y a '.$nombre_instruction.' instructions.';
    D'où la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function nombre_instruction($addiction,$niveau_instruction)
    {
    	return mysql_result(mysql_query("SELECT COUNT(`p_id`) AS nb FROM `personne` WHERE `p_niveau_instruction`={$niveau_instruction} AND `{$addiction}`=1"), 0, 'nb');	
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 27/04/2011, 16h59
  2. Réponses: 2
    Dernier message: 03/10/2008, 13h50
  3. Requète supprimer une chaine de caractères
    Par PhRey dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/02/2008, 11h20
  4. [POO] Attribuer du style via une chaine de caractères
    Par d-Rek dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/02/2008, 12h10
  5. Réponses: 5
    Dernier message: 02/08/2007, 11h31

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