problème de variable

Eléphanteau du PHP | 45 Messages

25 déc. 2006, 18:01

Hello,

voila mon problème:
$qrySelect = "SELECT $chp_date FROM planing WHERE heure='" . $chp_date2 . "'";
$reponse = mysql_query($qrySelect ) or die('ERR_SQL:<br />' . $qrySelect . '<br />' . mysql_error()); 
/////////////////////////////////////////////////////////////
while ($donnees = mysql_fetch_array($reponse) )
{
echo "<b><font face=verdana><FONT COLOR=#50461F>vous avez cours actuellement de" . " " . $donnees["$chp_date"] . "." . "Le cours a commencé depuis" ." " ."$chp_date3" . " " . "minutes" . "</font></font></b>";

echo "<br/>";
echo "<br/>";
}
$chp_date11=$donnees["$chp_date"];
l'important dans ce code est $donnees["$chp_date"];

ensuite:
$qrySelect2="UPDATE heures_secher SET $chp_date11=$chp_date11 +1 WHERE login='". $_SESSION['login'] . "'";
voila j'ai dis donc d'ajouter 1, au champ $chp_date11 qu'on determine en fonction de l'heure system..bref si je remplace $chp_date11 par le nom direct, d'un des champs sa marche mais là non, une idée ??

merci a +

Mammouth du PHP | 1029 Messages

25 déc. 2006, 19:38

Et simplement faire
$chp_date11=$donnees["$chp_date"];
$chp_date11 += 1;
$qrySelect2="UPDATE heures_secher SET $chp_date  WHERE login='". $_SESSION['login'] . "'"; 


de plus appelée ses champs de table, avec le même principe de nommage que les variables, ne me semble pas des plus judicieux.

Parce que dans ton query tu essaie de modifier le champ '$chp_date11', alors que ton champ dans la table 'heures_secher' semble se nommer '$chp_date'.
L'expérience est la somme de toutes nos erreurs.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 déc. 2006, 19:45

de plus appelée ses champs de table, avec le même principe de nommage que les variables, ne me semble pas des plus judicieux.
J'espère que ce n'est pas le cas... mais bel et bien de variables qu'il s'agit :shock:

Pour ton souci... ce n'est pas clair...
que veux tu faire ?
quel est le but du script ?

Il y a une boucle mais $chp_date11 ne prend que la dernière des valeurs retournées par la requête (puisqu'après la boucle).

A quoi resemble la structure (champs) de ta table "planing"

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 1029 Messages

25 déc. 2006, 19:51

de plus appelée ses champs de table, avec le même principe de nommage que les variables, ne me semble pas des plus judicieux.
J'espère que ce n'est pas le cas... mais bel et bien de variables qu'il s'agit :shock:
pourtant il me semble bien que c'est ce qu'il fait
$chp_date11=$donnees["$chp_date"]; 
L'expérience est la somme de toutes nos erreurs.

Eléphanteau du PHP | 45 Messages

25 déc. 2006, 20:02

en gros dans la table, les champs sont nommé de lundi a dimanche en anglais et donc via la fonction date() de php je recupere le nom du champ..

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 déc. 2006, 20:06

de plus appelée ses champs de table, avec le même principe de nommage que les variables, ne me semble pas des plus judicieux.
J'espère que ce n'est pas le cas... mais bel et bien de variables qu'il s'agit :shock:
pourtant il me semble bien que c'est ce qu'il fait
$chp_date11=$donnees["$chp_date"]; 
La variable est interpétée puisqu'elle est entre guillemets == il s'agit d'une variable.

Cette requête est correcte (on va juste sortir tout ce qui est variable du reste de la chaine de caractères) :
$qrySelect2="UPDATE heures_secher SET ".$chp_date11 ." = ".$chp_date11." +1 WHERE login='". $_SESSION['login'] . "'";
Mais à quel moment est-elle exécutée ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 45 Messages

25 déc. 2006, 20:23

voila tout le code:
<?php
//connection base de données
mysql_connect("localhost", "root", "");
mysql_select_db("schoolgame");
$chp_date = date("l");
$chp_date2 = date("H");
$chp_date3 = date("i");
/////////////////////////////////////////////////////////////
//selectionne le login, et le monde dans la table dans laquel l'utilisateur (pseudo= $_session...) est enregistré
$qrySelect = "SELECT $chp_date FROM planing WHERE heure='" . $chp_date2 . "'";
$reponse = mysql_query($qrySelect ) or die('ERR_SQL:<br />' . $qrySelect . '<br />' . mysql_error()); 
/////////////////////////////////////////////////////////////
while ($donnees = mysql_fetch_array($reponse) )
{
echo "<b><font face=verdana><FONT COLOR=#50461F>vous avez cours actuellement de" . " " . $donnees["$chp_date"] . "." . "Le cours a commencé depuis" ." " ."$chp_date3" . " " . "minutes" . "</font></font></b>";

echo "<br/>";
echo "<br/>";
}
$chp_date11=$donnees["$chp_date"];
if($chp_date2<22){
if($chp_date3>15){
echo "<b><font face=verdana><FONT COLOR=#FF0000>Trop tard vous avez raté ce cours !</font></font></b>";
$qrySelect2="UPDATE heures_secher SET ".$chp_date11."=".$chp_date11." +1 WHERE login='". $_SESSION['login'] . "'";
$reponse2 = mysql_query($qrySelect2 ) or die('ERR_SQL:<br />' . $qrySelect2 . '<br />' . mysql_error()); 
}else{
echo "<b><font face=verdana><FONT COLOR=#66FF00>Vite le cours va commencer !</font></font></b>";
echo "<br/>";
echo "<br/>";
include('decisioncours.php');
}
}
if($chp_date2>22){
echo "<b><font face=verdana><FONT COLOR=#66FF00>Plus de cours pour aujourd'hui !</font></font></b>";
}

$_SESSION['chp_date']=$chp_date;
$_SESSION['chp_date2']=$chp_date2;
$_SESSION['chp_date3']=$chp_date3;
mysql_close(); // Déconnexion de MySQL

?>

et la table planing:

Code : Tout sélectionner

-- phpMyAdmin SQL Dump -- version 2.6.1 -- http://www.phpmyadmin.net -- -- Host: localhost -- Generation Time: Dec 25, 2006 at 07:22 PM -- Server version: 4.1.9 -- PHP Version: 4.3.10 -- -- Database: `test` -- -- -------------------------------------------------------- -- -- Table structure for table `planing` -- CREATE TABLE `planing` ( `heure` decimal(100,0) NOT NULL default '0', `Monday` varchar(250) NOT NULL default '', `Tuesday` varchar(250) NOT NULL default '', `Wednesday` varchar(250) NOT NULL default '', `Thursday` varchar(250) NOT NULL default '', `Friday` varchar(250) NOT NULL default '', `Saturday` varchar(250) NOT NULL default '', `Sunday` varchar(250) NOT NULL default '' ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Dumping data for table `planing` -- INSERT INTO `planing` VALUES (8, 'anglais', 'anglais', 'histoire', 'maths', 'maths', '', ''); INSERT INTO `planing` VALUES (9, 'français', 'français', 'art-plastique', 'EPS', 'EPS', '', ''); INSERT INTO `planing` VALUES (10, 'allemand', 'anglais', 'maths', 'français', 'PERM', '', ''); INSERT INTO `planing` VALUES (11, 'PERM', 'svt', 'svt', 'géographie', 'allemand', '', ''); INSERT INTO `planing` VALUES (14, 'anglais', 'français', 'histoire', 'svt', 'PERM', '', ''); INSERT INTO `planing` VALUES (15, 'maths', 'PERM', 'PERM', 'français', 'allemand', '', ''); INSERT INTO `planing` VALUES (16, 'svt', 'geographie', 'anglais', 'allemand', 'PERM', '', ''); INSERT INTO `planing` VALUES (17, 'maths', 'svt', 'histoire', 'PERM', 'français', '', ''); INSERT INTO `planing` VALUES (21, 'maths', 'anglais', 'français', 'eps', 'eps', '', ''); INSERT INTO `planing` VALUES (22, 'maths', 'anglais', 'allemand', 'histoire', 'fr', '', ''); INSERT INTO `planing` VALUES (19, 'maths', 'allemand', 'histoire', 'eps', 'français', '', '');
merci d'avance

Mammouth du PHP | 1029 Messages

25 déc. 2006, 20:35

d'accord,

donc si je comprend bien dans l'opération suivante :
$chp_date11=$donnees["$chp_date"]; 
est équivalent à par exemple
$chp_date11='monday'; 


or

Code : Tout sélectionner

$chp_date11='monday' + 1;
ne fera pas

Code : Tout sélectionner

'thuesday'
sauf si je me trompe :?
L'expérience est la somme de toutes nos erreurs.

Eléphanteau du PHP | 45 Messages

25 déc. 2006, 20:43

voila le principe:

un planing, de lundi a mardi ( avec le nom des champs en anglais) et avec des heures..
en fonction de l'heure et du jour, on dit quel 'matière' on a...

Ensuite, on affiche, vous avez tel matière exemple maths.. et là on a le choix avec une liste entre 'secher' ou 'aller' quand on va sur sécher, on ajoute +1 a la table 'heures_secher', mais on ajoute sur la matière qu'on a sécher..

Mammouth du PHP | 1029 Messages

25 déc. 2006, 20:50

$chp_date11=$donnees["$chp_date"]; 
retourne bien le nom de ton champ?
L'expérience est la somme de toutes nos erreurs.

Eléphanteau du PHP | 45 Messages

25 déc. 2006, 20:59

oui tout marche !

Mammouth du PHP | 1029 Messages

25 déc. 2006, 21:18

Résolu alors?
L'expérience est la somme de toutes nos erreurs.