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 :

Ajout d'un second élément liés à 2 table sql


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Par défaut Ajout d'un second élément liés à 2 table sql
    Bonjour ou Bonsoir , optons plutôt pour le Bonjour...

    Je reviens vers vous pour avoir une piste lors de la création d'un second éléments qui est liés à 2 tables SQL..

    Je m'explique, le premier script 'brouillon & test' va créer un utilisateur dans une table et la ville de sa société dans une autre table. (Script OK çà fonctionne)
    Par contre le second + complexe, a pour but d'ajouter une ville de sa société rattacher à l'utilisateur (et çà ne fonctionne pas je reste planté sur mon echo indiquant qu'il me manque des variable)

    Premier Script :
    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
      <?php
    // on se connecte à notre base
    $base = mysql_connect ('localhost', 'root', 'mdp');
    mysql_select_db ('nom_de_la_base', $base) ;
    ?>
    <html>
    <head>
    <title>Insertion de l'agence Ludo Duc et d'une nouvelle agence dans la base</title>
    </head>
    <body>
    <?php
    // on prépare la requête
    $sql = 'INSERT INTO Agent1 VALUES("", "Ludo Ducat", "MXB519P", "0028750")';
     
    // 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 ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    // on récupère le dernier numéro inséré, soit le numéro de tibo
    $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)
    $sql = 'INSERT INTO NbAgence1 VALUES ("'.$numero_insere.'", "Lille")';
     
    // 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 ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    // on ferme la connexion à la base
    mysql_close();
    ?>
    Ludo Ducat vient d'être inseré dans la base, ainsi que sa nouvelle agence : Lille.
    </body>
    </html>
    Second script :

    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
    <?php
    // on se connecte à notre base
    $base = mysql_connect ('localhost', 'root', 'mdp');
    mysql_select_db ('nom_de_la_base', $base) ;
    ?>
    <html>
    <head>
    <title>Insertion de nouvelles agences dans la base</title>
    </head>
    <body>
    <?php
    // on teste si les variables du formulaire sont bien déclarées
    if (isset($_POST['ag']) && isset($_POST['vi'])) {
     
    	// on prépare la requête pour récupérer le numero du propriétaire
    	$sql = 'SELECT numero FROM Agent1 WHERE agent = "'.$_POST['ag'].'"';
     
    	// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    	// on récupère le résultat sous forme d'un tableau
    	$data = mysql_fetch_array($req);
     
    	// on libère l'espace mémoire alloué pour cette interrogation de la base
    	mysql_free_result ($req);
     
    	// 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)
    	$sql = 'INSERT INTO NbAgence1 VALUES("'.$data['numero'].'", "'.$_POST['vi'].'")';
     
    	// 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 ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    	// on ferme la connexion à la base
    	mysql_close();
     
    	echo 'Nous venons d\'insérer une nouvelle agence : '.$_POST['vi'].' appartenant à '.$_POST['ag'];
    }
    else {
    	echo 'Les variables du formulaire ne sont pas déclarées';
    }
    ?>
    </body>
    </html>
    Mes tables sont :
    Agent1
    agent_id : MediumInt (8)
    agent : Varchar(50)
    cagent : Varchar(10)
    cmvs : Varchar(10)

    et

    NbAgence1
    agent_id : MediumInt(8)
    Ville : Varchar(50)

    Pourriez vous m'aider ?

    Par avance merci de vos réponses, bonne journée.

    Cordialement,

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$sql = 'SELECT numero FROM Agent1 WHERE agent = "'.$_POST['ag'].'"';
    1/ Pas vu de champ "numero" dans ta table "Agent1"...

    2/ On utilisera plus efficacement "agent_id" pour IDENTIFIER un enregistrement, car il est auto-incrémenté, donc UNIQUE.
    Alors que "agent" ne l'est pas forcément.

    3/ autant les commentaires sont looooooooooooooooooongs, autant tes variables sont courtes !
    Utilise des noms des variable plus explicites que 'ag' ou 'vi'...
    Ca t'évitera des soucis et autres confusions...

    4/ On ne met JAMAIS une variable $_POST ou $_GET DIRECTEMENT dans une requête !!
    -> Faille de sécurité : injection SQL !
    Utiliser (ici) : mysql_real_escape_string()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$sql = 'SELECT numero FROM Agent1 WHERE agent = "'. mysql_real_escape_string($_POST['ag']) .'"';
    5/ l'extension mysql_ est OBSOLETE.
    Utiliser mysqli_ ou PDO.

    6/ Le PLUS important AVANT de coder, est la CONCEPTION (savoir ce qu'on fait et où on va)
    Explique-nous un peu plus...
    Là, ça ressemble à des petits exercices, mais sans en comprendre la finalité...

    Voilà,voilà, voilà......................
    Dernière modification par Invité ; 05/03/2015 à 04h25.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/08/2014, 21h47
  2. Réponses: 5
    Dernier message: 02/10/2009, 16h07
  3. Réponses: 26
    Dernier message: 20/06/2006, 14h56
  4. déplacer un élément d'une table
    Par Sph@x dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/02/2004, 12h12
  5. Ajout d'attribut à l'élément "Body"
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 2
    Dernier message: 07/04/2003, 15h52

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