8791 sujets

Développement web côté serveur, CMS

Bonjour,
débutante en php et en "forum" je recherche comment récupérer l'id d'une table dans une autre table. Je m'explique :
J'ai deux tables, l'une nommé clients (dans laquelle je trouve id_client, societe, nom, adresse…) et une table realisations dans laquelle on trouve titre_realisation, images, description, id_client)
j'ai un formulaire avec un champ societe.

Lors de l'envoi, je voudrais vérifier si cette société existe dans ma table clients. Si oui, je voudrais récupéré l'id_client dans ma table clients et le copier dans ma table realisation. Si elle n'existe pas je créais un client et j'intègre l'id_client à ma table realisation.

Pour le moment, cela me créé un nouvel id_client à chaque fois même si la société existe déjà !

// Verification de la societe est déjà enregistrée ????
$societe_nouvelle = "SELECT id_client FROM clients WHERE societe='".$societe."'";
$resultat = mysql_query ($societe_nouvelle);
$nombre_societe = mysql_num_rows($resultat);
if($nombre_societe < 1)
{
// La société n'existe pas : Enregistrement de la societe dans la base de donnees clients
// on prépare la requête
$requete_client="INSERT INTO clients (societe) VALUES ('".$_POST['societe']."')";
// on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
mysql_query ($requete_client) or die ('Erreur SQL !'.$requete_client.'<br />'.mysql_error());

// on récupère le dernier numéro inséré, soit le numéro du client
$numero_insere = mysql_insert_id();


// on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die) // ci-dessous on insère les infos dans realisation
$requete="INSERT INTO realisations (titre_realisation, images_realisation, pdf, description_realisation, auteur, date_realisation, id_travaux, id_client) VALUES ('".$_POST['titre_realisation']."', '".$images_realisation."', '".$pdf."', '".$_POST['description_realisation']."', '".$_POST['auteur']."', '".$_POST['date_realisation']."', '".$_POST['travaux']."', '".$numero_insere."')";
// on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
mysql_query ($requete) or die ('Erreur SQL !'.$requete.'<br />'.mysql_error());
}


else // La societe existe
{

(je ne sais pas ce qu'il faut mettre ici)
}

J'espère être claire… Merci pour votre aide
Bonjour,

tu n'as pas besoin de php pour cela mais d'organiser tes tables SQL selon le modèle relationnel. enregistres les tables en format innoDB dans ta base de données. Rajoutes un champ du style "RealNoClient", type INT dans ta table réalisation. ensuite affiches la structrure de ta table "realisation". va dans gestion des relations, à partir du champ que tu viens de créer ("RealNoClient"), tu sélectionnes l´id de ton client de la table des clients dans les champs on update, on delete. Il te reste à adapter ton formulaire en conséquence.
Salut, déjà, je te conseille de revoir la structure de tes tables SQL.

Par exemple, ajoute des attributs "uniques" à certains champs, comme le nom de ton client.

Ensuite, pour pouvoir récupérer le dernier enregistrement ajouté, se baser sur le numéro id le plus important n'est pas la bonne solution. Ajoute un champ date, qui te permet de connaître la date d'ajout de ton enregistrement dans la table. De cette manière, tu pourras toujours avoir la dernière ligne ajoutée.

Enfin, voici l'algo de ce que tu veux faire:

//Vérifier l'existence du client et récupérer l'identifiant (Requête 1)
    //Si existe déjà
        //Récupérer son identifiant à partir de son nom (Requête 2)
    //Si n'existe pas
        //Ajouter un enregistrement à la table client (Requête 2)
        //Récupérer ce dernier identifiant ajouté (utilise la date pour ça, ça t'évitera des erreurs)(Requête 2 bis)

//Lancer la requête d'insertion dans ta table réalisation, en utilisant l'id récupéré (Requête 3)