Fonction mysql_result() marche 1 fois sur 2!!

Résolu
Fonx2 Messages postés 331 Date d'inscription   Statut Membre Dernière intervention   -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je me lance depuis peu dans la conception via PHP d'un site web de gestion de planning.
Pour faire simple, disons que je génère un tableau par mois avec en colonne les jours et en ligne les nom des personnes.

Le planning est réalisé selon un code couleur: il suffit donc de colorer la case.

Pour savoir quel couleur mettre, j'ai écrit une fonction que voici:

-------------------------------------------------------------------------------------------------------------------

function TestValeur($Jour, $Mois, $Annee, $Prenom){
$PrenomSQL="'".$Prenom."'";
$Date="'".$Annee."/".$Mois."/".$Jour."'";

$test=mysql_query("Select count( c.NomCreneau ) From personne p, creneau c, travaillerdans t Where p.IDPersonne = t.IDPersonne And c.IDCreneau = t.IDCreneau And p.prenom = $PrenomSQL And t.Date = $Date");
$testexist=mysql_result($test, 0);

if ($testexist>0){
$sql=mysql_query("select c.NomCreneau from personne p, creneau c, travaillerdans t Where p.IDPersonne=t.IDPersonne and c.IDCreneau=T.IDCreneau and t.Date=$Date");
$resultat=mysql_result($sql, 0);
return $resultat;
}
else{
return '';
}
}

-------------------------------------------------------------------------------------------------------------------

Dans ma page principale (celle qui génère les tableaux), j'ai (entre autre) écrit ceci:

-------------------------------------------------------------------------------------------------------------------

for ($j=1;$j<$NbrJrsMois+1;$j++){
ConnectBase ();
$Resultat=TestValeur($j, $m, $y, 'Toto');
$ColorCase=ColorCase($Resultat);
echo "<td class='$ColorCase'></td>";
}

-------------------------------------------------------------------------------------------------------------------

Remarque: "ConnectBase()" est une fonction qui me connecte à ma base phpmyadmin tandis que "ColorCase()" complète l'attribut "class" de la balise "<td>" afin de la faire correspondre à une feuille de style qui contient des class avec les différents "background-color" du code couleur du planning.

Pour info, ma base phpmyadmin contient 3 tables (voir le MLD si dessous):
Personne (IDPersonne, Nom, Prenom)
Creneau (IDCreneau, NomCreneau)
TravaillerDans (#IDPersonne, #IDCreneau, Date)


Mon problème est le suivant:
Pour pouvoir tester mon travail au fur et à mesure, j'ai installer WAMPSERVER sur ma machine. Avec ce logiciel, TOUT MARCHE NICKEL!!

Mais lorsque je le copie (via FTP) sur le serveur (virtuel - accessible par le réseau) destiné à reçevoir le site final, j'obtient une erreur:

"Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /var/www/planning/GestionPlanning/Fonctions.php on line 54"

Voila deux jours que je fouille partout sur le web... sans résultat!

Au secours!!!
A voir également:

3 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Après chaque mysql_query, rajoute une ligne echo mysql_error();.
Cette fonction renvoie la dernière erreur MySQL, ce qui te permettra de comprendre ce qui n'a pas fonctionné.

Xavier
2
Fonx2 Messages postés 331 Date d'inscription   Statut Membre Dernière intervention   132
 
Merci pour cette astuce! Je connaissais cette fonction mais je n'avais pas pensé à l'utiliser...

Je test sa dès demain et je te tiens au courant...

Merci encore!
0
Fonx2 Messages postés 331 Date d'inscription   Statut Membre Dernière intervention   132
 
Super!!

Désolé, je n'ai pas eu le temps de tester sa plus tôt mais là sa y est! Sa marche!
En fait, il y avais deux erreurs, dût au même problème: Le respect de la casse.

- Dans ma fonction ConnectBase(), le nom de la base commençais par une majuscule tandis que tout était en minuscule sur phpmyadmin.

- Dans ma requête SQL, je déclare un pseudo pour mes tables en les désignant par une lettre en minuscule (mot clé "as" suivit d'une lettre minuscule) et plus loin, dans la clause "where", je met la lettre correspondant à ma table... en majuscule! Faut vraiment pas être futé!

Après ces 2 corrections, tout marche nickel!!

Merci encore!
Bonne continuation...
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Effectivement, par défaut et traditionnellement, les SGBD implémentent un SQL non sensible à la casse...
J'aurais tendance à dire, vu les pratiques de développement SQL, que c'est suicidaire de passer son serveur à un mode sensible à la casse !

Xavier
0