Page 1 sur 1

Insertion formulaire et clé étrangère

Posté : 26 août 2013, 13:26
par dimeh57
Bonjour voici mon problème :
Voici le MCD de ma BDD
http://hpics.li/c5ba26a

J'ai un formulaire qui permet d'ajouter des projet cependant il ne prend pas en compte les 3 clès étrangères (nroId,idType,idEtat) : valeurs 0 dans la base de données.
Toutes mes données s'ajoutent sauf ces 3 là !

Voici le code d'insertion :
<?php

// on test si le formulaire a bien été soumis
if(isset($_POST['subProjet']))
{
  $nomProjet=$_POST['nomProjet'];
  $etat=$_POST['etat'];
  $type=$_POST['type'];
  $commentaires=addslashes($_POST['commentaires']);
  $dateDebut=date("d-m-Y");
 
  //connexion à la base de donnée
  include('connexion.php');
  
  //création de la requête SQL:
  $sql =  " INSERT  INTO projet(dateDebut, nomProjet, etatProjet, typeProjet, commentaires)
            VALUES ('$dateDebut','$nomProjet','$etat','$type','$commentaires')";
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  //affichage d'un message de validation de l'ajout
  if($requete)
  {
	header("Location:index.php");
  }
  else
  {
    echo "<script> alert ('Votre ajout a échoué !');</script>" ;
  }
}
?>
Merci de votre aide

Re: Insertion formulaire et clé étrangère

Posté : 26 août 2013, 13:39
par Mazarini
Tu ne mets pas à jour nroId,idType et idEtat
Mais : dateDebut, nomProjet, etatProjet, typeProjet, commentaires

Peut être dois tu ajouter un insert sur une table (idType,typeprojet) ?

Re: Insertion formulaire et clé étrangère

Posté : 26 août 2013, 13:45
par dimeh57
Merci de ta réponse,
En fait il y a deja des valeurs dans les tables etat, type et utilisateur.
Je vois mon erreur en gros il faudrait faire 3 jointures mais je ne voit pas comment ??
Pour les éléments de la table projet c'est bon je les récupère via le formulaire mais pour ces 3 clés étrangère il faudrait les récupérer dans les autres tables!
Une idée?

Re: Insertion formulaire et clé étrangère

Posté : 26 août 2013, 13:54
par moogli
salut,

de plus le modèle n'est pas correct (au vu des noms des colonnes), a priori etatProjet, typeProjet n'ont rien a faire dans la table projet, car proviennent des relation avec les autres tables ;)

ensuite qu'elles sont les valeurs que tu renseigne actuellement dans ces deux colonnes ? (ce ne serait pas les clef primaire des autres tables des fois ?)

ensuite si la requête n'échoue pas c'est que tu as des index zéro dans les autres table ?(étonnant) ou que les FK ne sont pas déclarée comme tel au niveau du sgbd, ou nullable ?

sans le formulaire on ne pas trop savoir ce que tu passe comme valeur, mais j'imagine que l'état et le type sont des liste déroulante ?
si oui c'est la clef primaire des tables qu'il faut passer en value des options (<option value="412">le nom textuelle</option> par exemple, 412 étant la valeur de la clef primaire).

Ton code est ouvert aux injections SQL (CF google ;) ).
pour éviter cela tu peux utiliser mysql_real_escape_string.

Dernière chose, l'extension mysql est voué à disparaître, tu peux t'orienter vers mysqli qui est similaire en mieux ;)

@+

Re: Insertion formulaire et clé étrangère

Posté : 26 août 2013, 13:56
par Mazarini
Je ne comprends pas trop ton problème. Lors de l'insert dans la table Projet , tu renseignes etatProjet, tu dois pouvoir le récupérer.

Par contre, il me semblerai plus logique de stocker idEtat dans la table projet de rechercher etatProjet dans la table correspondante lorsque tu en a besoin.

(Mon proxy m'empêche de voir le MCD.)

Re: Insertion formulaire et clé étrangère

Posté : 26 août 2013, 14:27
par dimeh57
Problème résolu ! Gros fouilli dans la BDD ! Du n'importe quoi et des champs en trop :)
Merci de vos réponses je vais faire de mon mieux