Aide pour requete basique

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Aide pour requete basique

Re: Aide pour requete basique

par Jonathan » 06 mai 2011, 18:17

C'est miraculeux, j'ai trouvé !

$Sql = 'select Date$de$début from Les$dates ld, Les$formations$par$dates lfpd, Les$formations lf
          where lfpd.FK_Les$formations = lf.Num
          and lfpd.FK_Les$dates= ld.Num
          and lfpd.FK_Les$formations = "'.$UneFormation.'"
          and lfpd.FK_Les$dates = "'.$UneDate.'"';

avec ça précédemment :
if (isset($_POST['Nom'])){
         $UneFormation = $_GET['formation'];
         $UneDate = $_GET['date'];
}

Re: Aide pour requete basique

par moogli » 06 mai 2011, 18:12

select Date$de$début from Les$dates where id=$_GET['date']


@+

Re: Aide pour requete basique

par Jonathan » 06 mai 2011, 17:56

$Sql = 'select Date$de$début from Les$dates ld, Les$formations$par$dates lfpd, Les$formations lf
          where lfpd.Les$formations = lf.Num
          and lfpd.FK_Les$dates= ld.Num
          and...';
A vrai dire j'ai essayé un peu tout et n'importe quoi à la place des "...", mais c'est perdu d'avance, c'est bien mieux de faire quelque chose quand on sait où on va, plutôt que de faire des tentatives au pif...
Je précise, si ce n'est pas évident, que je suis tout nouveau dans le monde du PHP :?

Re: Aide pour requete basique

par moogli » 06 mai 2011, 17:44

il faut utiliser une requête sql SELECT avec la condition where pour sélectionner cette date. Le tout sur la table des dates.

qu'a tu essayé ?

Re: Aide pour requete basique

par Jonathan » 06 mai 2011, 17:30

Désolé de revenir à la charge, je viens de me rendre compte qu'une date s'affiche, mais que ça n'est pas la bonne... :cry:

Je voudrais que la date qui s'affiche soit celle de la formation qui y correspond. Par exemple, quand on va sur la formation qui se trouve à cette adresse : "http://www.monsite.com/mapage?formation=5&date=14",
je veux que la date soit la date dont l'id est 14, et pas une autre... Quelqu'un saurait-il m'aider ?

Re: Aide pour requete basique

par Jonathan » 06 mai 2011, 16:44

En effet j'ai compris mon erreur en 5 secondes. Merci à tous !

Re: Aide pour requete basique

par moogli » 06 mai 2011, 16:38

il s'agit d'un problème de concaténation

je te conseil de lire les tutos de bases ça ira plus vite ;)


@+

Re: Aide pour requete basique

par Jonathan » 06 mai 2011, 16:30

Super, tu avais raison. Encore une question, avec le code suivant :
		if(isset($_GET['date'])){
 $Sql = 'select Date$de$début from Les$dates ld, Les$formations$par$dates lfpd, Les$formations lf
            where lfpd.Les$formations = lf.Num
            and lfpd.FK_Les$dates= ld.Num';
 $Req = mysql_query($Sql) or die('Erreur SQL...<br>'.$Sql.'<br>'.mysql_error());
 $Row = mysql_fetch_array($Req);
 $date = $Row['Date$de$début'];
            echo 'la formation aura lieu le $date';
 }
J'obtiens :
"la formation aura lieu le $date"


Alors que j'aimerais évidemment obtenir une date à la place de $date...



EDIT : Merci pour l'astuce, je ne connaissais pas

Re: Aide pour requete basique

par Mazarini » 06 mai 2011, 16:18

Bonjour,

$Sql dans un cas et $sql dans un autre. c'est une cause possible.

Edit : ajoutes error_reporting(E_ALL); en début de script pour avoir un message d'erreur en cas de faute de frappe sur un nom de variable.

Re: Aide pour requete basique

par Jonathan » 06 mai 2011, 15:23

En effet, merci moogli !
Par contre j'ai un nouveau problème : Quand je teste, j'obtiens un message d'erreur : "Query was empty". Une idée ?

Re: Aide pour requete basique

par moogli » 06 mai 2011, 11:53

Tu a oublié le ; a la fin de la declaration de $Sql

Quand tu lis le message d'erreur tu trouve le numéro de ligne qui pose probleme le 3/4 du temps tu regarde la ligne du dessus et tu Trouve le probleme ;)


@+

Re: Aide pour requete basique

par Mazarini » 06 mai 2011, 11:52

Bonjour,

Il manque un ; en fin de ligne de $sql =...
De plus, il faut mettre les instruction sur 1 ligne.

J'ai un doute, car tu ne précise pas de critère dans ton select. Tu lis donc toute la table.

Re: Aide pour requete basique

par Jonathan » 06 mai 2011, 11:38

Bonjour,


J'ai fait ma jointure, mais je rencontre désormais un nouveau problème. Quelqu'un pourrait me dire pourquoi le code suivant ne fonctionne pas ??! (Parse error: syntax error, unexpected T_VARIABLE...)
if(isset($_GET['date'])){
$Sql = 'select date$de$debut from les$formations$par$dates lfpd, les$dates ld, les$formations lf
		where lfpd.FK_Les$formations = lf.Num
		and lfpd.FK_Les$dates = ld.Num'
$Req = mysql_query($sql) or die('Erreur SQL !<br>'.$Sql.'<br>'.mysql_error());
$Row = mysql_fetch_array($Req);
$date = $Row['date$de$debut'];
}

Re: Aide pour requete basique

par Ryle » 05 mai 2011, 22:33

En fait, ta requête doit interroger les trois tables en spécifiant comment les enregistrements sont reliés d'une table à l'autre :
SELECT ... 
   FROM table1, table2, table3
   WHERE table1.champA = table2.champZ
      AND table2.champY = table3.champQuiVaBien
La question est de savoir quelles sont les colonnes qui doivent correspondre entre tes tables...

A vu de nez, je dirais que les$formations$par$date.FK_les$formations doit faire référence à les$formations.num, et de la même manière les$formations$par$date.FK_les$dates doit référencer les$dates.num...

Et par contre, je rejoint misterflo et Mazarini et te recommande fortement de passer un peu de temps à renommer tes tables et des champs (et à modifier ton code pour qu'il corresponde) ... c'est une après midi de perdu, mais c'est un confort non négligeable que tu peux y gagner (de même que tout ceux qui auront la joie de reprendre ce code après toi ;))

Re: Aide pour requete basique

par Jonathan » 05 mai 2011, 12:23

Help !