Vous n'êtes pas identifié(e).
Bonjour à tous, je suis débutant en php et en vue d'afficher des dates de garde pour les pharmacie de mon quartier j'ai fait ce petit programme en php que j'ai testé sous wampserver et il fonctionne parfaitement, mais une fois transféré sur le serveur orange, il affiche bien les différentes dates des gardes, mais ne m'affiche plus les résultats .:(..j'ai essayé de comprendre d'où venait cet absence de résultats, et je crois que le probleme doit se situé au niveau de la bouche " if isset ", mais je cale.:/.Alors si l'un de vous pouvait m'aider je le(s) remercie d'avance.:)
echo '<p>Choisissez une date de garde:</p>';
echo"<form name='form1' action='$_SERVER[PHP_SELF]' method='POST'>";
echo '<select name="ID" id="ID">';
echo '<OPTION VALUE=0>Choisissez</OPTION>';
$resultat=mysql_query("select ID, DATE_FORMAT(Dates,'%d/%m/%Y') AS Dates from gardes_2010 order by ID") or die ("Requête non executée.");
while ($ligne=mysql_fetch_array($resultat))
{
echo '<option value='.$ligne[ID].'>'.$ligne[Dates].'</option>';
}
echo '</select>';
echo '<input type="submit" value="Afficher" name="go">';
echo '</form>';
if(!isset($_POST['ID'])){
exit;
}
//Les lignes suivantes affichent le détail d'un adhérent
// si l'utilisateur en a choisi un
$resultat2 = mysql_query("Select *, DATE_FORMAT(Dates,'%d/%m/%Y') AS Dates
from gardes_2010 where ID=$_POST[ID]") or die ("Requête non executée.");
$ligne2=mysql_fetch_array($resultat2);
echo "<br>";
echo "<br>";
echo '<b>La Pharmacie de garde Le : </b>'.$ligne2['Dates'].'<br>';
echo "<br>";
echo '<b>Est la Pharmacie : </b>'.$ligne2['Pharmacies'] .'<br>';
echo "<br>";
echo '<b>Elle se situe à l\'adresse suivante : </b>'.$ligne2['Adresse'].'<br>';
echo "<br>";
echo '<b>Dans la ville de(du) : </b>'.$ligne2['Ville'].'<br>';
echo "<br>";
echo '<b>Dont le code Postal est le suivant : </b>'.$ligne2['Cp'].'<br>';
echo "<br>";
echo '<b>Vous pouvez la joindre au : </b>'.$ligne2['Numtel'] .'<br>';
echo "<br>";
echo "<br>";
mysql_close($connexion);
?>
Hors ligne
Salut,
Comme çà, çà fonctionnera mieux
[code : php]
$resultat2 = mysql_query("Select *, DATE_FORMAT(Dates,'%d/%m/%Y') AS Dates
from gardes_2010 where ID={$_POST[ID]}") or die ("Requête non executée.");
[/code]
a++
Hors ligne
Je dirais même comme cela afin de ne pas avoir d'interférence avec une constante ID :
Hors ligne
J'ai essayer mais toujours pas de résultat !!
Néanmoins merçi d'avoir essayer.
Hors ligne
Es-tu sûr que ton script va après le if et n'exécutes pas le exit() ?
De plus regardes la configuration du php.ini concernant l'affichage des erreurs.
Une erreur survient peut être mais si l'affichage est désactivé tu n'obtiens aucun message d'erreur.
Si tu n'as pas accès au php.ini tu peux modifier ses valeurs via la commande ini_set().
Hors ligne
tu a raison pour le php.ini l'affichage des erreurs est désactivé.
Néanmoins pour le reste je ne suis que débutant et par conséquent je n'ai pas compris grand chose aux infos que tu m'as délivré.
encore merci de ton aide
Hors ligne
Je parle de la fonction exit qui est utilisée dans ton script. Lorsqu'elle est exécutée cela stoppe le script et donc tout ce qui se trouve derrière ne sera pas exécuté.
Hors ligne
Je l'ai enlever pour voir ce que cela donne, mais le résultat est identique aucun affichage sur la page web.
Lors du test sur Wampserver l'enlèvement de ces lignes contenant la fonction exit voici l'erreur affichée :
Notice: Undefined index: ID in C:\wamp\www\Test\testdates.php on line 33
Requête non executée.
Une idée?
Hors ligne
Bonjour,
Ton code est une vrai passoire question manque de rigueur d'écriture.
Et je confirme que ta requête d'affichage ne s'éxécute pas à cause du exit car la variable ID n'existe pas, tout simplement parcequ'en html l'option value doit s'écrire avec des guillemets pour être définie comme suit :
(si toutefois ca passe l'exit, de toute manière ca passera pas la requête car ID n'aura pas une valeur autorisée pour la requête).
Voilà
Dernière modification par Jc (02-05-2010 17:40:25)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Merci JC pour tes explications, bien entendu que mon code est une vrai passoire et manque de rigueur étant donné que je suis débutant et autodidacte, mais je compte bien m'améliorer avec des conseils comme les tiens.
Ceci dit comment expliques-tu que ce code fonctionne parfaitement sur wamp en local et pas sur le serveur de mon site? je n'y comprends rien. Sans la ligne de l'exit j'ai l'erreur et avec la ligne il me renvoit parfaitement le résultat escompté!!
Je m'en vais de ce pas appliquer les changement préconisés dans mon code...
Encore merci pour les tuyaux.
Hors ligne
Après les modifications apportés par JC, résultats sur wamp nickel, mais sur mon site internet rien il ne renvoi aucun résultat.:/
Hors ligne
Si tu veux consolider ton code, 1) uniformise ton écriture notamment avec les ' et les " tu y verras plus clair et ca évitera les erreurs et facilitera le debuggage.
2) évite de passer les variables $_POST etc... directement en traitement sans t'assurer de leur éxistence ET aussi de leur valeur avant de t'en servir : passe par une variable intérmédiaire sur laquelle tu passes tous les filtres necessaires pour en vérifier la valeur. topic à lire
Nos réponses ce sont croisées. As-tu aussi apporté les modifications de xTG? tu en auras besoin
Je viens de voir la ligne qui peut te poser problème en production
Problème dont je viens de donner la méthode pour la résoudre. Or dans ce cas, vaut largement mieux nommer la page explicitement sur le paramètre action de ton formulaire.
Dernière modification par Jc (04-05-2010 09:48:24)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
J'y avais pensé et je l'ai fait mais le resultat est identique. pas de resultat. voici le code :
echo '<p>Choisissez une date de garde:</p>';
echo"<form name='form1' action='gardes.php' method='POST'>";
echo '<select name="ID" id="ID">';
echo '<OPTION VALUE=0>Choisissez</OPTION>';
$resultat=mysql_query("select ID, DATE_FORMAT(Dates,'%d/%m/%Y') AS Dates from gardes_2010 order by ID") or die ("Requête non executée.");
while ($ligne=mysql_fetch_array($resultat))
{
echo '<option value="'.$ligne[ID].'" >'.$ligne[Dates].'</option>';
}
echo '</select>';
echo '<input type="submit" value="Afficher" name="go">';
echo '</form>';
if(!isset($_POST['ID'])){
exit;
}
//Les lignes suivantes affichent le détail d'un adhérent
// si l'utilisateur en a choisi un
$resultat2 = mysql_query("Select *, DATE_FORMAT(Dates,'%d/%m/%Y') AS Dates
from gardes_2010 where ID=$_POST[ID]") or die ("Requête non executée.");
$ligne2=mysql_fetch_array($resultat2);
echo "<br>";
echo "<br>";
echo '<b>La Pharmacie de garde Le : </b>'.$ligne2['Dates'].'<br>';
echo "<br>";
echo '<b>Est la Pharmacie : </b>'.$ligne2['Pharmacies'] .'<br>';
echo "<br>";
echo '<b>Elle se situe à l\'adresse suivante : </b>'.$ligne2['Adresse'].'<br>';
echo "<br>";
echo '<b>Dans la ville de(du) : </b>'.$ligne2['Ville'].'<br>';
echo "<br>";
echo '<b>Dont le code Postal est le suivant : </b>'.$ligne2['Cp'].'<br>';
echo "<br>";
echo '<b>Vous pouvez la joindre au : </b>'.$ligne2['Numtel'] .'<br>';
echo "<br>";
echo "<br>";
mysql_close($connexion);
?>
Encore merci
Edit modo : j'ai supprimer les access mysql dans les premières lignes
Hors ligne
Salut,
je commence par enfoncer les portes ouvertes :
- les index des tableaux doivent être encadrée par des ' ou des " lorsqu'ils ne sont pas des entiers (ben oui se sont des chaines de caractère
- tu n'est pas cohérent dans ton écriture, utilise soit les " ou les ' mais pas les deux (déjà dit). Le mélange induit des erreurs (dans tes requêtes SQL par exemple)
je passe au subtile :
tu utilise ID pour nommer ton champ select.
Le truc c'est que lorsque php est configuré avec le paramètre register_global = on, toutes les variables POST, GET, COOKIE et SESSION, sont créer en tant que variables (clairement $_POST['ID'] == $ID).
Après php utilise un ordre (configurable pour savoir qui est prioritaire lors de la création (en cas de GET['id'] et post['id'] par exemple)
où je veut en venir ?
le fait que tu mélange les chaines et le reste te fait écrire par exemple $_POST[ID], ce qui revient (par le jeux de recherche de variable correspondante lorsque la constante ID n'existe pas) à écrire $_POST[ $id ] ou $_POST[ $_POST['id'] ]. Comme tu n'a pas d'index tu doit avoir une erreur
regarde le source HTML de ta page web est dit nous s'il y a des erreurs.
Ajoute error_reporting(E_ALL) en haut de ta page afin d'avoir toutes les erreurs qui s'affichent.
ci dessous ton code revue et corrigé de mes remarques et de celle que j'ai lue au dessus
echo '<p>Choisissez une date de garde:</p>';
echo"<form name='form1' action='gardes.php' method='POST'>";
echo '<select name="ID" id="ID">';
echo '<OPTION VALUE=0>Choisissez</OPTION>';
$resultat=mysql_query("select ID, DATE_FORMAT(Dates,'%d/%m/%Y') AS Dates from gardes_2010 order by ID") or die ("Requête non executée.");
while ($ligne=mysql_fetch_array($resultat))
{
echo '<option value="'.$ligne['ID'].'" >'.$ligne['Dates'].'</option>';
}
echo '</select>';
echo '<input type="submit" value="Afficher" name="go">';
echo '</form>';
if(!isset($_POST['ID'])){
exit;
}
//Les lignes suivantes affichent le détail d'un adhérent
// si l'utilisateur en a choisi un
$resultat2 = mysql_query('Select Pharmacies,Adresse,Ville,Cp,Numtel, DATE_FORMAT(Dates,\'%d/%m/%Y\') AS Dates
from gardes_2010 where ID='.mysql_real_escape_string($_POST['ID']) or die ("Requête non executée.");
$ligne2=mysql_fetch_array($resultat2);
echo "<br>";
echo "<br>";
echo '<b>La Pharmacie de garde Le : </b>'.$ligne2['Dates'].'<br>';
echo "<br>";
echo '<b>Est la Pharmacie : </b>'.$ligne2['Pharmacies'] .'<br>';
echo "<br>";
echo '<b>Elle se situe à l\'adresse suivante : </b>'.$ligne2['Adresse'].'<br>';
echo "<br>";
echo '<b>Dans la ville de(du) : </b>'.$ligne2['Ville'].'<br>';
echo "<br>";
echo '<b>Dont le code Postal est le suivant : </b>'.$ligne2['Cp'].'<br>';
echo "<br>";
echo '<b>Vous pouvez la joindre au : </b>'.$ligne2['Numtel'] .'<br>';
echo "<br>";
echo "<br>";
mysql_close($connexion);
?>
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
J'ai donc appliquer les corrections proposées par "moogli" (merci au passage pour les identifiants connexions quescon peut etre tete en l'air parfois) c'est à dire :
$resultat2 = mysql_query('Select Pharmacies,Adresse,Ville,Cp,Numtel, DATE_FORMAT(Dates,\'%d/%m/%Y\') AS Dates from gardes_2010 where ID='.mysql_real_escape_string($_POST['ID']).'') or die ("Requête non executée.");
$ligne2=mysql_fetch_array($resultat2);
Sur Wamp (serveur local) tout fonctionne super les résultats sont affichés mais une fois sur le serveur dus site distant retour à la case départ ie aucun affichage des résulats seul la liste déroulante des dates de gardes est fonctionnel.
Sinon encore merci pour tout vos conseils
Hors ligne
es tu sur qu'il y a des données dans la table gardes_2010 sur ton serveur chez ton provider ?
a++
Hors ligne
Et que pensez-vous de cette possibilité ?
Utiliser le resultat de la premiere requête selectionnée puis injecter cette valeur de l'ID dans le résultat de la seconde....
$ligne2=mysql_fetch_array($resultat2);
Hors ligne
Oui le tableau existe bel et bien et d'ailleurs l'affichage des dates est issu de ce tableau (La liste déroulante est fonctionnelle).
Comme tu m'as mis le doute j'ai été vérifier et la table est ok.
Hors ligne
Bonsoir,
Alors il y a des choses à dire. La première est qu'une série de personnes t'ont donné des infos pour te dire ce qui n'allait pas en te donnant un exemple et non pas en te montrant le seul endroit à corriger pour que ca fonctionne (on ne fait pas ton travail). Donc fini de mettre à jour ton code^^ et si vraiment tu ne trouves pas, on te donnera un coup de main de plus
- Uniformise ta convention d'écriture avec les quotes, entre ' et ", tu y verras plus clair. A ce propos d'ailleurs évite de mettre des caractères d'échappement au milieu d'une fonction mySQL dans une requête : choisi donc une convention d'écriture de quotes en conséquence du moins pour tes requêtes.
Ensuite techniquement, que la variable $_POST soit définie ou pas tu affiches ton formulaire et ce n'est pas la bonne méthode. La méthode correcte de production est :
1) je teste en premier ma variable $_POST
2) Si elle n'existe pas, j'affiche mon formulaire et fin.
3) Sinon j'affiche ma page de résultats et fin.
Concernant ta deuxième requête, sur le principe c'est mieux^^.
Dernière modification par Jc (05-05-2010 22:17:05)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Merci pour toutes ces infos je retourne donc étudier mon code pour l'améliorer, ceci dit entre les quotes et les guillemets ce n'est pas évident car j'ai bêtement recopier le code de moogli et le serveur me retournait des erreurs "parse" j'ai donc fait un certains nombres d'essai à taton our essayer de trouver l'erreur la seule façon que j'ai eu de sortir de là c'est de mettre servit des guillemets et des quotes, un peu comme si seuls les guillemets pouvait les encadrer.(comparez nos lignes de codes) .J'ai essayer de n'utiliser que les quotes mais j'ai toujours des erreurs "parse".
Sinon comment fait-on pour tester la variable $_POST. Soyez indulgent et patient envers votre serviteur (je suis un vrai débutant).
Encore merci de votre attention .
Hors ligne
Bonsoir,
1) Pour tester ta variable $_POST, tu as la solution dans ton code avec isset()
2) ton code suivant :
Code:
$resultat2 = mysql_query('Select Pharmacies,Adresse,Ville,Cp,Numtel, DATE_FORMAT(Dates,\'%d/%m/%Y\') AS Dates
from gardes_2010 where ID='.$ligne[ID].'') or die ("Requête non executée.");$ligne2=mysql_fetch_array($resultat2);
Donnerait avec des guillemets doubles
Comme tu as pu remarquer ça change un peu les choses. Si tu doit mettre des guillemets double dans ta chaîne quand tu les utilises pour délimiter ta chaîne fait comme ceci :
Dernière modification par Jc (06-05-2010 21:50:02)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Voilà j'ai retravaillé le script en le simplifiant un peu. mais toujours pareil fonctionne sous Wamp server mais pas sur mon site...
if ($resultat) {
echo '<p>Choisissez une date de garde:</p>';
echo"<form name='form1' action='http://localhost/Test/essai.php' method='POST'>";
echo '<select name="ID" id="ID">';
echo '<OPTION VALUE=0>Choisissez</OPTION>';
while ($ligne=mysql_fetch_array($resultat))
{
echo '<option value="'.$ligne[ID].'" >'.$ligne[Dates].'</option>';
}
echo '</select>';
echo '<input type="submit" value="Afficher" name="go">';
echo '</form>';
}
$choix = isset($_POST['ID'])? $_POST['ID'] : '';
$fin=$_POST['ID'];
$resultat2 = mysql_query('Select *, DATE_FORMAT(Dates,\'%d/%m/%Y\') AS Dates from gardes_2010
where ID='.$fin.'') or die ("Requête non executée.");
$ligne2=mysql_fetch_array($resultat2);
if ($choix) {
echo "<br>";
echo "<br>";
echo '<b>La Pharmacie de garde Le : </b>'.$ligne2[Dates].'<br>';
echo "<br>";
echo '<b>Est la Pharmacie : </b>'.$ligne2[Pharmacies] .'<br>';
echo "<br>";
echo '<b>Elle se situe à l\'adresse suivante : </b>'.$ligne2[Adresse].'<br>';
echo "<br>";
echo '<b>Dans la ville de(du) : </b>'.$ligne2[Ville].'<br>';
echo "<br>";
echo '<b>Dont le code Postal est le suivant : </b>'.$ligne2[Cp].'<br>';
echo "<br>";
echo '<b>Vous pouvez la joindre au : </b>'.$ligne2[Numtel] .'<br>';
echo "<br>";
echo "<br>";
}
mysql_close($connexion);
?>
Voici l'adresse du site avec la page qui ne répond pas : http://pharmacieberthelot.free.fr/gardes.php
Si vous avez des idées....
Hors ligne
$ligne2['Dates'] aen lieu de $ligne2[Dates]
etc ...
a++
Hors ligne
j'ai corrigé en tenant compte des remarques ci-dessus (merci au passage ) mais toujours pas de changement fonctionne correctement sur wamp server et pas sur le site distant.
Hors ligne
[code:php]
$resultat2 = mysql_query("Select *, DATE_FORMAT(Dates,'%d/%m/%Y') AS Dates from gardes_2010 where ID='$fin'") or die ("Requête non executée.");
[/code]
a++
Hors ligne