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 :

Remplir une base de données via un tableau dynamique


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2013
    Messages : 39
    Par défaut Remplir une base de données via un tableau dynamique
    Salut les amis, j’ai besoin de votre aide. J’ai réalisé un tableau comportant des colonnes dynamiques et lorsque je veux enregistrer les données saisies, ne sont enregistrées dans ma BD que les données saisies dans la dernière colonne. Alors remédier à cela afin que toutes les données soient prises en compte ? ci-dessous le code que j’ai réalisé :
    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
    <?php
    		include ("connexion.php");
     
    		if(isset($_POST['submit1']))
    		{
    			$id = mysql_real_escape_string (htmlentities ($_POST['id']));
    			$nom = mysql_real_escape_string (htmlentities ($_POST['nom']));
    			$prenom = mysql_real_escape_string (htmlentities ($_POST['prenom']));
    			$age = mysql_real_escape_string (htmlentities ($_POST['age']));
     
    			if (($id<>'') AND ($nom<>'') AND ($prenom<>'') AND ($age<>''))
    			{
    				$goal = mysql_query ("SELECT * FROM troncon WHERE nom='$nom'"); 
    				$dada = mysql_num_rows($goal);
     
    					if($dada==0)
    					{
    						mysql_query ("INSERT INTO troncon VALUES ('$id', '$nom', '$prenom', '$age')");
    						die (" <br/>Les données saisies ont été bien enregistrées.");
     
    					} else "Cet identifiant existe déjà dans la BD !!! ";	
     
    			}else echo "Veuillez renseigner tous les champs SVP.";
    	    }
    ?>
     
    <?php
    //
    $colonne=5;
    $nb = $colonne-1; //Nombre de colonne
    ?>
    <form action="enregistrement.php">
    <table border="2" align="center">
        <tr>
            <th>ID</th>
            <?php
                for($i=0; $i<=$nb; $i++)
    			{
                    echo '<td><input type="text" name="id"/></td>';
                }
            ?>
        </tr>
        <tr>
            <th>NOM</th>
            <?php
                for($i=0; $i<=$nb; $i++)
    			{
                    echo '<td><input type="text" name="nom"/></td>';
                }
            ?>
        </tr>
        <tr>
            <th>PRENOM</th>
            <?php
                for($i=0; $i<=$nb; $i++)
    			{
                    echo '<td><input type="text" name="prenom"/></td>';
                }
            ?>
        </tr>
        <tr>
            <th>AGE</th>
            <?php
                for($i=0; $i<=$nb; $i++)
    			{
                    echo '<td><input type="text" name="age"/></td>';
                }
            ?>
        </tr>
    </table>
    <input type="submit" value="envoyer !" />
    </form>

  2. #2
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Bonjour,

    C'est normal, tu n'effectue qu'une insertion qu'il y ai 1 ou 5 colonnes.

    Pour que cela marche comme tu souhaite il y a deux choses à faire :
    Modifier le nom de tes champs, il ne peuvent pas tous avoir le même nom sinon il s'efface les uns les autres. Par exemple :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
                for($i=0; $i<=$nb; $i++)
    			{
                    echo '<td><input type="text" name="id' . $i . '"/></td>';
                }
            ?>

    Il faut également que tu boucle ta requête sql suivant le nombre de colonnes que tu as.

    De plus concernant les méthode mysql je t'invite à lire cette page : http://fr2.php.net/manual/fr/intro.mysql.php.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2013
    Messages : 39
    Par défaut
    @humitake
    Salut l'ami, j'ai éssayé ta proposition, voici le résultat affiché :

    Notice: Undefined index: id in C:\Program Files\EasyPHP-12.1\www\devlop\enregistrement.php on line 7

    Notice: Undefined index: nom in C:\Program Files\EasyPHP-12.1\www\devlop\enregistrement.php on line 8

    Notice: Undefined index: prenom in C:\Program Files\EasyPHP-12.1\www\devlop\enregistrement.php on line 9

    Notice: Undefined index: age in C:\Program Files\EasyPHP-12.1\www\devlop\enregistrement.php on line 10
    Que dois-je faire?

  4. #4
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Bonjour,

    Tu as changé le nom de tes champs dans le formulaire, il faut également que tu le change dans la récupération des paramètres

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for($i = 0; $i < $nb; $i++){
    	$id = mysql_real_escape_string (htmlentities ($_POST['id' . $i]));
    	$nom = mysql_real_escape_string (htmlentities ($_POST['nom' . $i]));
    	$prenom = mysql_real_escape_string (htmlentities ($_POST['prenom' . $i]));
    	$age = mysql_real_escape_string (htmlentities ($_POST['age' . $i]));
    	[...]

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2013
    Messages : 39
    Par défaut
    salut cher ami le meme message d'erreur s'affiche toujours.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Désolé d'embêter tout le monde avec ça mais utilise PDO

    Parce que ça c'est trop dangereux (essaye d'entrer un ' ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query ("INSERT INTO troncon VALUES ('$id', '$nom', '$prenom', '$age')");
    Prend le réflexe direct sinon tu le feras jamais

  7. #7
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    On ne doit pas utiliser htmlentities() pour échapper des valeurs à destination d'une base de données. Cette fonction est uniquement prévue pour l'échappement des valeurs destinées à l'affichage. mysql_real_escape_string() est prévu et amplement suffisant pour la base de données.

Discussions similaires

  1. supprimer des donnees dans une base de données via des checkbox dans un tableau
    Par nourchéne dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 03/04/2013, 18h01
  2. [MySQL] Envoi d'information dans une base de donnée via formulaire
    Par Mysti¢ dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 30/03/2006, 20h35
  3. Réponses: 3
    Dernier message: 29/03/2006, 14h23
  4. Acces à une base de données via ODBC
    Par jyg dans le forum MFC
    Réponses: 4
    Dernier message: 23/03/2005, 14h56

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