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

Requêtes MySQL Discussion :

Récupérer un champ


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Points : 44
    Points
    44
    Par défaut Récupérer un champ
    bonjour,

    je suis entrain de faire un site et je suis bloqué quand je crée une team , je vous explique

    j'ai 2 table dans ma base de donnée , table users et table team

    users

    id mediumint(8) UNSIGNED AUTO_INCREMEN PRIMARY KEY
    id_team smallint(5) UNSIGNED NULL
    nom varchar(30)
    prenom varchar(16)
    pseudo varchar(30)
    passe varchar(40)
    pseudops4(30)
    email varchar(90)

    team

    id_team smallint(5) AUTO_INCREMEN PRIMARY KEY
    nom_team varchar(30)


    clé etrangère

    id_team oraxy.team.id_team ON DELETE SET NULL ON UPDATE SET NULL

    et voici mon script php

    Code php : 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
    <?php
     
    $bdd = connect();
     
    //début du traitement du formulaire
     
    if(!isset($_POST['team']) OR empty($_POST['team'])){
        echo 'le champs team n est pas definit';
    }
    else {
        //récup dans des var locales : on utilise que ces variables ensuite.
        $team = $_POST['team'];
     
        if(strlen($team) < 5){
            echo '<p>Le nom de la team est trop court, minimum 5 caractères.</p>';
                }else{
                        // Vérification de la team
                        $req = $bdd->prepare("SELECT id_team FROM team WHERE nom_team= :team LIMIT 1");
                        $req->bindParam(':team', $team, PDO::PARAM_STR);
                        $req->execute();
     
                        $rep = $req->fetch();
     
                        if(isset($rep['id_team'])){
                            echo "<p>La team est déjà dans la base de donnée</p>";
                        }
                        else {
     
                            //on insert
                            $req = $bdd->prepare("INSERT INTO team (nom_team)
                            VALUE (:team)");
                            $req->bindParam(':team', $team, PDO::PARAM_STR);
                            $req->execute();
                        }
                    }
                }
                ?>

    tout ce passe bien il enregistre bien dans la table team mais le champs id_team (table users) est toujours a NULL ce que je veux que l id_team (table team) qui vient de se créer s'ajoute dans l'id_team (table users) mais la je ne sais pas comment faire

    Merci d avance de passer du temps sur mon sujet

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    il va falloir passer par un update.

  3. #3
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Points : 44
    Points
    44
    Par défaut
    il n y pas moyen de le faire directement ???? parce que avec un update ca risque d etre long non ?? je ne vois pas comment faire l update

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Ca n'a pas de sens de faire ce genre d'opération automatique.

    Pour une suppression de ligne dans une table mère ok mais pas au niveau d'un insert.


    Pour les update c'est par ici : http://sqlpro.developpez.com/cours/sqlaz/dml/#LIV

    Le seul moyen "d'automatiser" c'est de passer par un trigger... qui fera l'update

  5. #5
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Points : 44
    Points
    44
    Par défaut
    voici mon code mais le probleme c est qu'il ne reconnait pas la colonne 'nom_team'...






    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req1 = $bdd->prepare("UPDATE users SET id_team = id_team WHERE nom_team = :team;");
    		$req1->bindParam(':team', $team, PDO::PARAM_STR);
    		$req1->execute();

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Si c'est un problème sql indiquez le code erreur de MySql.

    Si c'est un problème php postez dans le forum concerné.

    Sinon votre requête ne va pas faire grand chose en l'état.

    Vous demandez de mettre à jour la colonne id_team avec la valeur id_team de cette même ligne.

  7. #7
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Points : 44
    Points
    44
    Par défaut
    j ai essayer ceci car je pense que j ai besoin d un SELECT mais ce n est pas bon non plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req1 = $bdd->prepare("UPDATE users SET id_team= ( SELECT id_team FROM team  WHERE  nom_team=:team");

  8. #8
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Points : 44
    Points
    44
    Par défaut
    voici l erreur

    Fatal error: Uncaught exception 'PDOException' avec le message 'SQLSTATE [42000]: Erreur de syntaxe ou violation d'accès: 1 064 Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de'' à la ligne 1 'dans C: \ wamp \ www \ profil.php sur la ligne 162

    ce qui correspond a cette ligne de cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                            $req = $bdd->prepare("INSERT INTO team (nom_team)
                            VALUE (:team)");
                            $req->bindParam(':team', $team, PDO::PARAM_STR);
                            $req->execute();
    						$req1 = $bdd->prepare("UPDATE users SET id_team= ( SELECT id_team FROM team  WHERE  nom_team=:team");
    						$req1->bindParam(':team', $team, PDO::PARAM_STR);
    						$req1->execute();

  9. #9
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Votre objectif est il vraiment de mettre tous les utilisateurs dans la nouvelle équipe dès qu'elle est créée ?
    Ça me semble totalement illogique...

    Pour votre erreur vous n'avez pas fermé la parenthèse de la sous-requête.

  10. #10
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Points : 44
    Points
    44
    Par défaut
    merci d avoir repondu a mon message

    non mon but est que j ai une page de profil par utilisateur sur cette page profil il y a le nom prenom pseudo pseudops4 email et team (qui est a null) l utilisateur a 2 possibilité ou bien il creer une team ou bien il en recherche une ,

    mon script est pour creer une team , des que l utilisateur crée la team il doit etre d office dedans et c est la le probleme je n arrive pas a mettre l utilisateur qui a creer la team dans la team (mon champs id_team (table users)reste a NULL)

  11. #11
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Points : 44
    Points
    44
    Par défaut
    enfaite cette update met tout les champs id_team (table users) dans la meme team !!

    bon le bon point c'est que j ai au moins reussi a savoir faire l update maintenant je dois le faire pour juste un utilisateur

  12. #12
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Points : 44
    Points
    44
    Par défaut
    j'y suis presque mais j ai encore une erreur voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		$req1 = $bdd->prepare("UPDATE users SET id_team= ( SELECT id_team FROM team  WHERE  nom_team=:team) having pseudo=:pseudo");
    			$req1->bindParam(':team', $team, PDO::PARAM_STR);
    			$req1->bindParam(":pseudo", $_SESSION['Auth']['login'], PDO::PARAM_STR);
    			$req1->execute();
    merci pour vos réponses

  13. #13
    Membre du Club
    Homme Profil pro
    informatique de gestion
    Inscrit en
    Janvier 2013
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : informatique de gestion

    Informations forums :
    Inscription : Janvier 2013
    Messages : 94
    Points : 44
    Points
    44
    Par défaut
    probleme resolue

    merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req1 = $bdd->prepare("UPDATE users SET id_team= ( SELECT id_team FROM team  WHERE  nom_team=:team) WHERE pseudo=:pseudo");
    						$req1->bindParam(':team', $team, PDO::PARAM_STR);
    						$req1->bindParam(":pseudo", $_SESSION['Auth']['login'], PDO::PARAM_STR);

Discussions similaires

  1. Réponses: 16
    Dernier message: 29/05/2016, 19h45
  2. Réponses: 3
    Dernier message: 03/12/2005, 16h56
  3. récupérer les champs mis à jour
    Par xave dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 06/10/2005, 14h40
  4. Réponses: 5
    Dernier message: 27/05/2005, 17h10
  5. [Servlet] récupérer les champs d'une jsp
    Par phoebe dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 12/05/2004, 16h32

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