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 :

Variable php dans BDD mySql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de onirisme
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2004
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 221
    Points : 316
    Points
    316
    Par défaut Variable php dans BDD mySql
    Bonjour à tous,

    Bon, je sais même pas si c'est possible...

    Je soushaiterai inclure une variable php dans une base de données et la récupérer.

    Je m'explique :
    Je réalise un RAD en php qui sert à concevoir des formulaires et plein d'autres choses. La personne remplie plein de champs et moi je récupére tous ça.

    Le shéma : La personne chosie sa base de donnée puis sa table, elle renseigne les champs et le type d'input qu'elle souhaite avoir. En cliquant sur un bouton, ça génére automatiquement le formulaire. Jusque là ça va.

    J'au un code qui sert à créer un formulaire ->
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while ($i<$count){
    			$chp0 = $_POST['name'.$n++.''];
    			$chp1 = $_POST['inputType_'.$s++.''];
    			$chp2 = $_POST['label_'.$i++.''];
    			echo '<tr><td>'.$chp2.' : </td><td>';
    			getInput ($chp1);
    			echo '</td></tr>'."\n";
    		}
    		echo '<tr><td></td><td><input type="submit" name="submit" value="'.$btValue.'"</td></tr>'."\n";

    le $chp0 c'est le nom que devrait avoir le champ de saisie. C'est champs sont récupérés d'une base de données MySql. C'est également le nom de champs de la table selectionnée.

    exemple :
    table neneu
    - champ 1 = id
    - champ 2 =nom
    etc...

    Le souci c'est que je n'arrive pas à récupérer ce $chp[0]. J'ai créé une fonction qui me selectionne automatiquement le champ en fonction du choix de l'utilisateur :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    /****************************************************************
     * Fonction getInput
     * Genere l'input de sortie de la fonction genForm'
    ******************************************************************/
    function getInput($chp1){
    	$reqInput=mysql_query("SELECT * FROM inputType");
    	while ($input=mysql_fetch_row($reqInput)){
    		if($input[1]==$chp1){
    		echo $input[2];
    		}
    	}
    }

    il récupére bien le champ et le type de champs mais pas la variable name"" ;voici la sortie html
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <tr><td>id : </td><td>cat_id</td><td><input type="text" name="'.$chp0.'" value="" /></td></tr>
    <tr><td>nom : </td><td>cat_name</td><td><input type="text" name="'.$chp0''" value="" /></td></tr>

    et moi, je voudrai avoir ça
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //Imaginons que ce soit généré par l'incrémentation...
    $chp0[0] = "toto";
    $chp0[1] = "tata";
     
    //Sortie html
    <tr><td>id : </td><td>cat_id</td><td><input type="text" name="toto" value="" /></td></tr>
    <tr><td>nom : </td><td>cat_name</td><td><input type="text" name="tata" value="" /></td></tr>

    Voici mon code sql ->
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ID, Nom, Value
    1,text,<input type="text" name="'.$chp0.'" value="" />

    Question : Est t'i possible de récupérer une variable php de cette façon? si oui comment?
    Si ce n'est pas possible, y a t'il un autre moyen pour parvenir à ce résultat...

    J'ai essayé pas mal de chose sans succès...

    Bon, je sais pas si c'est très clair mais merci d'avance à celles et ceux qui pourront m'aider.

  2. #2
    Membre éprouvé Avatar de fenkys
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Points : 1 054
    Points
    1 054
    Par défaut
    Pitié pour les ours polaires.

    Ta fonction getInput recupere tous les champs de toutes les lignes de ta table. MySQL est une base de données et à ce titre est plus efficace que PHP pour manipuler les données. Donc arrange toi pour faire faire le maximum de travail par MySQL :
    - ne selectionne que les champs que tu vas utiliser
    - ne selectionne que les lignes qui t'interesse
    Ce qui veut dire :
    - banni les requetes SQL commençant par "SELECT *", precise explicitement la liste des champs que tu désires.
    - au lieu de prendre toutes les lignes et de boucler sur les données pour trouver la bonne comme tu le fait, met une clause WHERE dans ta requête qui ne renvoie que la bonne.
    Ton serveur sera moins surchargé, la clim tournera moins vite pour le refroidir et la banquise fondra moins vite.

    Pour ta question même. Non, il n'est pas possible de récuperer une variable PHP depuis une requête SQL comme tu le demandes. Tu dois utiliser les fonctions de gestion de MySQL fournie par PHP (mysql_fetch_row, mysql_fetch_array, mysql_object, mysql_result, tu as le choix) pour disposer le retour d'une requête dans les variables. Si j'ai bien compris ce que tu cherches à faire.

    Si c'est le contraire que tu veux faire, ce n'est pas possible non plus. Les données d'un formulaire se retrouvent, après click sur le bouton submit et dans la page qui traite le submit (pas dans la page courante) dans le tableau _POST ou _GET selon la méthode que tu as choisi pour poster ton formulaire.

  3. #3
    Membre averti Avatar de onirisme
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2004
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 221
    Points : 316
    Points
    316
    Par défaut
    Citation Envoyé par fenkys Voir le message
    Pitié pour les ours polaires.

    Ta fonction getInput recupere tous les champs de toutes les lignes de ta table. MySQL est une base de données et à ce titre est plus efficace que PHP pour manipuler les données. Donc arrange toi pour faire faire le maximum de travail par MySQL :
    - ne selectionne que les champs que tu vas utiliser
    - ne selectionne que les lignes qui t'interesse
    Ce qui veut dire :
    - banni les requetes SQL commençant par "SELECT *", precise explicitement la liste des champs que tu désires.
    - au lieu de prendre toutes les lignes et de boucler sur les données pour trouver la bonne comme tu le fait, met une clause WHERE dans ta requête qui ne renvoie que la bonne.
    Ok Merci pour le conseil. Je vais rectifier cela... Ca fait toujours du bien de sauvegarder la planète

    Bon, en fait j'ai réussi à faire ce que je voulais :

    Exemple :
    Données sql -> Table "utilisateurs" 3 champs id, nom, value
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    (1, 'nom1', '$value1'),
    (2, 'nom2', '$value2');

    Le code php-->
    Code PHP : 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
     
    //Selection de la base de donnée pour test
    mysql_select_db("test");
     
    //Variable - Normalement elles sont générées automatiquement
    $value1 = 'il fait beau ';
    $value2 = 'il fait moche';
    $sel = 'nom1';
     
    //Requête
    $req = mysql_query("SELECT nom, value FROM utilisateurs WHERE nom = \"$sel\" ");
    $result = mysql_fetch_row($req);
     
    //Je souhaite afficher la 1ere colonne de mon select
    $val = $result[1];
    echo $val.'<br/>'."\n";
    eval("\$val = \"$val\";");
    echo $val.'<br/>'."\n";

    La fonction eval me permet de transformer ma chaine en langage php.
    Affichage html
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Résultat = $value1
    Résultat = il fait beau

    J'ai pas essayé dans l'autre sens mais je pense que ça fonctionne quand même...

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

Discussions similaires

  1. [MySQL] variable php dans une requête MySQL
    Par labib23dz dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/06/2013, 12h41
  2. [MySQL] variable php dans une boucle mysql qui envoit vers un popup
    Par sinifer dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 18/06/2009, 15h57
  3. Insérez variable PHP dans requête Mysql
    Par jeremie74 dans le forum Requêtes
    Réponses: 11
    Dernier message: 22/08/2006, 18h21
  4. [SGBD] Parser une variable pour mettre données dans bdd MySQL
    Par winnie82 dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 15/03/2006, 17h20
  5. [PHP-JS] Problème de variable PHP dans un script JS
    Par soad029 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/08/2005, 22h17

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