Fonction mysql_result() marche 1 fois sur 2!!

Résolu/Fermé
Fonx2 Messages postés 331 Date d'inscription dimanche 6 avril 2008 Statut Membre Dernière intervention 5 mai 2013 - Modifié par Fonx2 le 9/04/2010 à 17:13
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 19 avril 2010 à 11:42
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!!!

3 réponses

Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
12 avril 2010 à 15:18
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 dimanche 6 avril 2008 Statut Membre Dernière intervention 5 mai 2013 132
12 avril 2010 à 20:52
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 dimanche 6 avril 2008 Statut Membre Dernière intervention 5 mai 2013 132
Modifié par Fonx2 le 19/04/2010 à 09:22
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 jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 19/04/2010 à 11:43
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