IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

INSERT INTO .. INNER JOIN


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut INSERT INTO .. INNER JOIN
    Bonjour à tous,

    Je débute en php et pas mal de choses sont encore confuses.
    Mon problème: deux tables liées district et country (schema en PJ) qui permettre dans une page admin d'ajouter une province ou un département à un pays
    je sais que je dois faire un INNER JOIN mais je suis complètement perdu.

    Voici mon code php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <?
    	require("inc.connect.php");
    	require("inc.security.php");
     
    	if(isset($_POST['button'])){
     
    		$erreur = "";
     
    		if($_POST['name_district']==""){
    			$erreur .="<p>Veuillez rentrer le titre de la province / département</p>";
    		} else{
    			$name_district = $_POST['name_district'];
    		}
    		$id = $_POST['id'];
     
    		if($erreur == ""){
    			if($_POST['id']==""){
    				$sql="
    				INSERT INTO district
    				(
    				name_district
    				) VALUES (
    				'$name_district'
    				)
    				";
    			} else{
    				$sql="UPDATE district SET
    					  name_district='$name_district'
    					  WHERE name_district=" . $_POST['id'];
    			}
    			$result = mysql_query($sql);
    			if(!$result){
    				$erreur = "Problème SQL : " . "<br />" . $sql . "<br />" . mysql_error();
    			} else{
    				header("location: list_estate.php");
    			}
    		}
    	} else if(isset($_GET['id']) && $_GET['id']!=""){
    		$sql = "SELECT * FROM district
    				WHERE id_district=" . $_GET['id'];
     
    		$result = mysql_query($sql);
    		if($result){
    			while($ligne = mysql_fetch_array($result)){
    				$id=$ligne['id_district'];
    				$name_district=$ligne['name_district'];
    			}
    		}
    	}
    ?>
    Merci d'avance d'éclairer ma lanterne ;-)

    Soksabaidee
    Images attachées Images attachées

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si c'est deux tables, c'est deux INSERT séparés.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut INSERT INTO .. INNER JOIN
    Ok c'est deux tables différentes mais dans l'admin j'ai deux champs:

    1) liste déroulante qui me permet de sélectionner un pays existant (avec un id en auto incrément)

    2) un champ texte qui permet d'insérer un nouveau département mais celui-ci dois récupérer l'id du pays

    Comment puis-je faire.?

    Merci d'avance

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    tu n'as donc que l'insertion du nouveau departement a faire non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut INSERT INTO .. INNER JOIN
    Oui exactement cela ;-) mais dans mysql je dois récupérer l'ID du pays car chaque département est lié à un pays

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    L'id c'est $_POST['id'] non ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut
    oui ;

    voici la structure des deux tables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    -- 
    -- Structure de la table `country`
    -- 
     
    CREATE TABLE `country` (
      `id_country` int(10) unsigned NOT NULL auto_increment,
      `name_country` varchar(100) NOT NULL,
      PRIMARY KEY  (`id_country`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
     
    -- 
    -- Contenu de la table `country`
    -- 
     
    INSERT INTO `country` (`id_country`, `name_country`) VALUES 
    (1, 'Belgique'),
    (2, 'France'),
    (3, 'Allemagne'),
    (4, 'Luxembourg');
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `district`
    -- 
     
    CREATE TABLE `district` (
      `id_district` int(10) unsigned NOT NULL auto_increment,
      `id_country` int(10) NOT NULL,
      `name_district` varchar(100) NOT NULL,
      PRIMARY KEY  (`id_district`),
      KEY `clepaysregion` (`id_country`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
     
    -- 
    -- Contenu de la table `district`
    -- 
     
    INSERT INTO `district` (`id_district`, `id_country`, `name_district`) VALUES 
    (1, 1, 'Bruxelles Capitale'),
    (2, 1, 'Brabant Wallon'),
    (3, 1, 'Namur'),
    (4, 1, 'Luxembourg'),
    (5, 1, 'Liège');

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Et quel est ton soucis maintenant ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut
    Dans ma page admin pour insérer un département, je n'arrive pas à récupérer l'id du pays.

    Je dois faire certainement un INNER JOIN mais j'ai pas mal essayé et là, je me mélange les pinceaux.

    Les tables du message précédent ont été remplies directement dans php my admin.

    P.S: Je suis débutant en PHP

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    je n'arrive pas à récupérer l'id du pays.
    Quelques messages plus haut tu me dis que l'id du pays c'est $_POST['id'] donc qu'est ce qui te manque ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut
    en fait l'ID est celui du département étant donné que je connais celui du pays.
    Le tout est de créer l'ID du département, lui donner un nom (jusque là ça va) mais il faut que je récupère l'ID du pays et là je bloque

    Merci d'avance

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Relis ton message, tu dis la même chose et son contraire.

    L'id du pays c'est $_POST['nom_du_champ_select_du_pays'] que ton utilisateur a choisi dans la liste.
    L'id du district est un autoincrementé dans ta table.
    Le nom du district est $_POST['nom_du_champ_text_du_district'] que ton utilisateur a taper dans la case.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut
    Je me contredis certainement mais je ne sais pas comment faire...

    Oublions le code 2 minutes ;-)

    j'ai un ID existant et un Pays existant.

    Dans la page d'admin pour insérer un département, j'ai la liste déroutante des pays et ensuite j'ai ce champ texte qui permet d'insérer un département.

    A sa création, le département aura un IDauto , jusque là cela va. Mais là où je bloque, c'est pour pouvoir récupérer d'ID du pays.

    J'imagine que c'est un inner join mais je bloque complètement :s

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    L'id du pays c'est $_POST['nom_du_champ_select_du_pays'] que ton utilisateur a choisi dans la liste déroulante.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut
    Je suis entièrement d'accord avec toi Sabotage mais lorsque je vais dans PHP MyAdmin , il me met tout sauf l'ID du pays :s

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Contrôle ce que tu recois du formulaire en affichant
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Citation Envoyé par soksabaidee Voir le message
    Dans ma page admin pour insérer un département, je n'arrive pas à récupérer l'id du pays.
    Pourrait on voir ce code de la page admin ?

    Tu cherches à effectuer une jointure pour récupérer le id_country de la table country pour l'insérer dans la table district c'est ca ? Si c'est le cas, c'est mal parti car c'est uniquement sur ce champs que tu peux faire une jointure

  18. #18
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut
    Voici en PJ la page admin. Si il faut ma base de données ou d'autres docs pas de souci.

    Je joins aussi la page principale de l'admin

    Merci d'avance
    Fichiers attachés Fichiers attachés

  19. #19
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    tu as plein de soucis dans ton code

    Pour commencer, il faut que tu ouvres un bloc php par

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    // --- ton code php
    ?>

    et non par :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?=
    // --- ton code php
    ?>

    Ensuite, si tu veux afficher la valeur d'une variable, il faut que tu ecrives

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo $erreur;
    ?>


    et pas

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    $erreur;
    ?>

    Ensuite et c'est plus grave, ton code est entierement sousmis aux injections SQL car tu ne traites pas tes valeurs $_POST avant de les insérer en base

    PS: 666 ieme message

  20. #20
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Dans ta requête d'insertion de district, tu n'as pas mis le champ country donc forcemment il est vide.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [AC-2007] Problème de jointure dans INSERT INTO avec INNER JOIN
    Par andy331 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 16/03/2010, 15h59
  2. Problème d'insert into avec inner join
    Par guivrator dans le forum Requêtes
    Réponses: 1
    Dernier message: 16/04/2009, 15h43
  3. Réponses: 5
    Dernier message: 19/10/2006, 14h28
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38
  5. Insert Into + Date
    Par BoeufBrocoli dans le forum SQL
    Réponses: 10
    Dernier message: 13/08/2003, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo