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 :

Gestion de requête par une fonction php


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut Gestion de requête par une fonction php
    Bonjour

    je tente de faire une fonction php dans le but de l'utiliser pour chaque requete "select" d'un site
    la voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function requete($champs, $table, $page, $ordre, $sens, $limite1, $limite2){
    $champs = implode(',',$champs);
    $ordre = 'order by '.$ordre.' '.$sens;
    if($limite1!='' && $limite2!=''){$limit='LIMIT '.$limite1.','.$limite2;}
    $sql = mysql_query('SELECT '.$champs.' FROM '.$table.' WHERE page_dest ="'.$page.'" '.$ordre.' '.$limit.'');
    return $sql;
    bien sur erreur
    comment afficher $sql là où est appelé la fontion

    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo requete($champs, $table, $page, $ordre, $sens, $limite1, $limite2);

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut
    echo requete($champs, $table, $page, $ordre, $sens, $limite1, $limite2);
    me donne cette erreur :

    Resource id #5
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    pardon j'avais pas vu que tu avais mit le query dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while($res=mysql_fetch_assoc(requete($champs, $table, $page, $ordre, $sens, $limite1, $limite2))){
     
    //traitement
     
    }

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut
    heu ... boucle infinie
    ma fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function requete($champs, $table, $page, $ordre, $sens, $limite1, $limite2){
    $champs = implode(',',$champs);
    if($ordre!=''){$ordre = 'order by '.$ordre.' '.$sens;}else{$ordre="";}
    if($limite1!='' && $limite2!=''){$limit='LIMIT '.$limite1.','.$limite2;}
    $sql = mysql_query('SELECT '.$champs.' FROM '.$table.' WHERE page_dest ="'.$page.'" '.$ordre.' '.$limit.'');
    return $sql;
    }
    et le while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $champs = array('id','page_dest','fichier1');$table = 'enregistrements';$page = 'GA_partenaires';$ordre = '';$sens = '';$limite1 ='0';$limite2 ='1';
    while($liste = mysql_fetch_assoc(requete($champs, $table, $page, $ordre, $sens, $limite1, $limite2))){
    echo $liste['fichier1'];
    }

  6. #6
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Bonsoir,

    La fonction retourne une ressource.
    Si vous mettez la fonction dans un while, la requête s'effectuera à chaque boucle et, au mieux, vous obtiendrez le premier résultat de votre requête.

    SANS aucune certitude (une ressource peut-elle être utilisée en dehors de la fonction qui la génère ???)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $champs = array('id','page_dest','fichier1');$table = 'enregistrements';$page = 'GA_partenaires';$ordre = '';$sens = '';$limite1 ='0';$limite2 ='1';
    $ressource = requete($champs, $table, $page, $ordre, $sens, $limite1, $limite2);
    while($liste = mysql_fetch_assoc($ressource)){
    echo $liste['fichier1'];
    }
    Sinon,
    J'ai fait ce genre de chose il y a bien longtemps.
    Mon grand âge fait que ma mémoire me joue des tours.
    Si je me souviens bien je m'en était sorti en faisant, dans la fonction, un while (mysql_fetch_assoc()) qui remplissait un tableau.
    En sortie de la boucle un petit serialize() et c'était ce résultat que la fonction renvoyait
    Il restait donc à déserializer et a parcourir le tableau

    Par contre, je ne me souviens plus de la raison pour laquelle je serializais

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Points : 177
    Points
    177
    Par défaut
    donc ce que je peux ajouter dans la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$resultat=array();
    	while($liste = mysql_fetch_assoc($sql)){
    
    	array_push($resultat,array(ICI));
    	}
    ICI serait une fonction mysql qui reprendrait tous les champs appelés dans la requete
    quelle est la fonction mysql ?
    et du coup le while n'est plus juste?

    Merci de votre aide

Discussions similaires

  1. Tracer les requêtes exécutées par une fonction PL/PgSQL
    Par scheu dans le forum Administration
    Réponses: 1
    Dernier message: 02/02/2009, 14h01
  2. Réponses: 5
    Dernier message: 03/07/2008, 16h14
  3. Réponses: 6
    Dernier message: 07/06/2007, 14h27
  4. [PHP-JS] Affichage par une fonction js
    Par Mathieu72 dans le forum Langage
    Réponses: 6
    Dernier message: 20/01/2007, 16h50
  5. [SQL] php et recuperation d'une valeur renvoyée par une fonction sql
    Par highman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/06/2006, 15h42

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