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 :

requête sql dans fonction [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut requête sql dans fonction
    Bonjour a tous

    j'ai fait une requête qui généré un tableau, elle fonctionne pas de souci même si j'ai ramé car je suis débutant

    Je dois faire cette même opération un grand nombre de fois en changeant juste 2 paramètres j'aimerais donc créer cette même requête en lui transférant dans un appel ces deux paramètres dans les valeurs : $numserie et $critere

    mais la syntaxe exact même en cherchant je ne l'ai point trouvé !

    voici un extrait du code que j'aimerai placer dans la fonction pour générer mon tableau sur ma page:
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    // suite au test d'une condition : exécution de la fonction ($numserie,$critere)
     
    //modification de critère de recherche
       $critere="Materiels.NumeroSerie";
     
        $req = $bdd->prepare('
                SELECT     
    Unites.CodeUnite as "Code unité",
    Unites.Nom as "Nom unité",
    Materiels.NumeroSerie as "Numéro série",
    Materiels.Winpark AS "Winpark",
    Materiels.DateInventaire as "Date inventaire",
    Materiels.Quantite as "Quantite",
    Materiels.Commentaire as "Commentaire", 
    CA.Code as "code articles",
    Categories.NOM as "Nom Categories",
    Types.NOM as "Types",
    Marques.Nom as "Marques",
    Garanties.Duree as "Durée Garantie",
    Credits.Nom as "Credits",
    Fournisseurs.Nom as "Fournisseur",
    Batiments.Numero as "Numero Batiment",
    Salles.Numero as "Numero salle",
    Salles.nom as "Nom salle",
    Parcs.Nom as "Parcs",
    Statuts.Nom as "statuts",
    Statuts.Code as "code status"
                FROM materbiel.Materiels 
    LEFT JOIN Unites
    ON Unites.UniteID=Materiels.UniteID
    LEFT JOIN CA
    ON CA.CAID=Materiels.CAID
    LEFT JOIN Categories
    ON Categories.CategorieID=Materiels.CategorieID
    LEFT JOIN Types
    ON Types.TypeID=Materiels.TypeID
    LEFT JOIN Marques
    ON Marques.MarqueID=Materiels.MarqueID
    LEFT JOIN Modeles
    ON Modeles.ModeleID=Materiels.ModeleID
    LEFT JOIN Garanties
    ON Garanties.GarantieID=Materiels.GarantieID
    LEFT JOIN Credits
    ON Credits.CreditID=Materiels.CreditID
    LEFT JOIN Fournisseurs
    ON Fournisseurs.FournisseurID=Materiels.FournisseurID
    LEFT JOIN Batiments
    ON Batiments.BatimentID=Materiels.BatimentID
    LEFT JOIN Salles
    ON Salles.BatimentID=Materiels.BatimentID
    LEFT JOIN Parcs
    ON Parcs.ParcID=Materiels.ParcID
    LEFT JOIN Statuts
    ON Statuts.StatutID= :r_table        
     
    where Materiels.NumeroSerie = :numserie') OR die(print_r($bdd->errorInfo()));
     
    echo "réslutat de la recherche pour la requete: " .$numserie. "<p/>";    
     
    // CES DEUX VARIABLES SERAIENT INJECTEES PAR LA FONCTION
        $req->execute(array('numserie'=>$numserie, 'r_table'=>$critere));
     
     
    // création d'un tableau
        echo "<table border=1px;id=tableau_requete>";
     
     
        while ($donnees = $req->fetch()) {
            echo "<th>Code unité</th><th>Nom unité</th><th>Numéro série</th><th>Winpark</th>
                <th>Date inventaire</th><th>Quantite</th><th>code articles</th><th>Nom Categories</th><th>Types</th>
                <th>Marques</th><th>Durée Garantie</th><th>Credits</th><th>Fournisseur</th><th>Numero Batiment</th>
                <th>Numero salle</th><th>Nom salle</th><th>Parcs</th><th>statuts</th><th>code status</th><th>Commentaire</th>";
            echo "<tr><td>" .$donnees['Code unité']. "</td>";
            echo "<td>" .$donnees['Nom unité']. "</td>";
            echo "<td>" .$donnees['Numéro série']. "</td>";
            echo "<td>" .$donnees['Winpark']. "</td>";
            echo "<td>" .$donnees['Date inventaire']. "</td>";
            echo "<td>" .$donnees['Quantite']. "</td>";
            echo "<td>" .$donnees['code articles']. "</td>";
            echo "<td>" .$donnees['Nom Categories']. "</td>";
            echo "<td>" .$donnees['Types']. "</td>";
            echo "<td>" .$donnees['Marques']. "</td>";
            echo "<td>" .$donnees['Durée Garantie']. "</td>";
            echo "<td>" .$donnees['Credits']. "</td>";
            echo "<td>" .$donnees['Fournisseur']. "</td>";
            echo "<td>" .$donnees['Numero Batiment']. "</td>";
            echo "<td>" .$donnees['Numero salle']. "</td>";
            echo "<td>" .$donnees['Nom salle']. "</td>";
            echo "<td>" .$donnees['Parcs']. "</td>";
            echo "<td>" .$donnees['statuts']. "</td>";
            echo "<td>" .$donnees['code status']. "</td>";
            echo "<td>" .$donnees['Commentaire']. "</td></tr>";
     
        echo "</table>";
        }
       echo "</table>";
        $req->closeCursor();
    je vous remercie

  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
    Tu ne peux pas mettre des noms de table ou de colonne en paramètre d'une requête paramétrée.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    ha mince !
    donc c'est impossible alors?
    si c'est le cas inutile que je cherche dans ce cas je vais les faire à la main une par une.

  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
    De manière plus générale, il faudrait peut etre revoir ta scructure de données.
    Il est un peu étrange de vouloir faire varier uniquement le nom d'une table : est-ce que tes deux tables ne peuvent pas être rassemblées ?

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    le problème c'est que c'est un sujet qui m'est "imposé" je ne peux pas toucher au table. elles sont multiple...
    en fait je dois juste faire varier cette requete sur le nom de la table et le critère de recherche après le "where".

    comme je n'ai pas beaucoup d'expérience, je pense que je dois pas bien m'y prendre je te l'accord!

    merci pour tes réponses

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Le principe reste le même pour toi, simplement ce ne sera pas une requête préparée.

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    tu veux dire que si j'utilise directement la fonction pour exécuter la requete
    je pourrais la mettre dans une fonction?

    si c'est le cas je n'utilise pas la fonction prépare....(code sql) pas de souci

  8. #8
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Points : 238
    Points
    238
    Par défaut
    si tu essaies de construire ta requête par une variable sql tu pourras executer directement ta requête sans passer les paramètres.

    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    <?php
     
    function mafonction($numserie,$critere){
     
     
    // suite au test d'une condition : exécution de la fonction ($numserie,$critere)
     
    //modification de critère de recherche
      // $critere=;
      // $numserie=
     $sql='
                SELECT     
    Unites.CodeUnite as "Code unité",
    Unites.Nom as "Nom unité",
    Materiels.NumeroSerie as "Numéro série",
    Materiels.Winpark AS "Winpark",
    Materiels.DateInventaire as "Date inventaire",
    Materiels.Quantite as "Quantite",
    Materiels.Commentaire as "Commentaire", 
    CA.Code as "code articles",
    Categories.NOM as "Nom Categories",
    Types.NOM as "Types",
    Marques.Nom as "Marques",
    Garanties.Duree as "Durée Garantie",
    Credits.Nom as "Credits",
    Fournisseurs.Nom as "Fournisseur",
    Batiments.Numero as "Numero Batiment",
    Salles.Numero as "Numero salle",
    Salles.nom as "Nom salle",
    Parcs.Nom as "Parcs",
    Statuts.Nom as "statuts",
    Statuts.Code as "code status"
                FROM materbiel.Materiels 
    LEFT JOIN Unites
    ON Unites.UniteID=Materiels.UniteID
    LEFT JOIN CA
    ON CA.CAID=Materiels.CAID
    LEFT JOIN Categories
    ON Categories.CategorieID=Materiels.CategorieID
    LEFT JOIN Types
    ON Types.TypeID=Materiels.TypeID
    LEFT JOIN Marques
    ON Marques.MarqueID=Materiels.MarqueID
    LEFT JOIN Modeles
    ON Modeles.ModeleID=Materiels.ModeleID
    LEFT JOIN Garanties
    ON Garanties.GarantieID=Materiels.GarantieID
    LEFT JOIN Credits
    ON Credits.CreditID=Materiels.CreditID
    LEFT JOIN Fournisseurs
    ON Fournisseurs.FournisseurID=Materiels.FournisseurID
    LEFT JOIN Batiments
    ON Batiments.BatimentID=Materiels.BatimentID
    LEFT JOIN Salles
    ON Salles.BatimentID=Materiels.BatimentID
    LEFT JOIN Parcs
    ON Parcs.ParcID=Materiels.ParcID
    LEFT JOIN Statuts
    ON Statuts.StatutID='.$critere.'        
     
    where Materiels.NumeroSerie ='.$numserie';';
     
        $req = $bdd->prepare($sql) OR die(print_r($bdd->errorInfo()));
     
    echo "réslutat de la recherche pour la requete: " .$numserie. "<p/>";    
     
    // CES DEUX VARIABLES SERAIENT INJECTEES PAR LA FONCTION
        $req->execute();
     
     
    // création d'un tableau
        echo "<table border=1px;id=tableau_requete>";
     
     
        while ($donnees = $req->fetch()) {
            echo "<th>Code unité</th><th>Nom unité</th><th>Numéro série</th><th>Winpark</th>
                <th>Date inventaire</th><th>Quantite</th><th>code articles</th><th>Nom Categories</th><th>Types</th>
                <th>Marques</th><th>Durée Garantie</th><th>Credits</th><th>Fournisseur</th><th>Numero Batiment</th>
                <th>Numero salle</th><th>Nom salle</th><th>Parcs</th><th>statuts</th><th>code status</th><th>Commentaire</th>";
            echo "<tr><td>" .$donnees['Code unité']. "</td>";
            echo "<td>" .$donnees['Nom unité']. "</td>";
            echo "<td>" .$donnees['Numéro série']. "</td>";
            echo "<td>" .$donnees['Winpark']. "</td>";
            echo "<td>" .$donnees['Date inventaire']. "</td>";
            echo "<td>" .$donnees['Quantite']. "</td>";
            echo "<td>" .$donnees['code articles']. "</td>";
            echo "<td>" .$donnees['Nom Categories']. "</td>";
            echo "<td>" .$donnees['Types']. "</td>";
            echo "<td>" .$donnees['Marques']. "</td>";
            echo "<td>" .$donnees['Durée Garantie']. "</td>";
            echo "<td>" .$donnees['Credits']. "</td>";
            echo "<td>" .$donnees['Fournisseur']. "</td>";
            echo "<td>" .$donnees['Numero Batiment']. "</td>";
            echo "<td>" .$donnees['Numero salle']. "</td>";
            echo "<td>" .$donnees['Nom salle']. "</td>";
            echo "<td>" .$donnees['Parcs']. "</td>";
            echo "<td>" .$donnees['statuts']. "</td>";
            echo "<td>" .$donnees['code status']. "</td>";
            echo "<td>" .$donnees['Commentaire']. "</td></tr>";
     
        echo "</table>";
        }
     
        $req->closeCursor();
     
    	}
    ?>

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    Bonjour ,

    je vous remercie pour votre réponse.
    je viens de tester, malheureusement j'ai une page blanche !
    c'est mon plus gros souci lorsqu'il y a une erreur je ne sais pas d'ou ça vient et je n'ai aucun moyen de la traquée !

    je vais encore m'y pencher dessus.

  10. #10
    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
    Le code au dessus n'est que la définition de la fonction, tu as bien pensé à l'appeller ?

  11. #11
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Points : 238
    Points
    238
    Par défaut
    il faudrait inclure ton appel $bdd dans ta fonction

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    qu'entends tu pas "inclure" $bdd ?

  13. #13
    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
    Tu peux faire un
    au début de la fonction.

  14. #14
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    je vous remercie.

    a présent ça marche.
    merci de m'avoir accorder de votre temps

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

Discussions similaires

  1. [MySQL] Requête sql dans une fonction php
    Par profilien dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 23/03/2015, 08h02
  2. requête sql dans une fonction
    Par Monsieur Griboux dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/05/2013, 19h40
  3. [PHP 5.0] Exécuter une requête SQL dans une fonction Javascript
    Par PrinceMaster77 dans le forum Langage
    Réponses: 13
    Dernier message: 08/07/2011, 04h53
  4. erreur dans une requête sql dans une fonction php
    Par frboyer dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2009, 13h37
  5. Problème de requète SQL dans un Requery
    Par Keraccess dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/10/2004, 14h58

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