problème passage localhost => serveur

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 passage localhost => serveur

Re: problème passage localhost => serveur

par ladinho58 » 22 déc. 2011, 13:10

Merci beaucoup !!! Ca fonctionne !! :)

Re: problème passage localhost => serveur

par Mazarini » 22 déc. 2011, 13:00

Avant la ligne ${'sel'.$filtreDroits} = "selected='selected'";
il faut ajouter
$sel1 = "";
$sel2 = "";
...
en fonction des $selNN utilisé dans la fonction.

Re: problème passage localhost => serveur

par ladinho58 » 22 déc. 2011, 12:57

Par ailleurs, je me suis renseigné un peu sur E_STRICT et je ne crois pas que ce soit des erreurs venant de ce mode. On peut le supprimer via le fichier php.ini, ce que j'ai fait pour voir si j'observais encore les mêmes erreurs et effectivement, qu'il y ait ou non E_STRICT je retrouve les mêmes erreurs

Re: problème passage localhost => serveur

par ladinho58 » 22 déc. 2011, 12:47

C'est bon, je crois avoir résolu mon problème, j'ai modifié cette ligne-ci sans vraiment trop de conviction mais ca a l'air de fonctionner :

if($add != "")
$req.= " AND ".$add;

avant la valeur était à WHERE.
et puis j'ai conservé mes lignes de
if (!isset($_GET['nom'])
$filtreNom="";

En revanche, j'obtiens toujours des problèmes de Undefined variable: sel1 in C:\wamp\www\vespa_b1\administration\adm_list.php on line 27
Une fois qu'on a décidé de filtrer selon le nom, prénom, numero de telephone etc.. on peut aussi décider de ranger les utilisateurs par ordre croissant ou décroissant selon leur région, leur droit, leur nom ou leur email.
Et la évidemment, on ne peut pas à la fois demander de montrer dans l'ordre croissant et décroissant la liste des utilisateurs en fonction de leur nom. Il faut bien sélectionner 1 choix parmi les 3 (aucun ordre, croissant, décroissant).
Au final, j'ai des erreurs aux lignes 27-28 / 4erreurs par ligne dû au fait qu'on peut trier selon 4paramètres (region, nom,droit, email)
et également des erreurs aux lignes 399 à 403

voici le code qui gère ces manipulations :
/**
 * Rempli les champs d'un combo pour le tri
 */
function fct_tri($txt,$selection){
	${'sel'.$selection} = "selected='selected'";
	return "
		<option ".$sel0." id='aucun".$txt."' value='0'>Non</option>
		<option ".$sel1." id='asc".$txt."' value='1'>Asc</option> //ligne 27
		<option ".$sel2." id='desc".$txt."' value='2'>Desc</option> //ligne 28
	";
}

/**
 * 
 * Renvoi l'attribut $attribut suivi de ASC ou DESC.
 * @param Attribut à compléter
 * @param Tri Ascendant ou Descendant
 */
function ajoutTri($attribut,$o){
	$ordre = $o-1 ? "DESC" : "ASC";
	return $attribut." ".$ordre;
}


//Droits
	${'sel'.$filtreDroits} = "selected='selected'";
	$corps.="<td><label>Droits : </label></td><td><select id='dr' name='dr'>
		<option ".$sel." id='tout' style=\"font-weight: bold;\" value=\"\">Tous les droits</option>
		<option ".$sel0." style=\"padding-left: 25px;\" id='admin' value=\"0\">Administrateur</option> //ligne 399
		<option ".$sel1." style=\"padding-left: 25px;\" id='local' value=\"1\">Gestionnaire local</option> //ligne 400
		<option ".$sel2." style=\"padding-left: 25px;\" id='user' value=\"2\">Utilisateur simple</option> //ligne 401
		<option ".$sel3." style=\"padding-left: 25px;\" id='ex' value=\"3\">Ancien utilisateur</option> //ligne 402
		<option ".$sel4." style=\"padding-left: 25px;\" id='temp' value=\"4\">Compte temporaire</option> //ligne 403
		";
//Tri region
	$corps.="<td style=\"padding-right: 35px;\"><label>Trier par :</label></td><td><label>Région : </label></td><td><select id='triregion' name='triregion'>".fct_tri("region",$triRegion)."</select></td>";
	$corps.="<td><label>Droits : </label></td><td><select id='tridr' name='tridr'>".fct_tri("dr",$triDroits)."</select></td>";
	$corps.="<td><label>Nom : </label></td><td><select id='trinom' name='trinom'>".fct_tri("nom",$triNom)."</select></td>";
	$corps.="<td><label>Email : </label></td><td><select id='triemail' name='triemail'>".fct_tri("email",$triEmail)."</select></td>";
	$corps.="<td><input id='submit' type='submit' value='Appliquer les filtres'></td></tr></table></form></div>";
Très franchement là je ne vois même pas par où commencer

Re: problème passage localhost => serveur

par ladinho58 » 22 déc. 2011, 12:26

En réalité, très peu de monde de mon étage sont vraiment calés en développement de site web..

Re: problème passage localhost => serveur

par Mazarini » 22 déc. 2011, 11:44

WHERE droits <> 3 WHERE LOWER(nom) =LOWER('jean');

2 where dans un select, ca ne marche pas.
if (!isset($_GET['nom'])
$filtreNom="";
else $filtreNom = mysql_escape_string($_GET['nom']);
C'est bien ce qu'il faut faire. Tester directement isset() plutot que !isset() me semble plus lisible, mais c'est un détail.

Edit : il est bien de travailler avec un niveau d'erreur plus semble sur la machine de dev et il est possible d'etre plus laxiste sur la machine de prod. L'intérêt de savoir qu'une variable n'est pas initialisée : en cas de variable non initialisée, il se peut que ce soit du à une faute de frappe.

Re: problème passage localhost => serveur

par moogli » 22 déc. 2011, 11:40

salut,

tu n'as pas les messages d'erreur en ligne parce que le niveau de rapport d'erreur doit être ras de pâquerette (en gros aucun) hors toi tu doit avoir du E_ALL | E_STRICT ;)

le code est mal fait s'il ne gère pas ce cas, donc le corriger est une bonne chose.

tu a un erreur parce que ta requete est foireuse => il y a deux where dedans ça c'est pas bon du tout (regarde bien ce que tu a mis ;) ).

vérifie donc la construction de celle ci.

ton "maitre" / référence / encadrant de stage devrait être en mesure de t'aider sur ce point nan ? :)


@+

problème passage localhost => serveur

par ladinho58 » 22 déc. 2011, 10:48

Bonjour,

je suis stagiaire et je dois avancer sur un projet de site internet - outil statistique. Le travail a déjà été bien commencé par l'ancien stagiaire et les pages qui ont été développées sont déjà déposées sur le serveur et le site/outil est utilisable sans problème particulier.
Pour continuer ce travail, je dois donc d'abord travailler en local. Après installation des différentes programmes, je teste l'accès aux pages et je découvre un problème sur une page, qui n'existe pas sur le serveur, alors que le programme est le même.

Sur une page du site, j'obtiens ce type d'erreur :
Notice: Undefined index: nom in C:\wamp\www\vespa_b1\administration\adm_list.php on line 222
Notice: Undefined index: prenom in C:\wamp\www\vespa_b1\administration\adm_list.php on line 223
Notice: Undefined index: email in C:\wamp\www\vespa_b1\administration\adm_list.php on line 224
Notice: Undefined index: droits in C:\wamp\www\vespa_b1\administration\adm_list.php on line 225
Notice: Undefined index: region in C:\wamp\www\vespa_b1\administration\adm_list.php on line 226
Notice: Undefined index: telephone in C:\wamp\www\vespa_b1\administration\adm_list.php on line 227
Notice: Undefined index: portable in C:\wamp\www\vespa_b1\administration\adm_list.php on line 228
Notice: Undefined index: fax in C:\wamp\www\vespa_b1\administration\adm_list.php on line 229
etc...


voici les lignes correspondantes aux erreurs :

$filtreNom = mysql_escape_string($_GET['nom']);
$filtrePrenom = mysql_escape_string($_GET['prenom']);
$filtreEmail = mysql_escape_string($_GET['email']);

En réalité, la page qui concerne ces erreurs sert à la gestion des utilisateurs. On a un tableau avec tous les paramètres concernant les utilisateurs, et la personne allant sur cette page peut filtrer les données en remplissant par exemple le champ 'droits' et en y indiquant 'administrateur', et seules les personnes 'administrateur' seront observées dans le tableau des utilisateurs.

Et en fait, j'ai l'impression qu'il me met ces erreurs parce qu'en cliquant pour la toute première fois sur le lien qui mène vers cette page, on n'a évidemment rempli aucun champ du filtre donc les valeurs prénom, nom, email, etc.. ne sont pas indiquées..

Mais ce code ne fournit aucune erreur sur le serveur. Quel est donc le problème ?

Au début, j'avais commencé a écrire avant chaque mysql_escape_string:
if (!isset($_GET['nom'])
$filtreNom="";
else $filtreNom = mysql_escape_string($_GET['nom']);

Ce code enlève bien l'erreur, mais me fournit une autre erreur lorsque j'applique les filtres :

Requête invalide : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE LOWER(nom) =LOWER('jean')' at line 1 Requête complète : SELECT id_utilisateur, droits, civilite, nom, prenom, email, fonction, telephone, portable, nom_region, fax FROM utilisateur LEFT OUTER JOIN region ON utilisateur.id_region = region.id_region WHERE droits <> 3 WHERE LOWER(nom) =LOWER('jean');

D'où vient donc cette erreur ?