Selectionner champ&limiter un script a une fois

Eléphanteau du PHP | 45 Messages

19 déc. 2006, 18:43

Hello,

Nouveau problème !

J'ai une table, qui contient 7 champs, chaque champs est le nom d'un jour, Monday,...

J'ai ce code qui affiche le contenu d'un des champs en fonction du jour ou l'on est !
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("schoolgame");
$date = date("l");
$qrySelect = "SELECT $date FROM planing";
$reponse = mysql_query($qrySelect ) or die('ERR_SQL:<br />' . $qrySelect . '<br />' . mysql_error()); 
echo $reponse;
mysql_close(); 

?>
Pour infos les 7 champs sont varchar..

Et au lieu de m'afficher le contenu du champ du jour php me retourne:

Resource id #4

Voila voila

Merci d'av.
Modifié en dernier par dr.smoogy le 20 déc. 2006, 18:41, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 déc. 2006, 18:46

Oui c'est normal, tu ne peux pas afficher directement le résultat :
regarde mysql_fetch_row() ou mysql_fetch_array() ou mysql_fetch_assoc() par exemple.

Eléphanteau du PHP | 45 Messages

19 déc. 2006, 18:55

J'avais aussi esayer avec un code comme ca:
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("schoolgame");
$date = date("l");
$qrySelect = "SELECT $date FROM planing";
$reponse = mysql_query($qrySelect ) or die('ERR_SQL:<br />' . $qrySelect . '<br />' . mysql_error()); 
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['$date'];
}

mysql_close(); // Déconnexion de MySQL

?>
et là j'ai une erreur:

Notice: Undefined index: $date in c:\program files\easyphp1-8\www\schoolgame\planingtoday.php on line 12

ViPHP
ViPHP | 1961 Messages

19 déc. 2006, 19:06

Bonjour,

C'est normal. Tu mélanges les données PHP et MySQL

quand tu fais ça
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['$date'];
}
Tu "fetchs" sur une ressource MySQL ($reponse) mais tu lui demandes d'utiliser une variable PHP ($date).

Ceci devrait fonctionner (modifie la valeur chp_date par le nom de la colonne qui contient la date)
while ($donnees = mysql_fetch_array($reponse) ){
   echo $donnees['chp_date'];
}
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 45 Messages

19 déc. 2006, 19:19

Oui, mais justement je ne veux pas que MOI je selectionne la valeur, mais que en fonction du jour que l'on est une valeur différente s'affiche.

ViPHP
ViPHP | 1961 Messages

19 déc. 2006, 19:38

Re,

Dans ce cas c'est dans la requête qye ça se passe
$qrySelect = "SELECT $date FROM planing WHERE chp_date='" . $date . "'"; 
N'oublie pas de modifier chp_date par le nom de la colonne.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 déc. 2006, 19:57

Non, ce sont bien les noms de ses colonnes qui correspondent au nom du jour, et non leur contenu :
J'ai une table, qui contient 7 champs, chaque champs est le nom d'un jour, Monday,...
Ce code est donc presque bon :
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees['$date'];
} 
À ceci près qu'en utilisant les apostrophes autour de $date, c'est littéralement "$date" qui est utilisé (et non le contenu de la variable $date) ce qui ne correspond à rien comme indice de tableau.

Remplace les apostrophes par des guillemets.
C'est toujours comme ça :
guillemets => variables remplacées par leur contenu
apostrophes => noms de variables utilisés directement

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 déc. 2006, 20:08

En effet, ce n'est pas e nom de la table qui change mais le nom de la colonne, donc ceci n'est pas bon :
$qrySelect = "SELECT $date FROM planing"; 
Il faudrait t'inspirer de la requête d'Ajoloca, mais en rendant dynamique le nom de la colonne.

Edit : ah ben un message a disparu le temps de poster...

ViPHP
ViPHP | 1961 Messages

19 déc. 2006, 21:19

Re,

C'est moi qui ai supprimé le mien
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 45 Messages

20 déc. 2006, 15:14

Merci ca marche voila le code au complet juste pour info:
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("schoolgame");
$chp_date = date("l");
$qrySelect = "SELECT $chp_date FROM planing";
$reponse = mysql_query($qrySelect ) or die('ERR_SQL:<br />' . $qrySelect . '<br />' . mysql_error()); 
while ($donnees = mysql_fetch_array($reponse) )
{
echo $donnees["$chp_date"];
}

mysql_close(); 

?>
a+

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

20 déc. 2006, 15:34

Re,

C'est moi qui ai supprimé le mien
Je comprends pourquoi, j'aurais du moi aussi j'ai dis n'importe quoi :oops:

ViPHP
ViPHP | 1961 Messages

20 déc. 2006, 15:39

Re,

C'est moi qui ai supprimé le mien
Je comprends pourquoi, j'aurais du moi aussi j'ai dis n'importe quoi :oops:
Tu est tombé dans le même piège que moi.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Eléphanteau du PHP | 45 Messages

20 déc. 2006, 18:44

Nouveau petit problème en rapport avec le précedent:

J'ai ceci une page qui dit:

if(champ>6){
(1)
else{
(2)
}

le (1) consiste a dire, modifier la valeur du champs trouvez précedement (vous vous souvenez la collone en fonction du jour) en lui ajoutant +1.

Le truc c'est que je veux que quand on arrive sur cette page, sa ne rajoute pas 1 a chaque fois, mais une seul fois par heure..

comment définir cela ?

merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

20 déc. 2006, 18:57

Nouveau problème, nouveau sujet. Merci.

(D'autant que personne ne viendra voir un sujet marqué Résolu)