Notice: Undefined variable: frm in

Eléphant du PHP | 81 Messages

11 mai 2011, 12:42

bonjour

Je voudrais savoir à quoi correspond cette erreur.
Voici mon code ou se trouve les lignes 156 160 161 spécifiées dans le message.
<?php $menu="carnet";
require_once "include/config.inc.php";
?>
<?php require_once "head.inc.php"; ?>
<?php


if (sizeof($_POST) > 0) 
{
      $frm = $_POST;

      $message_erreur = valide_form($frm, $erreurs);

        if (empty($message_erreur)) 
		{
               $id_site=insere_carnet($frm);

				require_once ("include/fct_upload.inc.php");
			
				if (isset($_FILES['fichier'])||!empty($_FILES['fichier'])) $fichier = $_FILES['fichier'];
				if ( $fichier && $fichier != "none")
				{		
					$rep=upload($destDir,$fichier);
					if ($rep[0]== TRUE)
					{
						$fichier=rename_fichier($frm['prenom'],$rep[1]);
					
						$sql = "UPDATE carnet SET photo='".$fichier."' WHERE id='".$id_site."' ";
						assert ('mysql_query($sql)');
						$qid = mysql_query($sql);
						if (!$qid)     die('Requ�te invalide : ' . mysql_error());

						}
					}
				    
				   afficher_enregistrement_succes();
					mysql_close();
				   include("footer.inc.php");
				   exit;
        }
        
}
else
	$_SESSION['textCaptcha']="";

function valide_form(&$frm, &$erreurs) 
{
Global $connex;
 
    $erreurs = array();
    $msg = array();
    
	if ($_SESSION['textCaptcha'] != $frm['textCaptcha']) 
	{
		$erreurs['textCaptcha'] = true;
		$msg['textCaptcha'] = "Erreur de saisie";
	}
	if (empty($frm['prenom']) ) 
	{
		$erreurs['prenom'] = true;
		$msg['prenom'] = "Il manque le pr�nom";
	}

	$email=htmlentities($_POST['email'], ENT_QUOTES,'UTF-8');

	if (empty($email)) 
	{
		$erreurs['email'] = true;
		$msg['email'] = "Absence d'email";
	}
	elseif (!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-_.]?[[:alnum:]])*.([a-z]{2,4})$`',$email)) 
	{
		$erreurs['email'] = true;
		$msg['email'] = " Mauvais format d'Email";
	}
	elseif  ((mysql_num_rows(mysql_query("SELECT 1 FROM carnet WHERE email='".$frm['email']."' AND iduser='".$_SESSION['iduser']."'")) > 0))
	{
		$erreurs['email'] = true;
		$msg['email'] = "L'email existe d�j�";
	} 
	
    return $msg;
}

function insere_carnet(&$frm)
{
Global $connex;

		$sql = "
		INSERT INTO carnet (
		        `iduser`
		        , `carnetclef`
		        , `nom`
		        , `prenom`
		        , `adresse1`
		        , `adresse2`	
		        , `codepostal`	
		        , `ville`	
		        , `tel`	
		        , `portable`	
		        , `email`	
		) VALUES (
		        '".$_SESSION['iduser']."'
		        ,'".recup_clef()."'
		        ,'".strtoupper(htmlentities($frm['nom']))."'
		        ,'".ucfirst( strtolower(htmlentities($frm['prenom'])))."'
		        ,'".htmlentities($frm['adresse1'])."'
		        ,'".htmlentities($frm['adresse2'])."'
		        ,'".$frm['codepostal']."'
		        ,'".htmlentities($frm['ville'])."'
		        ,'".htmlentities($frm['tel'])."'
		        ,'".htmlentities($frm['portable'])."'
		        ,'".$frm['email']."'
		 )";
		$qid = mysql_query($sql);
		
		if(! $qid ) die ('Requ�te invalide : ' . mysql_error());       
 		$id_carnet = mysql_insert_id();

        $sql = "
        INSERT INTO carnet_details (
                `idcarnet`
                , `idrubrique`	
                , `observation`	
       	) VALUES (
                '".$id_carnet."'
                ,'".$frm['idrubrique']."'
                ,'".htmlentities($frm['observation'])."'
         )";
 	    $qid = mysql_query($sql);
		if(! $qid ) die ('Requ�te invalide : ' . mysql_error());       


         return $id_carnet;     

}

function afficher_enregistrement_succes()
{
	echo "<h1><center>";
	echo "Enregistrement a �t� correctement enregistr�.";
	echo "</center></h1>";
}



      
?>
<html><body>
Ajouter un contact dans le carnet : 
<form enctype="multipart/form-data" name="fcoord" method="post" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">

<table width="500" border="0" cellspacing="2" cellpadding="2">
 <tr><td align=right>
   Genre :
 </td><td> 
 	<?php
 	echo "<select name=\"genre\">";
  	echo ligne_selected(" ","-1",$frm['genre']);
 	echo ligne_selected("Monsieur","Monsieur",$frm['genre']);
 	echo ligne_selected("Madame","Madame",$frm['genre']);
 	echo ligne_selected("Mademoiselle","Mademoiselle",$frm['genre']);
	echo "</select>";
 	?>
 </td></tr>
  <tr> 
    <td align=right>Nom : </td>
    <td><input name="nom" type="text" value="<?php if (isset($frm['nom'])) echo stripslashes($frm['nom']); ?>"></td>
  </tr>
  <tr> 
    <td align=right>Prenom : </td>
    <td><input name="prenom" type="text" value="<?php if (isset($frm['prenom'])) echo stripslashes($frm['prenom']) ?>">
        * <?php if (isset($erreurs['prenom'])) echo $message_erreur['prenom'] ?></td>
  </tr>
  <tr> 
    <td align=right>Adresse : </td>
    <td><input name="adresse1" type="text"  value="<?php if (isset($frm['adresse1'])) echo stripslashes($frm['adresse1']); ?>"></td>
  </tr>
  <tr> 
    <td align=right>&nbsp; </td>
    <td><input name="adresse2" type="text" value="<?php if (isset($frm['adresse2'])) echo stripslashes($frm['adresse2']); ?>"></td>
  </tr>
  <tr> 
    <td align=right>Code postal : </td>
    <td><input name="codepostal" type="text" size="5" maxlength="5" value="<?php if (isset($frm['codepostal'])) echo stripslashes($frm['codepostal']); ?>"></td>
  </tr>
  <tr> 
    <td align=right>Ville : </td>
    <td><input name="ville" type="text" size="30" maxlength="30" value="<?php if (isset($frm['ville'])) echo stripslashes($frm['ville']); ?>"></td>
  </tr>
 <tr> 
    <td align=right>Email : </td>
    <td><input name="email" type="text" value="<?php if (isset($frm['email'])) echo stripslashes($frm['email']); ?>">
       * <?php if (isset($erreurs['email'])) echo $message_erreur['email'] ?></td>
  </tr>
  <tr> 
    <td align=right>T&eacute;l&eacute;phone : </td>
    <td><input name="tel" type="text" value="<?php if (isset($frm['tel'])) echo stripslashes($frm['tel']); ?>"></td>
  </tr>
  <tr> 
    <td align=right>Portable : </td>
    <td><input name="portable" type="text" value="<?php if (isset($frm['portable'])) echo stripslashes($frm['portable']); ?>"></td>
  </tr>
  <tr> 
    <td align=right>Photo : </td>
    <td> 
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $taille_max; ?>" >
<input name="fichier" type="file" >
</td>
  </tr>
  <tr> 
    <td colspan=2><br /><hr><br /></td>
  </tr> 
  <tr> 
    <td align=right>Rubrique : </td>
    <td> 
   
    
	<?php
	
	$sql="SELECT id,iduser,nom FROM rubrique WHERE iduser='".$_SESSION['iduser']."' ORDER BY nom";
	assert ('mysql_query($sql)');
	$rubrique=mysql_query($sql);
	if (!$rubrique)     die('Requ�te invalide : ' . mysql_error());
	if (mysql_num_rows($rubrique)!=0)
	{
		echo "<select name=\"idrubrique\">";
		echo ligne_selected(" ","-1","");
		while( $list=mysql_fetch_object( $rubrique) )       
		{
		 	echo ligne_selected($list->nom,$list->id,'');
		}
		echo "</select>";
	}   
	mysql_free_result($rubrique);
	mysql_close();
	?>
    </td>
  </tr>
 <tr> 
    <td align=right>Observation : </td>
    <td><textarea name="observation" cols="40" rows="3"><?php if (isset($frm['observation'])) echo stripslashes($frm['observation']); ?></textarea></td>
  </tr>
   <tr> 
    <td colspan=2><br /><hr><br /></td>
  </tr> 
   <tr> 
    <td>Captcha</td> 
	<td><img src="include/fct_captcha.inc.php">
 <input type='text' name='textCaptcha' size='10'> * 
 <?php if (isset($erreurs['textCaptcha'])) echo $message_erreur['textCaptcha'] ?></td>
  </tr> 
   <tr> 
    <td colspan=2><br /><hr><br /></td>
  </tr> 
  <tr> 
    <td colspan="2" align=center>
        <input type="submit" name="action" value="Confirmer">
        <input type="submit" name="action" value="Annuler">
      </td>
  </tr>
</table></form>
</body></html>
<?php require ("footer.inc.php"); ?>

Les lignes citées
<?php
 	echo "<select name=\"genre\">";
  	echo ligne_selected(" ","-1",$frm['genre']);   <--------------------------------
 	echo ligne_selected("Monsieur","Monsieur",$frm['genre']);  <--------------------------------
 	echo ligne_selected("Madame","Madame",$frm['genre']);  <--------------------------------
 	echo ligne_selected("Mademoiselle","Mademoiselle",$frm['genre']);  <--------------------------------
	echo "</select>";
 	?>

ViPHP
xTG
ViPHP | 7331 Messages

11 mai 2011, 13:26

$frm provient en fait de $_POST donc au chargement de ta page rien n'a été envoyé ce qui est normal de déclencher cette erreur.
Il faut toujours vérifier les valeurs avant de les utiliser.

Code : Tout sélectionner

if( isSet($frm['genre']) )   echo ligne_selected(" ","-1",$frm['genre']); 

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

11 mai 2011, 13:28

yop,

le message est clair tes variables n'existe pas et c'est vrai quand _POST est un tableau vide ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 81 Messages

11 mai 2011, 14:10

C'est normal que _$Post soit vide puisque je n'ai encore rien saisi dans les cases.
J'ai pas tout compris mais j'ai rajouté le code si dessus et cela fonctionne

Merci

ViPHP
ViPHP | 2577 Messages

11 mai 2011, 14:30

Bonjour,

Oui, c'est normal, ce qui n'est pas normal, c'est d'utiliser une variable que tu n'a pas initialisée. Ce mécanisme est surtout utile pour détecter les fautes de frappe qui entrainent parfois des bugs très difficiles à retrouver comme un O à la place d'un 0.

Un bonne usage veut que l'on affecte une valeur à une variable avant de l'utiliser.