IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème empty() rempli par des warnings [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2002
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 244
    Par défaut Problème empty() rempli par des warnings
    Bonjour,

    Je me suis remis au PHP mais je suis un peu rouillé
    J'essaie de faire un formulaire qui s'initialise avec des variables seulement s'il a déjà été envoyé.
    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset($_POST['submit'])
    et je vérifie la valeur des variables avec Il y plusieurs problèmes:
    • Quand j'ouvre le form pour la première fois, au lieu de mettre les champs vides, j'ai l'impression qu'il les remplit avec les Warnings php.

      Est-ce normal, dois-je désactiver quelque chose?

    • Quand j'indente mon code de textarea comme ici:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      <textarea id="elvismail" name="elvismail" rows="8" cols="40">
      <?php echo $text;?>
      </textarea><br />
      j'ai l'impression que mon browser (chrome ou IE) me met de l'indentation dans le code HTML

    Quelqu'un peut m'aider ?

    Voici mon code en entier (il s'agit d'un exercice tiré d'un livre):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
    <html>
    <head>
    	<title>Untitled</title>
    </head>
     
    <body>
    <?php
     
      if (isset($_POST['submit'])){
    	  $from = 'laurentplatteau@hotmail.com';
    	  $subject = $_POST['subject'];
    	  $text = $_POST['elvismail'];
    	  $output_form = false;
     
    	  echo (empty($subject));
    	  echo (empty($text));
     
     
    	  if (empty($subject) && empty($text)){
    	    echo 'here';
    		//We know both $subject AND $text are blank
    		echo 'You forgot the email subject and body text.<br />';
    		$output_form = true;
    	  }
     
    	  if (empty($subject) && (!empty($text))){
    	    echo 'You forgot the email subject.<br />';
    		$output_form = true;
    	  }
     
    	  if ((!empty($subject)) && empty($text)){
    	    echo 'You forgot the email body text.<br />';
    		$output_form = true;
    	  }
     
    	  if ((!empty($subject)) && (!empty($text))){
    	    $dbc = mysqli_connect('localhost','root','','elvis_store')
    		  or die('Error connecting to MySQL server.');
     
    	    $query = "SELECT * FROM email_list";
     
    	    $result = mysqli_query($dbc,$query)
    		  or die('Error querying database');
     
    	    while($row = mysqli_fetch_array($result)){
    	      $to = $row['email'];
    		  mail($to,$subject,$text,'From:'.$from);
    		  echo 'Message sent to: ';
    		  echo $row['first_name'].' '.$row['last_name'].
    		  ' : '.$row['email'].'<br />';
    	    }
     
    	    mysqli_close($dbc);
    	  }
      }
      else{
        $output_form = true;
      }
      if ($output_form){
    ?>
      <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
        <label for="subject">Subject of email:</label><br />
        <input id="subject" name="subject" type="text" size="30" value="<?php echo $subject;?>"/><br />
        <label for="elvismail">Body of email:</label><br />
        <textarea id="elvismail" name="elvismail" rows="8" cols="40">
    	<?php echo $text;?>
    	</textarea><br />
        <input type="submit" name="submit" value="submit" />
      </form>
    <?php
      }
    ?>
     
    </body>
    </html>
    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut en effet définir tes variables egalement dans le cas ou le formulaire n'a pas été validé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     if (isset($_POST['submit'])){
    .......
    }
    else {
        $subject = '';
        $text = '';
    }
    Au passage, quand tu fais des suites de conditions contradictoires, utilises elseif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      if (empty($subject) && empty($text)){
                      .......
    	  }
     
    elseif (empty($subject) && (!empty($text))){
                    .......
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2002
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 244
    Par défaut
    Merci beaucoup!

    Il me reste juste le problème avec le textarea
    Quand j'écris ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <textarea id="elvismail" name="elvismail" rows="8" cols="40">
    	<?php echo $text;?>
    	</textarea><br />
    Une tabulation s'affiche dans mon browser
    Ce qui m'empêche de bloquer l'envoi d'un mail car le champ est toujours considéré comme rempli...

    Y-a-t-il une raison rationnelle à ça?
    En fait, je code temporairement avec HomeSite++, est-ce ça la cause?
    Il considère mes indentations pour la lisibilité du code comme des tabulations?
    Je viens d'essayer avec NotePad++ et j'ai le même réultat.

    Voici mon code:
    (PS: J'ai bien noté pour les elseif)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
    <html>
    <head>
    	<title>Untitled</title>
    </head>
     
    <body>
    <?php
     
      if (isset($_POST['submit'])){
    	  $from = 'laurentplatteau@hotmail.com';
    	  $subject = $_POST['subject'];
    	  $text = $_POST['elvismail'];
    	  $output_form = false;
     
     
    	  if (empty($subject) && empty($text)){
    	    echo 'here';
    		//We know both $subject AND $text are blank
    		echo 'You forgot the email subject and body text.<br />';
    		$output_form = true;
    	  }
     
    	  if (empty($subject) && (!empty($text))){
    	    echo 'You forgot the email subject.<br />';
    		$output_form = true;
    	  }
     
    	  if ((!empty($subject)) && empty($text)){
    	    echo 'You forgot the email body text.<br />';
    		$output_form = true;
    	  }
     
    	  if ((!empty($subject)) && (!empty($text))){
    	    $dbc = mysqli_connect('localhost','root','','elvis_store')
    		  or die('Error connecting to MySQL server.');
     
    	    $query = "SELECT * FROM email_list";
     
    	    $result = mysqli_query($dbc,$query)
    		  or die('Error querying database');
     
    	    while($row = mysqli_fetch_array($result)){
    	      $to = $row['email'];
    		  mail($to,$subject,$text,'From:'.$from);
    		  echo 'Message sent to: ';
    		  echo $row['first_name'].' '.$row['last_name'].
    		  ' : '.$row['email'].'<br />';
    	    }
     
    	    mysqli_close($dbc);
    	  }
      }
      else{
        $output_form = true;
    	$subject = '';
    	$text = '';
      }
      if ($output_form){
    ?>
      <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
        <label for="subject">Subject of email:</label><br />
        <input id="subject" name="subject" type="text" size="30" value="<?php echo $subject;?>"/><br />
        <label for="elvismail">Body of email:</label><br />
        <textarea id="elvismail" name="elvismail" rows="8" cols="40">
    	<?php echo $text;?>
    	</textarea><br />
        <input type="submit" name="submit" value="submit" />
      </form>
    <?php
      }
    ?>
     
    </body>
    </html>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour moi c'est normal : ta tabulation est un caractère dans le textarea.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2002
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 244
    Par défaut
    Ok Merci pour ton aide.

    Effectivement si je retire l'indentation dans le code, il me retire la tabulation.

    A noter dans ma petite tête...

    Problème résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. la difference entre 2 vector remplie par des string
    Par zouhair_tdi dans le forum C++
    Réponses: 8
    Dernier message: 26/06/2014, 17h56
  2. Réponses: 3
    Dernier message: 28/11/2010, 19h56
  3. Réponses: 1
    Dernier message: 25/05/2009, 01h36
  4. Réponses: 0
    Dernier message: 27/06/2008, 13h02
  5. Réponses: 11
    Dernier message: 26/04/2005, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo