Jump to content

MySQL problème de jointure


Osiris

Recommended Posts

J'ai deux tables:parifoot et foot.

Dans parifoot se trouve les colonnes nom,pseudo,mot de passe, numéro de téléphone ,un id en auto_incrémente,deuxième_prénom de l'utilisateur (je l'utilise pour aider l'utilisateur a réinitialiser son mot de passe en cas d'oublis) une date d'inscription.Pour un match donné entre deux équipes(je suppose France vs Croatie) je créé à la suite de ces colonnes une colonne France(pour prendre le pronostique de l'utilisateur pour la France), une colonne Croatie (pour prendre le pronostique de l'utilisateur pour la Croatie) une colonne date_fran_cro pour savoir à quel moment l'utilisateur à pronostiquer pour ces deux équipes qui jouent,en enfin une colonne active_fran_cro pour savoir si l'utilisateur à déjà pronostiquer ou non.la colonne active_fran_cro prend la valeur zéro(0) par défaut(si l'utilisateur n'a pas encore pronostiquer ) et un(1) si il a déjà pronostiquer afin que la même personne 'e pronostique pas deux fois.

À chaque fois qu'il y a un match entre deux équipes je met à la suite des colonnes id,nom,pseudo, deuxième_prénom,téléphone,mot de passe et date d'inscription 4colonnes(colonne de première équipe, colonne de la deuxième équipe, colonne date_du_pronostique, colonne active_équipe1_équipe_2(je le rappel il permet de savoir si l'utilisateur à déjà pronostiquer pour ces deux équipes qui jouent ce match ou nom)Du coût ma table est vraiment long. J'ai décidé de scinder en créant maintenant une nouvelle table nommé foot qui va stocker uniquement les pronostiques de l'utilisateur pour un match donné. Dans le cas du match entre France et Croatie,la table foot comprend les colonnes suivantes : user_id en auto_incrémente, un id(qui est une clé étrangère et fais référence à l'id qui se trouve dans la table parifoot afin d'identifier l'utilisateur qui pronostique, une colonne croatie ,une colonne France (ces deux colonnes prennent les pronostiques de l'utilisateur pour ces deux équipes), une colonne date(la date et l'heure ou l'utilisateur à pronostiquer) et enfin une colonne active_fran_cro pour savoir si l'utilisateur à déjà pronostiquer ou nom.

Voilà mes chefs toute la structure de mes deux tables. Si vous avez pu me comprendre jusqu'ici je vous remercie. Il ne reste plus qu'a poser mon problème.

J'aimerais joindre mes deux tables grâce à la clé étrangère id qui sa trouve dans la table foot et qui fait référence à l'id qui se trouve dans la table parifoot.

Voici mes requêtes.

<code>

 

<?PHP

 

If(isset($_post[croatie]&& isset ($_post[france])){

 

$req = $bdd->prepare("SELECT parifoot.id FROM parifoot WHERE parifoot.id=foot.id AND foot.active_fran_cro ='0' AND parifoot.id=:id ");

 

$req->execute(array(

 

'id'=>$_GET['idi]

 

));

 

$resultat = $req->fetch();

 

if(résultat){

 

$req = $bdd->prepare(" UPDATE foot SET croatie=:croatie, france=:france, date_fran_cro=now(),active_fran_cro='1' WHERE id=:id");

 

$req->execute(array(

 

'croatie' =>$POST['croatie'],

 

france' =>$POST['france'],

 

'id'=>$GET['id']

 

));

?>

</code>

Mon problème est que la jointure ne marche pas ppour que je puisse faire l'insertion des pronostiques de l'utilisateur dans la table foot.

J'espère que vous m'aviez compris.je vous remercie d'avance pour votre contribution Merci

Link to comment
Share on other sites

<?php
if (isset($_POST['croatie']) && isset($_POST['france'])) {
    $req = $bdd->prepare("SELECT parifoot.id FROM parifoot INNER JOIN foot ON (parifoot.id=foot.id) WHERE foot.active_fran_cro ='0' AND parifoot.id=:id ");
    $req->execute(array(
        ':id' => $_GET['id']
    ));
    $resultat = $req->fetch();
    if ($résultat) {
        $req = $bdd->prepare("UPDATE foot SET croatie=:croatie, france=:france, date_fran_cro=now(),active_fran_cro='1' WHERE id=:id");
        $req->execute(array(
            ':croatie' => $POST['croatie'],
            ':france' => $POST['france'],
            ':id' => $GET['id']
        ));
    }
}
?>

There was a few errors in your code, but I've fixed them up for you. I gather this was the top snippet of another bit of code, but my formatting tool doesn't work without closing braces so I apologize for changing it.
 

Things Fixed:

  • You were missing ":" characters at the beginning of your bindings.
  • You needed an INNER JOIN where your first WHERE clause was going.
  • There were missing quotes, but that may have just been the translator
  • résultat requires a $ in php to signify that its a variable
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...