Problème tables Php-MySQL
Résolu/Fermé
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
-
15 déc. 2008 à 17:11
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009 - 2 janv. 2009 à 16:38
CicinhoRaul Messages postés 221 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 16 janvier 2009 - 2 janv. 2009 à 16:38
A voir également:
- Problème tables Php-MySQL
- Easy php - Télécharger - Divers Web & Internet
- Tables des matières word - Guide
- Mysql community server - Télécharger - Bases de données
- Tables ascii - Guide
- Php natif - Forum PHP
22 réponses
Utilisateur anonyme
15 déc. 2008 à 17:50
15 déc. 2008 à 17:50
bonsoir,
je pense qu'il faut faire :
select * from contact left join entreprise on entreprise.nomsoc = contact.nom where entreprise.nomsoc = contact.nom
--
je pense qu'il faut faire :
select * from contact left join entreprise on entreprise.nomsoc = contact.nom where entreprise.nomsoc = contact.nom
--
Si j'ai bien compris :
Je pense que tu devrais ajouter un champ contact_Id dans la table entreprise
Puis faire
SELECT t.*, c.* FROM contact c, entreprise t WHERE c.Nom LIKE '%toto%' AND t.contact_Id = c.Id
Je pense que tu devrais ajouter un champ contact_Id dans la table entreprise
Puis faire
SELECT t.*, c.* FROM contact c, entreprise t WHERE c.Nom LIKE '%toto%' AND t.contact_Id = c.Id
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
17 déc. 2008 à 09:34
17 déc. 2008 à 09:34
Merci contactcv pour ta reponse.Mais je ne vois pas du tout comment s'y prendre,(désolé d'être nul en BDD).
Je voudrais relier les deux tables afin de me permettre de rechercher un contact.Je comprends le fait de rajouter un contact_id dans la table entreprise mais je ne vois pas comment et ni la syntaxe. :(.
Entreprise : Id,Contact_Id,NomSoc,Siret,AdresseWeb,Telephone,Fax
Contact : Id,Nom,Prénom,Email,Abonné,Telephone.
Encore désolé du derangement et merci.
Je voudrais relier les deux tables afin de me permettre de rechercher un contact.Je comprends le fait de rajouter un contact_id dans la table entreprise mais je ne vois pas comment et ni la syntaxe. :(.
Entreprise : Id,Contact_Id,NomSoc,Siret,AdresseWeb,Telephone,Fax
Contact : Id,Nom,Prénom,Email,Abonné,Telephone.
Encore désolé du derangement et merci.
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
17 déc. 2008 à 11:00
17 déc. 2008 à 11:00
En plus je remarque que je ne peux pas créer deux variables (id et contact_id en utilisant l'auto increment :S:S)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
17 déc. 2008 à 11:15
17 déc. 2008 à 11:15
J'utilise phpMyAdmin pour manipuler les BDD.
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
>
contactcv.com
17 déc. 2008 à 11:47
17 déc. 2008 à 11:47
Oui exactement, il faut afficher toutes les informations et par conséquent relier les deux tables.
Merci encore de tes réponses.
Merci encore de tes réponses.
contactcv.com
>
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
17 déc. 2008 à 12:09
17 déc. 2008 à 12:09
$motcle = $_POST["motcle"];
$sql = "SELECT t.Id, t.NomSoc, t.Siret, t.AdresseWeb, t.Telephone, t.Fax, t.contact_id, c.Nom, c.Prénom, c.Email, c.Abonné, c.Telephone ";
$sql .= "FROM contact c, entreprise t ";
$sql .= "WHERE (c.Nom LIKE '%$motcle%' OR c.Prenom LIKE '%$motcle%') AND t.contact_Id = c.Id";
$handle = mysql_query($sql);
------------------------------------
Détails :
(1)
c.Nom LIKE '%$motcle%' OR c.Prenom LIKE '%$motcle%'
Pour chercher le mot clé dans le champ Nom ou le champ prénom
(2)
t.contact_Id = c.Id fait une jointure avec les deux tables
Mais au préalable il faut créer un nouveau champ contact_id avec phpmyadmin dans la table entreprise
pour faire le lien avec le champ id de la table contact
$sql = "SELECT t.Id, t.NomSoc, t.Siret, t.AdresseWeb, t.Telephone, t.Fax, t.contact_id, c.Nom, c.Prénom, c.Email, c.Abonné, c.Telephone ";
$sql .= "FROM contact c, entreprise t ";
$sql .= "WHERE (c.Nom LIKE '%$motcle%' OR c.Prenom LIKE '%$motcle%') AND t.contact_Id = c.Id";
$handle = mysql_query($sql);
------------------------------------
Détails :
(1)
c.Nom LIKE '%$motcle%' OR c.Prenom LIKE '%$motcle%'
Pour chercher le mot clé dans le champ Nom ou le champ prénom
(2)
t.contact_Id = c.Id fait une jointure avec les deux tables
Mais au préalable il faut créer un nouveau champ contact_id avec phpmyadmin dans la table entreprise
pour faire le lien avec le champ id de la table contact
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
17 déc. 2008 à 12:25
17 déc. 2008 à 12:25
D'accord contactcv mais contact_id doit etre auto incrementé dans ce cas, or il n'est pas possible de mettre deux variables en auto_increment en phpMyAdmin.
J'ai essayé de les déclarer en MediumInt voir meme les différencier mais impossible il me met toujours la meme erreur :
Incorrect table definition; there can be only one auto column and it must be defined as a key
J'ai essayé de les déclarer en MediumInt voir meme les différencier mais impossible il me met toujours la meme erreur :
Incorrect table definition; there can be only one auto column and it must be defined as a key
bonjour,
si votre demande est correctement exprimée la recherche ne doit pas se faire sur un élément auto incrémenté.
vous souhaitez à partir d'un élément d'une table savoir si cet élément existe dans une autre table, alors oubliez cet id auto incrémenté qui n'a rien à voir avec votre demande.
si je n'ai rien compris, excusez moi mais en tout cas il faudrait reformuler votre demande plus claiirement
si votre demande est correctement exprimée la recherche ne doit pas se faire sur un élément auto incrémenté.
vous souhaitez à partir d'un élément d'une table savoir si cet élément existe dans une autre table, alors oubliez cet id auto incrémenté qui n'a rien à voir avec votre demande.
si je n'ai rien compris, excusez moi mais en tout cas il faudrait reformuler votre demande plus claiirement
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
17 déc. 2008 à 14:35
17 déc. 2008 à 14:35
bonjour giheller, je crois que je me suis mal exprimé et j'en suis fortement désolé.
J'ai un formulaire dans lequel : Nom,Prenom,NomSoc,AdresseWeb,TelephoneEntre,Fax,Email,Abonné,Telephone
que j'enregistre dans deux tables qui sont :
Entreprise : Id,NomSoc,Siret,AdresseWeb,Telephone,Fax
Contact : Id,Nom,Prénom,Email,Abonné,Telephone.
Mon problème est :
-Je veux pouvoir chercher un contact et afficher toutes les infos.
Je suis donc obligé de relié les deux tables Entreprise et Contact.
Avec contactcv ,on a vu qu'on pouvait ajouter un champ contact_id (un entier) dans la table Entreprise et que c'est avec ce champ que je pouvais relier les deux tables.
Mais je ne sais pas comment utiliser ce champ "Contact_id" , dois-je l'incrémenter, comment le manipuler ?
J'ai vu que l'on ne pouvait pas ajouter de champ "auto_increment" dans une table donc je ne sais plus quoi faire :S:S
Merci de votre aide à tous et j'espère vous avoir eclairci sur mon problème.
J'ai un formulaire dans lequel : Nom,Prenom,NomSoc,AdresseWeb,TelephoneEntre,Fax,Email,Abonné,Telephone
que j'enregistre dans deux tables qui sont :
Entreprise : Id,NomSoc,Siret,AdresseWeb,Telephone,Fax
Contact : Id,Nom,Prénom,Email,Abonné,Telephone.
Mon problème est :
-Je veux pouvoir chercher un contact et afficher toutes les infos.
Je suis donc obligé de relié les deux tables Entreprise et Contact.
Avec contactcv ,on a vu qu'on pouvait ajouter un champ contact_id (un entier) dans la table Entreprise et que c'est avec ce champ que je pouvais relier les deux tables.
Mais je ne sais pas comment utiliser ce champ "Contact_id" , dois-je l'incrémenter, comment le manipuler ?
J'ai vu que l'on ne pouvait pas ajouter de champ "auto_increment" dans une table donc je ne sais plus quoi faire :S:S
Merci de votre aide à tous et j'espère vous avoir eclairci sur mon problème.
re Bonjour,
si la table entreprise contient des informations sur la société, avec entre un contact (nom ou id), il faut que la table qui contient les contacts contienne ce nom ou ce numéro.
ainsi
table entreprise
nom
adresse
etc
contact_id
table contact
id
nom
autres infos
vous ne pourrez lier ces deux tables que si le contact_id de la table entreprise (qui n'est pas auto-incrémenté)
contient le contact_id dela table contact (qui lui peut être auto-incrémenté)
ce contact_id doit être créé lors le la création de la ligne entreprise. soit id.contact = contact_id.entreprise
si la table entreprise contient des informations sur la société, avec entre un contact (nom ou id), il faut que la table qui contient les contacts contienne ce nom ou ce numéro.
ainsi
table entreprise
nom
adresse
etc
contact_id
table contact
id
nom
autres infos
vous ne pourrez lier ces deux tables que si le contact_id de la table entreprise (qui n'est pas auto-incrémenté)
contient le contact_id dela table contact (qui lui peut être auto-incrémenté)
ce contact_id doit être créé lors le la création de la ligne entreprise. soit id.contact = contact_id.entreprise
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
17 déc. 2008 à 16:17
17 déc. 2008 à 16:17
C'est le # que tu as mis devant le id_entreprise qui va faire changer la valeur ?
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
17 déc. 2008 à 16:18
17 déc. 2008 à 16:18
De plus, il y aura des contacts qui appartiendront à la même entreprise. :S Il n'y aura rien a changer ?
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
17 déc. 2008 à 16:42
17 déc. 2008 à 16:42
Oui tout à fait plusieurs contacts peuvent appartenir à la même entreprise.
Je comprenais pas le "#id" mais maintenant c ok ! Je vais tester !!!
Par contre je pense avoir une troisieme table nommé groupe qu'il me faudra relier a la table contact de la meme facon, il faudra donc créer un "#id" a nouveau ?
Merci encore pour ta disponibilité.
Je comprenais pas le "#id" mais maintenant c ok ! Je vais tester !!!
Par contre je pense avoir une troisieme table nommé groupe qu'il me faudra relier a la table contact de la meme facon, il faudra donc créer un "#id" a nouveau ?
Merci encore pour ta disponibilité.
Plusieurs propositions :
Solution (1)
Étape 1 : enregistrement des informations de l'entreprise. Id dans la table entreprise doit etre auto-increment.
Étape 2 : recuperation de la valeur de l'id de la table entreprise juste apres insertion avec la commande :
$id_entreprise = mysql_insert_id ( $link_identifier );
Étape 1 : Insertion des informations dans la table contact
voir la doc ici sur mysql_insert_id : https://www.php.net/manual/fr/function.mysql-insert-id.php
Solution (2) : Oublier les auto-increments
Par expérience, il est parfois mieux d'incrémenter soit-meme une variable puis l'utiliser comme valeur de clé primaire ou autre. En cherchant par exemple le maximum de ta clé primaire puis en incrémentant celle-ci.
.... SELECT MAX(id) FROM entrepise ....
Solution (3)
Si ton champ siret est unique, utilise le comme clé étrangère dans la table contact. Et fait une jointures avec ce champ. ... WHERE contact.siret = entreprise.siret ...
Solution (1)
Étape 1 : enregistrement des informations de l'entreprise. Id dans la table entreprise doit etre auto-increment.
Étape 2 : recuperation de la valeur de l'id de la table entreprise juste apres insertion avec la commande :
$id_entreprise = mysql_insert_id ( $link_identifier );
Étape 1 : Insertion des informations dans la table contact
voir la doc ici sur mysql_insert_id : https://www.php.net/manual/fr/function.mysql-insert-id.php
Solution (2) : Oublier les auto-increments
Par expérience, il est parfois mieux d'incrémenter soit-meme une variable puis l'utiliser comme valeur de clé primaire ou autre. En cherchant par exemple le maximum de ta clé primaire puis en incrémentant celle-ci.
.... SELECT MAX(id) FROM entrepise ....
Solution (3)
Si ton champ siret est unique, utilise le comme clé étrangère dans la table contact. Et fait une jointures avec ce champ. ... WHERE contact.siret = entreprise.siret ...
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
17 déc. 2008 à 18:59
17 déc. 2008 à 18:59
Oui c exactement cela, un contact peut appartenir a plusieurs groupes et un groupe peut avoir plusieurs contacts.
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
30 déc. 2008 à 10:55
30 déc. 2008 à 10:55
J'ai un blocage de nouveau avec les deux tables, rien ne s'affiche lorsque je recherche un contact.Et de plus j'ai un problème sur la manipulation du "#id_entreprise" je ne sais pas comment gérer ce paramètre de la table contact.
J'ai beau ajouter plusieurs contact, le "#id_entreprise" ne change pas.(je l'ai peut etre mal paramétré)
Si vous pouviez m'aider svp merci d'avance.
J'ai beau ajouter plusieurs contact, le "#id_entreprise" ne change pas.(je l'ai peut etre mal paramétré)
Si vous pouviez m'aider svp merci d'avance.
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
30 déc. 2008 à 11:36
30 déc. 2008 à 11:36
Slt sornico, encore une fois...MERCI pour ta reponse.
Désolé d'être aussi nul à ce point.:S:S
Si j'ai bien compris, lorsque l'on remplit le formulaire,c'est-à-dire :
Nom=dupond
Prénom=jean
Email=efed@erfgr.fr
Abonné=
Telephone=45546468468
NomSoc=france telecom
Siret=5464641146414
AdresseWeb=francetelecom.fr
Telephone =0231558574
Fax=0231558574
ALors, #id_entreprise de (Contact) va être egal automatiquement à id_entreprise(Entreprise)
J'ai compri le but du #id_entreprise, mais je crois l'avoir mal paramétré !
Dans ma table contact, j'ajoute le champ #id_entreprise, int. Je ne l'ai pas mis en clé primaire.Donc je ne sais pas.
Voila, en te remerciant jamais assez de ton aide
Je te remercie infiniment de ton aide
Désolé d'être aussi nul à ce point.:S:S
Si j'ai bien compris, lorsque l'on remplit le formulaire,c'est-à-dire :
Nom=dupond
Prénom=jean
Email=efed@erfgr.fr
Abonné=
Telephone=45546468468
NomSoc=france telecom
Siret=5464641146414
AdresseWeb=francetelecom.fr
Telephone =0231558574
Fax=0231558574
ALors, #id_entreprise de (Contact) va être egal automatiquement à id_entreprise(Entreprise)
J'ai compri le but du #id_entreprise, mais je crois l'avoir mal paramétré !
Dans ma table contact, j'ajoute le champ #id_entreprise, int. Je ne l'ai pas mis en clé primaire.Donc je ne sais pas.
Voila, en te remerciant jamais assez de ton aide
Je te remercie infiniment de ton aide
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
30 déc. 2008 à 12:29
30 déc. 2008 à 12:29
Ok SUPER !!! Comme un c.. j'ai cru qu'il fallait créer un #id_entreprise.
Donc j'ai crée cette variable dans la table contact.
Maintenant, j'essaie d'affecter à la id_entreprise(Contact) la valeur id_entreprise dès que l'on remplit le formulaire
Nom=dupond
Prénom=jean
Email=efed@erfgr.fr
Abonné=
Telephone=45546468468
NomSoc=france telecom
Siret=5464641146414
AdresseWeb=francetelecom.fr
Telephone =0231558574
Fax=0231558574
$nomsoc = $_POST['nomsoc'];
$test_ent = mysql_query("SELECT NomSoc FROM entreprise WHERE NomSoc='" .$nomsoc. "'");
$resultat = mysql_result($v1);
/*test si l'entreprise existe deja */
if($result)
{
$save_entreprise = "INSERT INTO entreprise(NomSoc,Siret,AdresseWeb,Telephone,Fax) VALUES('$nomsoc','$siret','$adresseweb','$telephone','$fax')";
$entreprise =mysql_query($save_entreprise);
$save_contact = "INSERT INTO contact(nom,prenom,email,abonne,telephone,id_entreprise) VALUES('$nom','$prenom','$email','$abonne','$telephone',mysql_query("SELECT id_entreprise FROM entreprise"))";
$contact =mysql_query($save_contact);
}
else /* Sinon on ne sauvegarde que le contact */
{
$save_contact = "INSERT INTO contact(nom,prenom,email,abonne,telephone,id_entreprise) VALUES('$nom','$prenom','$email','$abonne','$telephone',mysql_query("SELECT id_entreprise FROM entreprise"))";
$contact =mysql_query($save_contact);
}
Malheureusement le id_entreprise de la table contact ne change pas et reste à zero.
Voila si tu ne peux pas m'aider ce n'est pas grave je crois que je t'ai trop déranger et j'en suis désolé.
Merci quand même.
Donc j'ai crée cette variable dans la table contact.
Maintenant, j'essaie d'affecter à la id_entreprise(Contact) la valeur id_entreprise dès que l'on remplit le formulaire
Nom=dupond
Prénom=jean
Email=efed@erfgr.fr
Abonné=
Telephone=45546468468
NomSoc=france telecom
Siret=5464641146414
AdresseWeb=francetelecom.fr
Telephone =0231558574
Fax=0231558574
$nomsoc = $_POST['nomsoc'];
$test_ent = mysql_query("SELECT NomSoc FROM entreprise WHERE NomSoc='" .$nomsoc. "'");
$resultat = mysql_result($v1);
/*test si l'entreprise existe deja */
if($result)
{
$save_entreprise = "INSERT INTO entreprise(NomSoc,Siret,AdresseWeb,Telephone,Fax) VALUES('$nomsoc','$siret','$adresseweb','$telephone','$fax')";
$entreprise =mysql_query($save_entreprise);
$save_contact = "INSERT INTO contact(nom,prenom,email,abonne,telephone,id_entreprise) VALUES('$nom','$prenom','$email','$abonne','$telephone',mysql_query("SELECT id_entreprise FROM entreprise"))";
$contact =mysql_query($save_contact);
}
else /* Sinon on ne sauvegarde que le contact */
{
$save_contact = "INSERT INTO contact(nom,prenom,email,abonne,telephone,id_entreprise) VALUES('$nom','$prenom','$email','$abonne','$telephone',mysql_query("SELECT id_entreprise FROM entreprise"))";
$contact =mysql_query($save_contact);
}
Malheureusement le id_entreprise de la table contact ne change pas et reste à zero.
Voila si tu ne peux pas m'aider ce n'est pas grave je crois que je t'ai trop déranger et j'en suis désolé.
Merci quand même.
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
30 déc. 2008 à 17:18
30 déc. 2008 à 17:18
Slt sornico, j'ai analysé le code que tu as posté, mais j'ai cette erreur (j'ai vidé mes tables)
$test_ent = mysql_query("SELECT NomSoc FROM entreprise WHERE NomSoc='$nomsoc'");
$resultat = mysql_result($test_ent);
Lorsque tu entres la première entreprise,il va forcément dans le "else".
Ce que je ne comprends pas c'est lorsque tu écris :
$save_entreprise = "INSERT INTO entreprise(Id,NomSoc,Siret,AdresseWeb,Telephone,Fax) VALUES('','$nomsoc','$siret','$adresseweb','$telephone','$fax')"; car en mettant '' à ID , lorsque tu consulte la table,il le met à 0
Merci pour ton aide si precieux.
$test_ent = mysql_query("SELECT NomSoc FROM entreprise WHERE NomSoc='$nomsoc'");
$resultat = mysql_result($test_ent);
Lorsque tu entres la première entreprise,il va forcément dans le "else".
Ce que je ne comprends pas c'est lorsque tu écris :
$save_entreprise = "INSERT INTO entreprise(Id,NomSoc,Siret,AdresseWeb,Telephone,Fax) VALUES('','$nomsoc','$siret','$adresseweb','$telephone','$fax')"; car en mettant '' à ID , lorsque tu consulte la table,il le met à 0
Merci pour ton aide si precieux.
Peux-tu mettre en ligne le code sql de tes 3 tables ?
Voici un équivalent du code de sornico en utilisant : $id_entreprise = mysql_insert_id();
<?php
//
// Application d'un fitre minimal sur les données
$nomsoc = trim($_POST['nomsoc']); // Supprime tous espaces blancs au début et à la fin
$nomsoc = addslashes( strtolower($nomsoc) ); // Tout en minuscule
//
// (1) Je cherche si l'entreprise existe, si oui je récupère son Id, Sinon j'insère une nouvelle entreprise et je récupère son Id
$req1 = mysql_query("SELECT id FROM entreprise WHERE LOWER(NomSoc) = '$nomsoc' ");
if (mysql_num_rows($req1) > 0) {
$row = mysql_fetch_array($req1);
$id_entreprise = $row['id'];
} else {
$sql2 = "INSERT INTO entreprise(NomSoc,Siret,AdresseWeb,Telephone,Fax) VALUES ('$nomsoc','$siret','$adresseweb','$telephone','$fax')";
$req2 = mysql_query($sql2);
$id_entreprise = mysql_insert_id();
}
//
// (2) Enfin j'insère le contact
$sql = "INSERT INTO contact (nom, prenom, email, abonne, telephone, id_entreprise) VALUES('$nom','$prenom','$email','$abonne','$telephone','$id_entreprise')";
mysql_query($sql);
?>
Voici un équivalent du code de sornico en utilisant : $id_entreprise = mysql_insert_id();
<?php
//
// Application d'un fitre minimal sur les données
$nomsoc = trim($_POST['nomsoc']); // Supprime tous espaces blancs au début et à la fin
$nomsoc = addslashes( strtolower($nomsoc) ); // Tout en minuscule
//
// (1) Je cherche si l'entreprise existe, si oui je récupère son Id, Sinon j'insère une nouvelle entreprise et je récupère son Id
$req1 = mysql_query("SELECT id FROM entreprise WHERE LOWER(NomSoc) = '$nomsoc' ");
if (mysql_num_rows($req1) > 0) {
$row = mysql_fetch_array($req1);
$id_entreprise = $row['id'];
} else {
$sql2 = "INSERT INTO entreprise(NomSoc,Siret,AdresseWeb,Telephone,Fax) VALUES ('$nomsoc','$siret','$adresseweb','$telephone','$fax')";
$req2 = mysql_query($sql2);
$id_entreprise = mysql_insert_id();
}
//
// (2) Enfin j'insère le contact
$sql = "INSERT INTO contact (nom, prenom, email, abonne, telephone, id_entreprise) VALUES('$nom','$prenom','$email','$abonne','$telephone','$id_entreprise')";
mysql_query($sql);
?>
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
31 déc. 2008 à 10:43
31 déc. 2008 à 10:43
Je vous remercierai JAMAIS ASSEZ de votre aide, ca marche nickel MERCI encore SORNICO & CONTACTCV !!!!!!!!Vous etes géniaux !
Maintenant je vais aborder la partie recherche d'un contact.
Maintenant je vais aborder la partie recherche d'un contact.
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
31 déc. 2008 à 13:32
31 déc. 2008 à 13:32
Merci sornico.Actuellement j'essaie d'ecrire un code permettant de chercher un champ(nom ou prenom) dans la fameuse table Contact et d'afficher les infos Nom et Prenom (Contact) et NomSoc et Siret de la table Entreprise.
$contact = $_POST['contact'];
$sql = "SELECT t.NomSoc, t.Siret,c.Nom,c.Prénom";
$sql .= "FROM entreprise t,contact c ";
$sql .= "WHERE (c.Nom LIKE '%$contact%' OR c.Prénom LIKE '%$contact%') AND t.id_entreprise= c.id_entreprise";
$handle = mysql_query($sql);
$test = mysql_num_rows($handle);
if($test)
{
echo '<table bgcolor="#FFFFFF">'."\n";
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Entreprise</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Nom</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Prenom</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Siret</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($handle))
{
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row["nomsoc"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["nom"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["prenom"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["siret"].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
A l'affichage, je me retrouve avec une erreur mysql_num_rows, le tableau n'apparait meme pas.DOnc j'essaie de retoucher ce programme mais je ne vois pas la faute.
Merci d'avance
$contact = $_POST['contact'];
$sql = "SELECT t.NomSoc, t.Siret,c.Nom,c.Prénom";
$sql .= "FROM entreprise t,contact c ";
$sql .= "WHERE (c.Nom LIKE '%$contact%' OR c.Prénom LIKE '%$contact%') AND t.id_entreprise= c.id_entreprise";
$handle = mysql_query($sql);
$test = mysql_num_rows($handle);
if($test)
{
echo '<table bgcolor="#FFFFFF">'."\n";
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Entreprise</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Nom</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Prenom</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Siret</u></b></td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($handle))
{
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row["nomsoc"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["nom"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["prenom"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["siret"].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
A l'affichage, je me retrouve avec une erreur mysql_num_rows, le tableau n'apparait meme pas.DOnc j'essaie de retoucher ce programme mais je ne vois pas la faute.
Merci d'avance
<?php
//
// Espace après c.Prenom
// c.Prenom et non c.Prénom
// ... t.id = c.id_entreprise ... et non ... t.id_entreprise = c.id_entreprise ....
// Majuscule comme dans la requete sql
// echo '<td bgcolor="#CCCCCC">'.$row["NomSoc"].'</td>';
// echo '<td bgcolor="#CCCCCC">'.$row["Nom"].'</td>';
// echo '<td bgcolor="#CCCCCC">'.$row["Prenom"].'</td>';
// echo '<td bgcolor="#CCCCCC">'.$row["Siret"].'</td>';
//
$contact = trim($_POST['contact']);
$sql = "SELECT t.NomSoc, t.Siret,c.Nom,c.Prenom ";
$sql .= "FROM entreprise t,contact c ";
$sql .= "WHERE (c.Nom LIKE '%$contact%' OR c.Prenom LIKE '%$contact%') AND t.id = c.id_entreprise";
echo $sql;
$handle = mysql_query($sql) or trigger_error(mysql_error(), E_USER_ERROR);
$test = mysql_num_rows($handle);
//
if($test > 0) {
echo '<table bgcolor="#FFFFFF">'."\n";
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Entreprise</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Nom</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Prenom</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Siret</u></b></td>';
echo '</tr>'."\n";
//
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($handle)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row["NomSoc"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["Nom"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["Prenom"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["Siret"].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
?>
//
// Espace après c.Prenom
// c.Prenom et non c.Prénom
// ... t.id = c.id_entreprise ... et non ... t.id_entreprise = c.id_entreprise ....
// Majuscule comme dans la requete sql
// echo '<td bgcolor="#CCCCCC">'.$row["NomSoc"].'</td>';
// echo '<td bgcolor="#CCCCCC">'.$row["Nom"].'</td>';
// echo '<td bgcolor="#CCCCCC">'.$row["Prenom"].'</td>';
// echo '<td bgcolor="#CCCCCC">'.$row["Siret"].'</td>';
//
$contact = trim($_POST['contact']);
$sql = "SELECT t.NomSoc, t.Siret,c.Nom,c.Prenom ";
$sql .= "FROM entreprise t,contact c ";
$sql .= "WHERE (c.Nom LIKE '%$contact%' OR c.Prenom LIKE '%$contact%') AND t.id = c.id_entreprise";
echo $sql;
$handle = mysql_query($sql) or trigger_error(mysql_error(), E_USER_ERROR);
$test = mysql_num_rows($handle);
//
if($test > 0) {
echo '<table bgcolor="#FFFFFF">'."\n";
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>Entreprise</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Nom</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Prenom</u></b></td>';
echo '<td bgcolor="#669999"><b><u>Siret</u></b></td>';
echo '</tr>'."\n";
//
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($handle)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row["NomSoc"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["Nom"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["Prenom"].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row["Siret"].'</td>';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
}
?>
----
PHP est très tolérant par rapport aux autres languages. Cette tolérance induit beaucoup les développeurs en errreur. Donc il faudra etre rigoureux pendant le développement.
----
Activer l'affichage de toutes les erreurs pendant le développement en mettant au début de chaque fichier PHP la commande suivante : error_reporting(E_ALL | E_STRICT);
En production ne plus afficher les erreurs sur l'écran, donc remplacer cette commande par error_reporting(0);
----
PHP fait une différence entre $_POST['Nom'] et $_POST['nom'], donc deux variables différentes.
----
Beaucoup d'erreurs proviennent des requetes sql, il faudra toujours les traquer en mettant :
- mysql_query($sql) or trigger_error($sql.'<br>'.mysql_error(), E_USER_ERROR);
- ou mysql_query($sql) or die(($sql.'<br>'.mysql_error());
Filtrer les saisies de formulaires avec trim, addslashes ...
Tester si une variable est vide, on ne sais pas ce que l'internaute a saisi :
Exemple : if ( empty($_POST['Nom']) ) echo 'Le nom est vide';
PHP est très tolérant par rapport aux autres languages. Cette tolérance induit beaucoup les développeurs en errreur. Donc il faudra etre rigoureux pendant le développement.
----
Activer l'affichage de toutes les erreurs pendant le développement en mettant au début de chaque fichier PHP la commande suivante : error_reporting(E_ALL | E_STRICT);
En production ne plus afficher les erreurs sur l'écran, donc remplacer cette commande par error_reporting(0);
----
PHP fait une différence entre $_POST['Nom'] et $_POST['nom'], donc deux variables différentes.
----
Beaucoup d'erreurs proviennent des requetes sql, il faudra toujours les traquer en mettant :
- mysql_query($sql) or trigger_error($sql.'<br>'.mysql_error(), E_USER_ERROR);
- ou mysql_query($sql) or die(($sql.'<br>'.mysql_error());
Filtrer les saisies de formulaires avec trim, addslashes ...
Tester si une variable est vide, on ne sais pas ce que l'internaute a saisi :
Exemple : if ( empty($_POST['Nom']) ) echo 'Le nom est vide';
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
31 déc. 2008 à 14:11
31 déc. 2008 à 14:11
J'ai rien dit !!!! Je parlais tout seul ^^. C'est bon normalement j'ai trouvé l'erreur !!!!
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
2 janv. 2009 à 11:40
2 janv. 2009 à 11:40
Tout d'abord je vous souhaite une excellente année(santé,bonheur, reussite) 2009 surtout à vous contactcv et sornico vous avez été plus que des sauveurs.
J'essaie de continuer sur ma lancée de 2008, à savoir etre toujours aussi boulet en php...
Je crois que là j'aborde le point le plus dur : l'insertion.
Mon formulaire permet dajouter, de rechercher un contact(en grande partie grace à vous). Maintenant , j'essaie de le modifier.
Pour cela, l'utilisateur tape un nom ou un prenom, et le but serait qu'il ait le formulaire avec toutes les informations affichées sur la page(nomsoc,siret et tout le reste, afin de pouvoir le modifier,puis de le sauvegarder et donc supprimer la ligne de la BDD)
Ainsi , j'ai deux fichiers : modifcontact.php :
<form action="resultconsult.php" method="post">
<table align ="center">
<tr>
<td bgcolor="FF3333"><b><u>Tapez le nom ou le prenom </u></b></td>
<td><input type="text" name="contact"></td>
<td><input type="submit" name="rechercher" value="Rechercher"></td>
</tr>
et resultconsult.php :
<table align ="center">
<tr>
<td bgcolor="#CCCCCC"><b><u>Nom : </u></b></td>
<td> <input type="text" name="nom" size="25" value = "<?php include("connect.db.php"); et la valeur du nom dans la table contact avec SELECT }?>" > </td>
</tr>
<tr>
<td bgcolor="#CCCCCC"><b><u>Prénom : </u></b></td>
<td><input type="text" name="prenom" size="25" value = "<?php SELECT prenom FROM contact WHERE .. ?>"> </td>
</tr>
</table>
Mais je vois que ce mécanisme ne marche pas, j'ai pensé aux ArrayList, mais je ne vois pas comment faire, si vous avez une méthode plus simple.
Merci encore
J'essaie de continuer sur ma lancée de 2008, à savoir etre toujours aussi boulet en php...
Je crois que là j'aborde le point le plus dur : l'insertion.
Mon formulaire permet dajouter, de rechercher un contact(en grande partie grace à vous). Maintenant , j'essaie de le modifier.
Pour cela, l'utilisateur tape un nom ou un prenom, et le but serait qu'il ait le formulaire avec toutes les informations affichées sur la page(nomsoc,siret et tout le reste, afin de pouvoir le modifier,puis de le sauvegarder et donc supprimer la ligne de la BDD)
Ainsi , j'ai deux fichiers : modifcontact.php :
<form action="resultconsult.php" method="post">
<table align ="center">
<tr>
<td bgcolor="FF3333"><b><u>Tapez le nom ou le prenom </u></b></td>
<td><input type="text" name="contact"></td>
<td><input type="submit" name="rechercher" value="Rechercher"></td>
</tr>
et resultconsult.php :
<table align ="center">
<tr>
<td bgcolor="#CCCCCC"><b><u>Nom : </u></b></td>
<td> <input type="text" name="nom" size="25" value = "<?php include("connect.db.php"); et la valeur du nom dans la table contact avec SELECT }?>" > </td>
</tr>
<tr>
<td bgcolor="#CCCCCC"><b><u>Prénom : </u></b></td>
<td><input type="text" name="prenom" size="25" value = "<?php SELECT prenom FROM contact WHERE .. ?>"> </td>
</tr>
</table>
Mais je vois que ce mécanisme ne marche pas, j'ai pensé aux ArrayList, mais je ne vois pas comment faire, si vous avez une méthode plus simple.
Merci encore
CicinhoRaul
Messages postés
221
Date d'inscription
lundi 18 juin 2007
Statut
Membre
Dernière intervention
16 janvier 2009
7
2 janv. 2009 à 11:57
2 janv. 2009 à 11:57
Oui ajouté à tous les autres parametres (j'ai posté une nouvelle question "Insérer champ MySQL dans formulaire")
15 déc. 2008 à 18:54
Merci d'avance.
16 déc. 2008 à 08:11
left ou right pour doner une priorité d'une table sur l'autre.(plus de détails sur www.nexen.net)
le lien se fait par l'intemédiaire du where.
mais ai-je bien compris le problème ?