problème de variable

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 : problème de variable

par Maitrepylos » 25 déc. 2006, 21:18

Résolu alors?

par dr.smoogy » 25 déc. 2006, 20:59

oui tout marche !

par Maitrepylos » 25 déc. 2006, 20:50

$chp_date11=$donnees["$chp_date"]; 
retourne bien le nom de ton champ?

par dr.smoogy » 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..

par Maitrepylos » 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 :?

par dr.smoogy » 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

par Truc » 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 ?

par dr.smoogy » 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..

par Maitrepylos » 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"]; 

par Truc » 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"

par Maitrepylos » 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'.

problème de variable

par dr.smoogy » 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 +