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 -
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:

<?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:

5 réponses

Utilisateur anonyme
 
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.
0
typiac Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   1
 
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...
0
Utilisateur anonyme
 
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...
0
typiac Messages postés 92 Date d'inscription   Statut Membre Dernière intervention   1
 
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!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
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é.
0