Insérer dans une table le résultat de la commande $line
typiac
Messages postés
92
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je suis en train d'élaborer un petit back office "maison" et je me heurte à un problème avec l'un de mes formulaires:
Après avoir créé des catégories dans une table, je souhaite créer des produits et les rattacher à une catégorie. Pour se faire, j'utilise un formulaire dont chaque <option value=''> me donnera une catégorie.
Alors j'ai fais comme ceci:
1- Je vais chercher mes catégories dans la BDD:
Ensuite, le formulaire:
Impeccable, tout s'affiche bien. Là où ça se complique, c'est pour le script php qui va récupérer la sélection pour l'intégrer dans la base. J'ai fais comme ceci:
Avec cette méthode, je me retrouve avec un beau Notice: Undefined index: ID_categorie
Comment puis-je m'y prendre?
Je suis en train d'élaborer un petit back office "maison" et je me heurte à un problème avec l'un de mes formulaires:
Après avoir créé des catégories dans une table, je souhaite créer des produits et les rattacher à une catégorie. Pour se faire, j'utilise un formulaire dont chaque <option value=''> me donnera une catégorie.
Alors j'ai fais comme ceci:
1- Je vais chercher mes catégories dans la BDD:
<?php //paramètres de connexion à la base de données $user="XXX"; $pass="XXX"; $base="XXX"; $server="XXX"; //connexion au serveur $con=mysql_connect($server, $user, $pass); if(!$con){echo 'echec 1';} //Choix de la base de données sur le serveur $db=mysql_select_db($base,$con); if(!$db){echo 'echec 2';} //Création de la requête SQL $query = "SELECT ID_categorie, categorie FROM categories ORDER BY categorie"; //Exécution de la requête $result = mysql_query($query) or die('Echec ligne : ' . __LINE__ . '<br /> Avec la requete : ' . $query . '<br /> Et la réponse : ' . mysql_error()); ?>
Ensuite, le formulaire:
<select name="ID_categorie" class="select"> <option value="">Choisissez une catégorie...</option> <?php while ($line = mysql_fetch_assoc($result)){ echo '<option value=' . $line['ID_categorie'] . '>' . $line['categorie'] . ',</option>'; } ?></select>
Impeccable, tout s'affiche bien. Là où ça se complique, c'est pour le script php qui va récupérer la sélection pour l'intégrer dans la base. J'ai fais comme ceci:
<?php //connection au serveur $cnx = mysql_connect( "XXX", "XXX", "XXX" ) ; //sélection de la base de données: $db = mysql_select_db( "XXX" ) ; //récupération des valeurs des champs: $ID_categorie = $_POST['ID_categorie']; //création de la requête SQL: $sql = "INSERT INTO product (ID_categorie) VALUES ( '$ID_categorie') " ; //exécution de la requête SQL: $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ; //affichage des résultats, pour savoir si l'insertion a marchée: if($requete) { echo("L'insertion a été correctement effectuée") ; } else { echo("L'insertion à échouée") ; } ?>
Avec cette méthode, je me retrouve avec un beau Notice: Undefined index: ID_categorie
Comment puis-je m'y prendre?
A voir également:
- Insérer dans une table le résultat de la commande $line
- Invite de commande - Guide
- Insérer une vidéo dans powerpoint - Guide
- Table ascii - Guide
- Comment insérer une table des matières dans word - Guide
- Insérer signature word - Guide
5 réponses
Bonsoir
Pourtant, ID_categorie a bien l'air défini dans ton formulaire.
Mais ce formulaire est-il bien défini avec method="POST" ?
Si tu es sûr que oui, fais un print_r($_POST); au début du script qui reçoit e formulaire, pour voir ce qu'il reçoit vraiment.
Pourtant, ID_categorie a bien l'air défini dans ton formulaire.
Mais ce formulaire est-il bien défini avec method="POST" ?
Si tu es sûr que oui, fais un print_r($_POST); au début du script qui reçoit e formulaire, pour voir ce qu'il reçoit vraiment.
Oui, le formulaire est bien définit avec la méthode POST. Je n'ai pas tout mis car il y a une dizaine de champs différents.
Après avoir fait le print_r, mêmes constatations: tout est bien détectés et transmis à la BDD...sauf pour l'ID_categorie...toujours en undefined index...
La question que je me pose, c'est s'il est vraiment possible d'insérer dans une table, ce que révèle le ' . $line['ID_categorie'] . ' via le $POST traditionnel...
Après avoir fait le print_r, mêmes constatations: tout est bien détectés et transmis à la BDD...sauf pour l'ID_categorie...toujours en undefined index...
La question que je me pose, c'est s'il est vraiment possible d'insérer dans une table, ce que révèle le ' . $line['ID_categorie'] . ' via le $POST traditionnel...
Dans le print_r, tu ne vois pas le champ ID_catégorie ? Alors c'est dans ton formulaire qu'il y a un problème. Vérifie le source HTML généré par ton php, tu verras peut-être une anomalie. On ne peut pas voir cette page - ou ne capture d'écran du HTML généré dans cette zone ?
Je ne comprends pas du tout le sens de ta dernière phrase sur la possibilité d'insérer dans une table via le $_POST. Qu'est-ce que tu remets en cause ? Bien sûr qu'on peut insérer dans une table, je ne vois pas ce que le nom de la variable, qu'elle s'appelle $_POST ou $_machin, vient faire là-dedans. D'autant plus que mySQL ne voit que la requête que php lui soumet, et que php a remplacé toutes les variables par leurs valeurs avant d'envoyer la requête à mySQL. MySQL ne sait pas ce que c'est qu'une variable PHP et n'a pas à le savoir, alors $_POST ou autre chose...
Je ne comprends pas du tout le sens de ta dernière phrase sur la possibilité d'insérer dans une table via le $_POST. Qu'est-ce que tu remets en cause ? Bien sûr qu'on peut insérer dans une table, je ne vois pas ce que le nom de la variable, qu'elle s'appelle $_POST ou $_machin, vient faire là-dedans. D'autant plus que mySQL ne voit que la requête que php lui soumet, et que php a remplacé toutes les variables par leurs valeurs avant d'envoyer la requête à mySQL. MySQL ne sait pas ce que c'est qu'une variable PHP et n'a pas à le savoir, alors $_POST ou autre chose...
Oui, c'est bizarre, je le reconnais.
Je ne remets pas en cause la méthode post mais le résultat de ma commande $line en tant que résultat postable ^^
Du coup, comme je suis en retard dans ma prod', j'incrémente la catégorie avec un champ texte classique mais comme d'habitude, je repasserai par là pour livrer une solution!
Je ne remets pas en cause la méthode post mais le résultat de ma commande $line en tant que résultat postable ^^
Du coup, comme je suis en retard dans ma prod', j'incrémente la catégorie avec un champ texte classique mais comme d'habitude, je repasserai par là pour livrer une solution!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je ne te comprends toujours pas :
le résultat de ma commande $line en tant que résultat postable
$line n'est pas une commande, c'est une variable. Pouquoi voudrais-tu qu'elle ait des propriétés différentes de celles des autres variables ? Ça m'échappe complètement.
Pour diagnostiquer, il faudrait pouvoir avoir accès à la page en question, ou au minimum que tu recopies le code HTML généré.
le résultat de ma commande $line en tant que résultat postable
$line n'est pas une commande, c'est une variable. Pouquoi voudrais-tu qu'elle ait des propriétés différentes de celles des autres variables ? Ça m'échappe complètement.
Pour diagnostiquer, il faudrait pouvoir avoir accès à la page en question, ou au minimum que tu recopies le code HTML généré.