Problème pour récupérer un champs

Petit nouveau ! | 3 Messages

25 févr. 2014, 15:46

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
<?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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 févr. 2014, 19:45

salut,

problème php => je déplace le sujet.

ensuite tu ne fait pas d'insertion dans la table utilisateur avec ce code donc je dirais que le comportement est normal :mrgreen:

les champs id_team ne sont pas les mêmes entre la table utilisateur et la table team (tu as un UNSIGNED en trop ou manquant a toi de voir).
Suivant le succès que tu souhaite a ton appli je ne te limiterais pas un smallint.


la du coup il nous faut le code d'insertion d'un membre pour t'aider (mais il est fort probable que la différence de champs entraine ce comportement même si je pense que tu devrais avoir une erreur plutôt).

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 3 Messages

25 févr. 2014, 20:55

c est vrai que je devrais changer mon champs smallint mais pour la solution de mon probleme j y suis presque mais j ai encore une petite erreur de syntaxe voici le code
						$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();

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 févr. 2014, 21:24

il faut que tu revois ta syntaxe SQL=>http://sqlpro.developpez.com

le having ne s'utilise pas avec un update.


Ajoute simplement une clause where à ton update.

@+
Il en faut peu pour être heureux ......