Probleme : condition et variable vide

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 : Probleme : condition et variable vide

par supercanard » 19 oct. 2007, 20:40

Résolu ??
A prioris oui :wink:

par Truc » 19 oct. 2007, 18:18

Résolu ??

par supercanard » 19 oct. 2007, 16:25

c'est normal. Regarde bien ton code :
si $champ est vide tu concatènes 'Champ obligatoire :' à vide.
:lol: :lol: Je suis en mode boulet je crois

par d0m » 19 oct. 2007, 16:07

c'est normal. Regarde bien ton code :
si $champ est vide tu concatènes 'Champ obligatoire :' à vide.

par supercanard » 19 oct. 2007, 15:56

pour ma part, j'utilise cette fonction pour tester si mes champs textes sont remplis (et pas par des blances)
if(isset($_POST['champ_texte'])
   && !empty(trim($_POST['champ_texte']))
   && !ctype_space(trim($_POST['champ_texte'])) ){
  //le champ existe, contient quelque chose et n'est pas constitué de blancs
}
Je vais faire quelquechose de semblable :
function champvide($champsvides_page,$champ) {
	if (empty($champ)) {
		$var= $champsvides_page.$champ;
	}
	return $var;
}
$champvides_pages contient la phrase : Champ obligatoire :
En ajoutant $champ je précise de cette manière le nom du champ testé

Mais rien a faire, j'obtient juste "Champ obligatoire :"

JE cris que mon clavier va y passer d'ici la fin de journée :lol:

par supercanard » 19 oct. 2007, 15:23

Ok je comprend mieux les boleens, plsu un petit tour dans la doc.

Même si ma méthode n'est pas terrible, je vois toujours pas ce qui cloche dans mon code et ça attise ma curiosité même si je dois faire autrement.
Y doit bien y avoir un hic mais quoi ? surtout que je procède exactement de la même manière ailleurs et que ça marche...

par d0m » 19 oct. 2007, 15:16

pour ma part, j'utilise cette fonction pour tester si mes champs textes sont remplis (et pas par des blances)
if(isset($_POST['champ_texte'])
   && !empty(trim($_POST['champ_texte']))
   && !ctype_space(trim($_POST['champ_texte'])) ){
  //le champ existe, contient quelque chose et n'est pas constitué de blancs
}

par Truc » 19 oct. 2007, 15:13

enfaite la fonction peut être remplacée par :
if (isset($_POST['nom'])) { // ENREGISTREMENT
        $alerte= (empty($_POST['nom']) || empty($_POST['nom_lien'])) ? $champsvides_page : ""; 
        if (empty($alerte)) { // SI PAS DE MESSAGE ERREUR, ENREGISTREMENT 
        {
sinon l'idée d'une telle fonction est de renvoyer un booléen (vrai ou faux) :
function is_vide($param)
{
   $retour = false;
   if (empty($param))
   {   
       $retour = true;
       // autres tests, lignes possibles
   }
   return $retour;
}

//appel 
$is_vide = is_vide($param); // $s_vide va contenir soit true soit false; ceci n'est qu'un exemple complètement inutile puisque l'appel à empty() direment revient à la meme chose hein 

par supercanard » 19 oct. 2007, 15:01

renvoie des booléen pour la fonction false ou true, initialise à "false" si le champ est vide tu passes à "true" et dans tous les cas tu renvoie une valeur.
Si ce retour est vrai alors tu affiches ton message qui n'a plus besoin d'être passé en paramètre à la fonction.

Si je peux me permettre cette fonction de test des champs vides est un peu inutile dans le sens où elle est beaucoup trop restrictive. Tu ne pouras pas l'utiliser dans d'autres cas :-k
Oui je sais elle sert a rien, mais j'ai demandé sur un autre post pour justement en faire une utilisable dans tous les cas.
Par contre je comprends pas trop pour ta solution :?

par Truc » 19 oct. 2007, 13:27

renvoie des booléen pour la fonction false ou true, initialise à "false" si le champ est vide tu passes à "true" et dans tous les cas tu renvoie une valeur.
Si ce retour est vrai alors tu affiches ton message qui n'a plus besoin d'être passé en paramètre à la fonction.

Si je peux me permettre cette fonction de test des champs vides est un peu inutile dans le sens où elle est beaucoup trop restrictive. Tu ne pouras pas l'utiliser dans d'autres cas :-k

par supercanard » 19 oct. 2007, 13:26

es tu sur que tes champs sont bien considéré comme vides?
pour tester :
function champs_page($champsvides_page,$nom,$nom_lien) { // VERIFICATIONS DES CHAMPS VIDES
  if (empty($nom) || empty($nom_lien)) {
    $var= $champsvides_pages;
  }
else
  echo 'les champs ne sont pas vides<BR>';

  return $var;
      } 
Mieux j'ai même fait ça : else { echo $nom.$nom_lien.'toto'; }

La il ne s'affiche rien.
Donc c'est complètement illogique... toto devrait s'afficher puisque $nom et $nom lien ne s'affichent pas et sont donc bien vides...

par d0m » 19 oct. 2007, 13:18

es tu sur que tes champs sont bien considéré comme vides?
pour tester :
function champs_page($champsvides_page,$nom,$nom_lien) { // VERIFICATIONS DES CHAMPS VIDES
  if (empty($nom) || empty($nom_lien)) {
    $var= $champsvides_pages;
  }
else
  echo 'les champs ne sont pas vides<BR>';

  return $var;
      } 

par supercanard » 19 oct. 2007, 13:14

Modération :
Merci d'utiliser un titre clair et qui correspond bien à ta demande.
Les titres contenant "HELP", "Aidez-moi !" n'apportent rien à la compréhension de ton problème.
Par ailleurs, nous savons déjà par ton message que tu as besoin d'aide.

Tu peux corriger ton titre en éditant ton premier message.

Merci de prendre le temps de lire les règlements.
Oups
Je savais tellement pas quoi mettre comme titre puisque j'ai du mal a cibler le probleme. C'est modifié :wink:

par Truc » 19 oct. 2007, 13:08

Modération :
Merci d'utiliser un titre clair et qui correspond bien à ta demande.
Les titres contenant "HELP", "Aidez-moi !" n'apportent rien à la compréhension de ton problème.
Par ailleurs, nous savons déjà par ton message que tu as besoin d'aide.

Tu peux corriger ton titre en éditant ton premier message.

Merci de prendre le temps de lire les règlements.

Probleme : condition et variable vide

par supercanard » 19 oct. 2007, 13:06

Bonjour,
Je suis sur un problème qui traine depuis 2 jours. Je n'ose même plus ouvrir la foutue page qui contient ce code parce que j'ai peur de faire CTRL A + SUPR :x

Alors voilà, j'ai tout simplement un formulaire qui me renvois des données.
Dans le code ci-dessous, si le champ nom est envoyé on exécute la fonction plus bas.
La fonction retourne une variable $alerte.
Si celle-ci est vide, c'est qu'il n'y a pas d'erreur, donc on enregistre les données.

(désolé pour le fouillis les tabulations du code ont sautées je crois)
   
      if (isset($_POST['nom'])) { // ENREGISTREMENT
        $alerte= champs_page($champsvides_page,$_POST['nom'],$_POST['nom_lien']); // APPEL DE LA FONCTION DE TEST DES CHAMPS VIDES
        if (empty($alerte)) { // SI PAS DE MESSAGE ERREUR, ENREGISTREMENT
               $req_ajout= mysql_query("INSERT INTO bloom_pages (id,nom,contenu,nom_lien,pos_lien,visible) VALUES ('','{$_POST[nom]}','{$_POST[elm1]}','{$_POST[nom_lien]}','{$_POST[pos_lien]}','{$_POST[visible]}')");
        }
      }
La fonction en question teste simplement les champs. Si un des deux est vide, la variable $alerte prend la valeur d'une variable définie plus haut dans le script.
 
      function champs_page($champsvides_page,$nom,$nom_lien) { // VERIFICATIONS DES CHAMPS VIDES
        if (empty($nom) || empty($nom_lien)) {
        $var= $champsvides_pages;
        }
        return $var;
      }
Alors le problème c'ets que champs vides ou pas, l'enregistrement se fait.
J'ai lu et relu le code dans tous les sens, en taille de typo 72, de loin, de près, mais franchement je vois pas ce qui cloche. :(

Si quelqun peut m'aider c'est volontiers