PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 20-08-2010 09:49:42

riwalenn
Membre
Inscription : 20-08-2010
Messages : 6

insertion de données

Bonjour,

voila via le formulaire suivant :

<?php
  include ("connexion.php");
 
  $sqlquery='SELECT * FROM famille_ingredients ORDER BY idFamille_Ingredients';
  $results= mysql_query($sqlquery) or die('Erreur SQL !<br />'.$sqlquery.'<br />'.mysql_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<head>
  <title>Ajouter un ingrédient !</title>
</head>
<body>
  <FORM NAME="a_ing" ACTION="ajout_ingredient_ok.php" METHOD="GET" enctype="multipart/form-data">
    <p class="adm_txtform">Choisir une famille d'ingrédients :</p>
     <SELECT name="famille_ingredients">
      <?php
        while ($row=mysql_fetch_array($results))
        {
      ?>
        <OPTION value="<?php echo $row['idFamille_Ingredients'] ;?>"><?php echo $row['Valeur']; ?></OPTION>
      <?php
        }
      ?>       
    </SELECT>

    <p class="adm_txtform">Ajouter un ingrédient :</p><INPUT TYPE="text" NAME="Produits" SIZE="30" MAXLENGTH="40" ;" class="adm_themboxes"><INPUT TYPE="submit" VALUE="Valider" name="valid" id="ok">
  </form>
</body>
</html>

j'affiche les données d'un champ de la table "famille_ingredients" au-dessus d'un champ texte où je dois insérer un élément de cette famille...

le problème étant que idFamille_Ingredients et Valeur ne se trouve pas dans la même table et je n'arrive pas à faire l'insert...

voici mon code :

<?php
include ("connexion.php");

$sqlquery="INSERT INTO ingredients (Produits, idFamille_Ingredients) VALUES('".$_GET['Produits'].", ".$_GET['idFamille_Ingredients']."');";


$results= mysql_query($sqlquery);
header ("location:ajout_ingredient.php");
?>

La table ingrédients est la table de destination et a la structure suivante :

Champs :
- idIngredients
- Produits (que j'implemante grâce au champ texte input)
- Famille (qui correspond à l'id idFamille_Ingredients)

voilà je ne sais pas comment introduire un id venant d'une autre table dont le champ n'a pas le même nom T_T

cordialement,
Riwalenn

Hors ligne

#2 20-08-2010 10:20:16

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : insertion de données

Pourrais-tu nous donner la structure des tables concernées ?

Dernière modification par xTG (20-08-2010 10:21:18)

Hors ligne

#3 20-08-2010 10:53:06

riwalenn
Membre
Inscription : 20-08-2010
Messages : 6

Re : insertion de données

table famille_ingredients

idFamille_Ingredients (type int(10))(auto_increment)
Valeur (type : text)(null: non)

table ingredients

idIngredients (type int(10))(auto-increment)
Produits (type text) (null:non)
Famille (type int(10)) (null:non)

Famille=idFamille_Ingredients

Hors ligne

#4 20-08-2010 12:11:59

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : insertion de données

C'est ainsi donc :

$sqlquery="INSERT INTO ingredients (Produits, Famille) VALUES('".$_GET['Produits'].", ".$_GET['idFamille_Ingredients']."')";

Le nom de la variable n'opère aucun changement dans la requête, seul son contenu est important.
Donc même si ta variable porte le nom du champ d'une autre table MySQL n'en a rien à faire, et surtout il ne le verra pas, il ne verra que sa valeur.

Hors ligne

#5 20-08-2010 13:46:06

riwalenn
Membre
Inscription : 20-08-2010
Messages : 6

Re : insertion de données

donc si je comprends bien c'est la valeur qui doit être rentrée et non l'id ? si c'est bien ça, ça signifierais que ma table est mal agencée alors sad

Hors ligne

#6 20-08-2010 16:55:22

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : insertion de données

Non, essayes tu comprendras peut être mieux.
Dans le cas présent c'est bien l'idFamille_Ingredients qui sera enregistré.

C'est juste que je t'expliquais ton erreur sur les champs se trouvant avant VALUES, ce sont les champs de la table sur laquelle tu travaille, cela n'a aucun rapport avec la provenance des données que tu vas y mettre.

Hors ligne

#7 20-08-2010 17:18:10

riwalenn
Membre
Inscription : 20-08-2010
Messages : 6

Re : insertion de données

alors ça fonctionne pas ^^'

j'ai donc rajouté un "or die" pour savoir d'où vient l'erreur :

Notice: Undefined index: idFamille_Ingredients in C:\wamp\www\la cuisine de cecile\administration\ajout_ingredient_ok.php on line 4
Erreur SQL !
INSERT INTO ingredients (Produits, Famille) VALUES('Laitue, ')
Column count doesn't match value count at row 1

et donc il ne reconnait pas mon idFamille_Ingredients, ce qui n'est pas con vu qu'il n'est définie que dans la page précédente si je dis pas de connerie par contre il prends bien le champ que j'ai rempli (ici "laitue").

sinon row 1 c'est pas l'id de ma table à la base ? ou il considère dans mon problème que Produits est la première ligne ?

Hors ligne

#8 20-08-2010 17:27:52

riwalenn
Membre
Inscription : 20-08-2010
Messages : 6

Re : insertion de données

Bon alors j'ai déjà un petit progrés je viens d'aperçevoir que les guillemets n'étaient pas bon ^^ :

$sqlquery="INSERT INTO ingredients (Produits, Famille) VALUES('".$_GET['Produits']."', '".$_GET['idFamille_Ingredients']."')";

ça m'insére bien 2 renseignements mais ça me mets 0 à chaque fois pour l'idFamille_Ingrédients.... ce qui signifie qu'il ne GET pas du tout idFamille_Ingredients sur ma page précédente sad

Hors ligne

#9 20-08-2010 17:57:01

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : insertion de données

Ton select ne nomme : famille_ingredients et on idFamille_Ingredients. ^^

Hors ligne

#10 20-08-2010 18:40:13

riwalenn
Membre
Inscription : 20-08-2010
Messages : 6

Re : insertion de données

raaaaa enfin ^^ je te remercie ça va beaucoup mieux là du coup... j'avais pas vu que j'avais pas mis le bon nom tongue

Dernière modification par riwalenn (20-08-2010 18:41:08)

Hors ligne

Pied de page des forums