insert into depuis plusieurs tables

bromlecornu
Invité n'ayant pas de compte PHPfrance

25 mai 2007, 11:37

Bonjour,

J'ai créé un formulaire dans lequel j'ai des champs de saisis et des listes déroulantes.

Donc dans ma table ou les données vont etre insérer j'ai créé tous les champs nécessaire et mes listes font références à d'autres tables (ex : liste des techniciens contient le contenu des noms de la table techniciens).

Maintenant j'ai créé ma page qui envoi les données dans la table mais j'ai deux problemes d'abord celui la :

Code : Tout sélectionner

Parse error: parse error in d:\interventions\envoi_interv.php on line 4
Voici le code de la page d'envoi :

Code : Tout sélectionner

<? include ('connexion.inc'); $sql = "INSERT INTO 'interv' ("", date_demande, heure_demande, urgence, prevue, affectation, objet, designation, effectue, remarque, service, collaborateur) VALUES (NULL, '$date_dem', '$heure_dem', '$service', '$collaborateur', '$urgence', '$prevue', '$technicien', '$objet', '$designation', '$remarque')"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?>
et le second c'est de récupérer le bon nom de la personne sélectionné sélectionné dans ma liste pour l'insérer dans le champs de ma table intervention celle qui recoi tte les infos du formulaire.

voici le code de la page de mon formulaire :

Code : Tout sélectionner

<? include "connexion.inc" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <table width="1024" border="0"> <tr> <td align="center"> <table width="800" height="100" border="0"> <tr> <td><img src="images/baniere.jpg" /></td> </tr> </table><br /> <table width="500" border="0" cellpadding="0"> <form action="envoi_interv.php" method="post"> <? $sql = "Select * From services, collaborateur, urgence, technicien, interv Where services.num_service = collaborateur.num_service And interv.num_urg = urgence.num_urg And interv.num_tech = technicien.num_tech And interv.num_col = collaborateur.num_col"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?> <tr> <td width="300" align="left">Date demande : </td> <td width="200"><input name="date_dem" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Heure demande : </td> <td width="200"><input name="heure_dem" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Service : </td> <? $sql = "Select * From services order by nom_service"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?> <td width="200"> <? $ld = "<SELECT NAME='service'>"; $ld .= "<OPTION VALUE=0>Choisir un service</OPTION>"; while ( $row = mysql_fetch_array( $sql_exe)) { $numser = $row["num_service"]; $nomser = $row["nom_service"]; $ld .= "<OPTION VALUE='$numser'>$nomser</OPTION>"; } $ld .= "</SELECT>"; echo $ld ?> </td> </tr> <tr> <td width="300" align="left">Collaborateur : </td> <? $sql = "Select * From collaborateur order by nom_col"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?> <td width="200"> <? $ld = "<SELECT NAME='collaborateur'>"; $ld .= "<OPTION VALUE=0>Choisir un collaborateur</OPTION>"; while ( $row = mysql_fetch_array( $sql_exe)) { $numcol = $row["num_col"]; $prenomcol = $row["prenom_col"]; $nomcol = $row["nom_col"]; $ld .= "<OPTION VALUE='$numcol'>$prenomcol $nomcol</OPTION>"; } $ld .= "</SELECT>"; echo $ld ?> </td> </tr> <tr> <td width="300" align="left">Urgence : </td> <? $sql = "Select * From urgence order by nom_urg"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?> <td width="200"> <? $ld = "<SELECT NAME='urgence'>"; $ld .= "<OPTION VALUE=0>Choisir une priorité</OPTION>"; while ( $row = mysql_fetch_array( $sql_exe)) { $numurg = $row["num_urg"]; $nomurg = $row["nom_urg"]; $ld .= "<OPTION VALUE='$numurg'>$nomurg</OPTION>"; } $ld .= "</SELECT>"; echo $ld ?> </td> </tr> <tr> <td width="300" align="left">Prévue le : </td> <td width="200"><input name="prevue" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Technicien : </td> <? $sql = "Select * From technicien order by nom_tech"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?> <td width="200"> <? $ld = "<SELECT NAME='technicien'>"; $ld .= "<OPTION VALUE=0>Choisir un technicien</OPTION>"; while ( $row = mysql_fetch_array( $sql_exe)) { $numtech = $row["num_tech"]; $prenomtech = $row["prenom_tech"]; $nomtech = $row["nom_tech"]; $ld .= "<OPTION VALUE='$numtech'>$prenomtech $nomtech</OPTION>"; } $ld .= "</SELECT>"; echo $ld ?> </td> </tr> <tr> <td width="300" align="left">Objet : </td> <td width="200"><input name="objet" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Désignation : </td> <td width="200"><textarea name="designation" cols="39" rows="5"></textarea></td> </tr> <tr> <td width="300" align="left">Remarque : </td> <td width="200"><textarea name="remarque" cols="39" rows="5"></textarea></td> </tr> </table><br /> <table width="500" border="0" cellpadding="0"> <tr> <td align="right"><input name="envoi" type="submit" value="Envoyer" /></td> <td align="left"><input name="reset" type="reset" value="Annuler" /></td> </tr> </table> </form> </td> </tr> </table> </body> </html>
merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 mai 2007, 11:41

En ce qui concerne la 1ere erreur, si tu encadres ta requête par des ", il ne faut en utiliser dedans ;)
$sql = "INSERT INTO 'interv' ("", date_demande, heure_demande, urgence, prevue, affectation, objet, designation, effectue, remarque, service, collaborateur) VALUES (NULL, '$date_dem', '$heure_dem', '$service', '$collaborateur', '$urgence', '$prevue', '$technicien', '$objet', '$designation', '$remarque')";
Mais j'ai rien compris à ton second soucis ?
Qu'est-ce qui ne marche pas ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

bromlecornu
Invité n'ayant pas de compte PHPfrance

25 mai 2007, 11:43

Maintenant il me met ca comment fait on deja :

Code : Tout sélectionner

Notice: Undefined variable: date_dem in d:\interventions\envoi_interv.php on line 4 Notice: Undefined variable: heure_dem in d:\interventions\envoi_interv.php on line 4 Notice: Undefined variable: service in d:\interventions\envoi_interv.php on line 4 Notice: Undefined variable: collaborateur in d:\interventions\envoi_interv.php on line 4 Notice: Undefined variable: urgence in d:\interventions\envoi_interv.php on line 4 Notice: Undefined variable: prevue in d:\interventions\envoi_interv.php on line 4 Notice: Undefined variable: technicien in d:\interventions\envoi_interv.php on line 4 Notice: Undefined variable: objet in d:\interventions\envoi_interv.php on line 4 Notice: Undefined variable: designation in d:\interventions\envoi_interv.php on line 4 Notice: Undefined variable: remarque in d:\interventions\envoi_interv.php on line 4 Erreur : Erreur de syntaxe près de ''interv' ('', date_demande, heure_demande, urgence, prevue, affe' à la ligne 1
merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 mai 2007, 11:46

et ???

Dit donc, je veux bien t'aider, mais c'est toi qui debug ...

Code : Tout sélectionner

Notice: Undefined variable: urgence in d:\interventions\envoi_interv.php on line 4
signifie qu'il y a une erreur à la ligne 4 du fichier envoi_interv. Cette erreur est qu'il ne connait pas la variable "urgence".

Il faut donc que tu les récupères avant de les passer à ta requête avec $_POST ou $_GET

De plus, ne met pas de ' autour du nom de la table, c'est inutile et c'est une erreur
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

bromlecornu
Invité n'ayant pas de compte PHPfrance

25 mai 2007, 11:53

Bon désolé c bon ca marche

Mais je ne voi po trop :

Code : Tout sélectionner

Erreur : Erreur de syntaxe près de ''interv' ('', date_demande, heure_demande, urgence, prevue, affe' à la ligne 1
merci de ton aide

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 mai 2007, 12:15

:roll:
De plus, ne met pas de ' autour du nom de la table, c'est inutile et c'est une erreur
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 2144 Messages

25 mai 2007, 13:17

Pour ton deuxième problème, il faut éviter de stocker des informations issues d'autres table tel que les noms de technicien, etc, et plutot stocker les clés primaires des tables (par exemple mémoriser l'id qui correspond au technicien sélectionné dans la liste, et pas son nom)
La raison en est que tu vas entrainer une redondance de donnée dans ta base de donnée, et donc avoir des problèmes de cohérances des données si tu modifies les données d'un technicien.

bromlecornu
Invité n'ayant pas de compte PHPfrance

25 mai 2007, 18:11

une derniere question :

J'envoi les information de mon formulaire dans ma base ca marche

Dans mon formulaire j'ai des listes déroulantes pour les tech, services etc
Dans ces listes je voi bien les nom et prenom de mes tech mais quand ca envoi dans ma base c le numero du tech qui apparait ce n'est pas génant d'apres ce que j'ai compris c mm mieux.

Le problème c'est que quand j'affiche les interventions c aussi le numéro du tech quinapparait hors je souhaiterais que ce soit son prenom.

Comment dois je faire?

Merci

ViPHP
ViPHP | 2144 Messages

25 mai 2007, 21:17

Tu fais une jointure entre ta table intervention et ta table technicien.
Un exemple vite fait:

table intervention
id
date
idTechnicien

table technicien
id
nom
prenom


Pour voir les interventions et leurs technicien, on aurait quelque chose comme ceci:

Code : Tout sélectionner

select intervention.date, technicien.nom, technicien.prenom from intervention, technicien where technicien.id = intervention.idTechnicien
Petite explication:

Dans la première partie on choisit les champs qu'on veut récupéré, en spécifiant dans quelle table se trouve chaque champ.
Dans la clause where on fait une jointure pour récupérer le technicien qui est concerné par une intervention.

Voilà, en espérant avoir été compréhensible :wink:

bromlecornu
Invité n'ayant pas de compte PHPfrance

28 mai 2007, 09:12

Bin mes jointures sont faites vla mon code pour ma page ou je veu afficher les resultats :

Code : Tout sélectionner

<body> <table width="1024" border="0"> <tr> <td align="center"> <table width="800" height="100" border="0"> <tr> <td><img src="images/baniere.jpg" /></td> </tr> </table><br /> <table width="500" border="0" cellpadding="0"> <form action="envoi_interv.php" method="post"> <? $sql = "Select * From services, collaborateur, urgence, technicien, interv Where services.num_service = collaborateur.num_service And interv.num_urg = urgence.num_urg And interv.num_tech = technicien.num_tech And interv.num_col = collaborateur.num_col"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?> <tr> <td width="300" align="left">Date demande : </td> <td width="200"><input name="date_dem" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Heure demande : </td> <td width="200"><input name="heure_dem" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Service : </td> <? $sql = "Select * From services order by nom_service"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?> <td width="200"> <? $ld = "<SELECT NAME='service'>"; $ld .= "<OPTION VALUE=0>Choisir un service</OPTION>"; while ( $row = mysql_fetch_array( $sql_exe)) { $numser = $row["num_service"]; $nomser = $row["nom_service"]; $ld .= "<OPTION VALUE='$numser'>$nomser</OPTION>"; } $ld .= "</SELECT>"; echo $ld ?> </td> </tr> <tr> <td width="300" align="left">Collaborateur : </td> <? $sql = "Select * From collaborateur order by nom_col where"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?> <td width="200"> <? $ld = "<SELECT NAME='collaborateur'>"; $ld .= "<OPTION VALUE=0>Choisir un collaborateur</OPTION>"; while ( $row = mysql_fetch_array( $sql_exe)) { $numcol = $row["num_col"]; $prenomcol = $row["prenom_col"]; $nomcol = $row["nom_col"]; $ld .= "<OPTION VALUE='$numcol'>$prenomcol $nomcol</OPTION>"; } $ld .= "</SELECT>"; echo $ld ?> </td> </tr> <tr> <td width="300" align="left">Urgence : </td> <? $sql = "Select * From urgence order by nom_urg"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?> <td width="200"> <? $ld = "<SELECT NAME='urgence'>"; $ld .= "<OPTION VALUE=0>Choisir une priorité</OPTION>"; while ( $row = mysql_fetch_array( $sql_exe)) { $numurg = $row["num_urg"]; $nomurg = $row["nom_urg"]; $ld .= "<OPTION VALUE='$numurg'>$nomurg</OPTION>"; } $ld .= "</SELECT>"; echo $ld ?> </td> </tr> <tr> <td width="300" align="left">Prévue le : </td> <td width="200"><input name="prevue" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Technicien : </td> <? $sql = "Select * From technicien order by nom_tech"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?> <td width="200"> <? $ld = "<SELECT NAME='technicien'>"; $ld .= "<OPTION VALUE=0>Choisir un technicien</OPTION>"; while ( $row = mysql_fetch_array( $sql_exe)) { $numtech = $row["num_tech"]; $prenomtech = $row["prenom_tech"]; $nomtech = $row["nom_tech"]; $ld .= "<OPTION VALUE='$numtech'>$prenomtech $nomtech</OPTION>"; } $ld .= "</SELECT>"; echo $ld ?> </td> </tr> <tr> <td width="300" align="left">Objet : </td> <td width="200"><input name="objet" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Désignation : </td> <td width="200"><textarea name="designation" cols="39" rows="5"></textarea></td> </tr> <tr> <td width="300" align="left">Remarque : </td> <td width="200"><textarea name="remarque" cols="39" rows="5"></textarea></td> </tr> </table><br /> <table width="500" border="0" cellpadding="0"> <tr> <td align="right"><input name="envoi" type="submit" value="Envoyer" /></td> <td align="left"><input name="reset" type="reset" value="Annuler" /></td> </tr> </table> </form> </td> </tr> </table> </body>
Donc je veux afficher les nom de tech mais ca m'affiche le numéro comment puis je faire afficher le nom alors que dans ma table c'est les numéros des tech qui sont enregistrés.

merci

ViPHP
ViPHP | 2144 Messages

28 mai 2007, 12:31

Je ne comprends pas ton problème.
Dans mon message précédent je t'ai expliqué comment faire le lien entre deux tables, mais je ne vois pas où dans ton script tu affiches les nom et prénom du technicien.
(ps: poste plutôt les parties de code qui posent problème que tout le code et utilise les balises php à la place de Code, ça permet d'avoir la coloration synthaxique qui rend le code plus lisible.