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

Langage PHP Discussion :

Mettre à jour une base de données MYSQL avec zones de texte générées automatiquement


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Mettre à jour une base de données MYSQL avec zones de texte générées automatiquement
    Bonjour tout le monde,

    J'ai un script PHP qui me permet de créer automatiquement des zone de texte.

    Le nombre de zone de texte varie selon le nombre de champs de la table sélectionnée dans ma bd.

    Voici le code :

    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
    <?php
    # script qui permet de créer des zones de texte à la volée et d'afficher le nom des champs de la table
    # variable qui contient le nom de ma base de données.
    $dbname = 'deliberations';
     
     
    $link = mysql_connect('localhost', 'root', 'mdp');
    	if(!$link)	  
    	 {
       		echo 'Impossible de se connecter à MySQL';
       		exit;
    	}
     
    	// Rendre la base de données deliberation, la base courante
    $db_selected = mysql_select_db($dbname, $link);
    if (!$db_selected) 
    	{
    	   die ('Impossible de sélectionner la base de données : ' . mysql_error());
    	}
     
    # $_POST[select_Nom_Tables] récupère la valeur choisie par l'utilisateur, il faut ensuite cliquer sur le bouton pour qu'apparaisse les zones de texte	
    $result = mysql_query("SHOW COLUMNS FROM .$_POST[select_Nom_Tables]") or die (mysql_error());
     
      while ($row = mysql_fetch_assoc($result))  
       { 
       	  # ne montre que les noms des champs grâce à 'Field'
       	  echo $row['Field']." "; 
    	  # crée des zones de texte dynamiquement par rapport au nombre de champs.
       	  echo "<input name=\"textarea\" type=\"text\" value=\"\" /> <br/>";
     
     
       }  
    ?>
    J'obtiens par exemple pour une table à 3 champs ceci :


    champs1 |-------|

    champs2 |-------|

    champs3 |-------|
    J'aimerais ajouter dans le code ci-dessus, une ligne de code qui ajoute un formulaire entre les 3 zones de texte, je devrais donc avoir :


    <Form action....>

    champs1 |-------|

    champs2 |-------|

    champs3 |-------|

    </Form>
    J'utilise ceci :

    et

    le but est de pouvoir mettre à jour ma base de données MYSQL via les zones de texte.

    Je me demande comment je peux mettre à jour la base, quel nom porte les zones de texte ?

    Je vous remercie d'avance pour l'aide.

    beegees

  2. #2
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Tout simplement:

    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
     
    <?php
     
    echo '<form action="" method="POST"><p>';
     
    while ($row = mysql_fetch_assoc($result)) {
        // Ne montre que les noms des champs grâce à 'Field'
        echo $row['Field'] . " ";
     
        // Crée des zones de texte dynamiquement par rapport au nombre de champs.
        echo '<input name="textarea[]" type="text" /><br/>';
    }
     
    echo '</p></form>';
     
    ?>

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Bonjour Kennel,

    Merci pour ta réponse.

    La question que je me pose c'est :

    Comment puis-je connaitre le nom de mes zones de texte qui sont générés automatiquement ? et comment dire ZoneTexte1 met à jour Champ mysql 1 ?

    Je pense que je dois travailler avec $result, car cette variable contient le nom de la table et le nom des colonnes (???)

    Merci encore pour l'aide et super avatar

    beegees

  4. #4
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Ici comme je te l'ai donné ça te génère un tableau...

    Si tu veux des noms précis, dans ce cas ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<input name="' . $row['Field'] . '" type="text" /><br />';

  5. #5
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Merci beaucoup Kennel,

    Je vais essayer maintenant de mettre la table à jour avec un INSERT.

    Encore merci pour ton aide, t'as l'air vraiment très bon en PHP toi

    beegees

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Je me suis fait griller, mais je te le donne quand même.
    A peaufiner :
    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
    <?php
      function listeColonne($table)
      {
        global $link;
     
        $colonne = array();
     
        $sql = 'SHOW COLUMNS
                FROM ' . $table;
        $result = mysql_query($sql, $link);
        while ($item = mysql_fetch_object($result))
        {
          $colonne[] = $item -> Field;
        }
        return $colonne;
      }
     
      function afficheColonne($colonne)
      {
        $input = '';
        foreach ($colonne as $valeur)
        {
          $input .= '<tr><td align="right">' . $valeur . '&nbsp;</td><td align="center"><input type="text" name="' . $valeur . '" value="" /></td></tr>';
        }
        return $input;
      }
     
      function creeRequete($table)
      {
        global $link;
     
        $value = array();
        $colonne = array();
        foreach ($_POST as $cle => $valeur)
        {
          if($cle != 'btn')
          {
            $colonne[] = $cle;
            $value[] = '\'' . $valeur . '\'';
          }
        }
        $sql = 'INSERT INTO ' . $table . '(' . implode(', ', $colonne) . ')
                VALUES (' . implode(', ', $value) . ')';
        echo $sql . '<br>';
      }
    //---------------------------------------------------------------  
    //---------------------------------------------------------------  
      $dbname = 'deliberations';
     
      $link = mysql_connect('localhost', 'root', 'mdp');
      if(!$link)	  
      {
      echo 'Impossible de se connecter à MySQL';
      exit;
      }
     
      // Rendre la base de données deliberation, la base courante
      $db_selected = mysql_select_db($dbname, $link);
      if (!$db_selected) 
      {
      die ('Impossible de sélectionner la base de données : ' . mysql_error());
      }
     
      # $_POST[select_Nom_Tables] récupère la valeur choisie par l'utilisateur, il faut ensuite cliquer sur le bouton pour qu'apparaisse les zones de texte	
      $table = $_POST[select_Nom_Tables];
    ?>
    <html>
      <head>
        <title>test</title>
      </head>
      <body>
        <form name="test" method="post" action="">
          <table width="30%" align="center">
            <?php echo afficheColonne(listeColonne($table)); ?>
            <tr>
              <td colspan="2" align="center">
                <input type="submit" name="btn" value="validez" />
              </td>
            </tr>
          </table>
        </form>
      </body>
    </html>

  7. #7
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut Jeca,

    Merci beaucoup pour ta réponse.

    J'ai fais un copié/collé de ton code et quand j'exécute, j'obtiens ce message d'erreur :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\wamp\www\test.php on line 11
    La ligne 11 correspond à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        while ($item = mysql_fetch_object($result))
    C'est bon si je mets les fonctions au-dessus du code HTML ? donc dans la même page.

    Merci encore.

    beegees

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    As-tu pensé à remettre tes paramètres de connexion ?

  9. #9
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Citation Envoyé par jeca Voir le message
    As-tu pensé à remettre tes paramètres de connexion ?
    Re,

    J'ai mis ce code :

    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
    <?php
      function listeColonne($table)
      {
        global $link;
     
        $colonne = array();
     
        $sql = 'SHOW COLUMNS
                FROM ' . $table;
        $result = mysql_query($sql, $link);
        while ($item = mysql_fetch_object($result))
        {
          $colonne[] = $item -> Field;
        }
        return $colonne;
      }
     
      function afficheColonne($colonne)
      {
        $input = '';
        foreach ($colonne as $valeur)
        {
          $input .= '<tr><td align="right">' . $valeur . '&nbsp;</td><td align="center"><input type="text" name="' . $valeur . '" value="" /></td></tr>';
        }
        return $input;
      }
     
      function creeRequete($table)
      {
        global $link;
     
        $value = array();
        $colonne = array();
        foreach ($_POST as $cle => $valeur)
        {
          if($cle != 'btn')
          {
            $colonne[] = $cle;
            $value[] = '\'' . $valeur . '\'';
          }
        }
        $sql = 'INSERT INTO ' . $table . '(' . implode(', ', $colonne) . ')
                VALUES (' . implode(', ', $value) . ')';
        echo $sql . '<br>';
      }
    //---------------------------------------------------------------  
    //---------------------------------------------------------------  
      $dbname = 'deliberations';
     
      $link = mysql_connect('localhost', 'root', 'mdp');
      if(!$link)	  
      {
      echo 'Impossible de se connecter à MySQL';
      exit;
      }
     
      // Rendre la base de données deliberation, la base courante
      $db_selected = mysql_select_db($dbname, $link);
      if (!$db_selected) 
      {
      die ('Impossible de sélectionner la base de données : ' . mysql_error());
      }
     
      # $_POST[select_Nom_Tables] récupère la valeur choisie par l'utilisateur, il faut ensuite cliquer sur le bouton pour qu'apparaisse les zones de texte	
      $table = $_POST[select_Nom_Tables];
    ?>
    <html>
      <head>
        <title>test</title>
      </head>
      <body>
        <form name="test" method="post" action="">
          <table width="30%" align="center">
            <?php echo afficheColonne(listeColonne($table)); ?>
            <tr>
              <td colspan="2" align="center">
                <input type="submit" name="btn" value="validez" />
              </td>
            </tr>
          </table>
        </form>
      </body>
    </html>
    Faut-il mettre les paramètres de connexion dans chaque fonction ?

    Désolé mais je débute en PHP/MYSQL

    beegees

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Sur cette ligne, il faut mettre tes paramètres. Je ne les ai pas mis puisque je ne les connais pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $link = mysql_connect('localhost', 'root', 'mdp');
    Toutes ces lignes proviennent de ton script d'origine :
    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
    <?php  $dbname = 'deliberations';
     
      $link = mysql_connect('localhost', 'root', 'mdp');
      if(!$link)	  
      {
      echo 'Impossible de se connecter à MySQL';
      exit;
      }
     
      // Rendre la base de données deliberation, la base courante
      $db_selected = mysql_select_db($dbname, $link);
      if (!$db_selected) 
      {
      die ('Impossible de sélectionner la base de données : ' . mysql_error());
      }
     
    // $_POST[select_Nom_Tables] récupère la valeur choisie par l'utilisateur, il faut ensuite cliquer sur le bouton pour qu'apparaisse les zones de texte
      $table = $_POST[select_Nom_Tables];
    ?>

  11. #11
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $link = mysql_connect('localhost', 'root', 'mdp');
    Sont mes vrais paramètres de connexions.

    qu'en penses-tu ?

    Merci encore
    beegees

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Remplace ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        $sql = 'SHOW COLUMNS
                FROM ' . $table;
        $result = mysql_query($sql, $link);
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        $sql = 'SHOW COLUMNS
                FROM ' . $table;
        echo $sql;
        $result = mysql_query($sql, $link)
          or die(mysql_error());
    et donne ce que ça affiche.

  13. #13
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Merci pour ta réponse.

    J'ai ajouté le code que tu m'as indiqué, voici ce que ça donne :

    SHOW COLUMNS FROM You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2
    Qu'en penses-tu ?

    beegees

  14. #14
    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 : 38
    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
    Il faut passer la table en paramètre de la fonction listeColonne('nom_table')

Discussions similaires

  1. Mettre à jour une base de données avec un fichier excel
    Par antoine.courtois dans le forum Langage SQL
    Réponses: 1
    Dernier message: 29/11/2011, 15h05
  2. Réponses: 1
    Dernier message: 16/12/2010, 15h34
  3. Réponses: 2
    Dernier message: 26/03/2010, 21h07
  4. mettre a jour une base de donné MySQL distante
    Par gasper06 dans le forum Installation
    Réponses: 0
    Dernier message: 20/01/2008, 15h27
  5. Peut on lier une base de donnée Mysql avec MS Project
    Par casper24 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 06/04/2006, 23h21

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