Notice: Undefined index [Résolu/Fermé]

Signaler
Messages postés
117
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2016
-
Messages postés
117
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2016
-
Bonjour,



J'ai la célèbre "Notice: Undefined index", sur mon code:


//appel de la page de connexion à la base de données
include ('../conf.php');
	
						
//le nom de la table
$tablename = 'test';
						

		$num = $_POST['num'];
		$nom= $_POST['nom']; 
		$nom2= $_POST['nom2']; 
		$num2 = $_POST['num2'];
		$num3 = $_POST['num3'];
			//on regarde si les cases sont vides ou remplies
			if ($num=="" AND $nom=="")
			{
			$select = "SELECT * FROM test WHERE nom2='$nom2' AND num2='$num2' AND num3='$num3' ORDER BY num DESC";
			}
				else if ($num=="" AND $nom2=="")
				{
				$select = "SELECT * FROM test WHERE nom='$nom' AND num2='$num2' AND num3='$num3' ORDER BY num DESC";
				}

.
.
.
.

J'ai essayé en mettant ça au dessus, en dessous, au milieu des variables :
if (isset($_POST['num']) && ($_POST['nom']) && ($_POST['nom2']) && ($_POST['num2']) && $_POST['num3'])



Fin bref j'ai essayé tous les if (isset($_POST['']) à tous les endroits possibles, mais rien n'y fait, je ne trouve pas. Est-ce qu'une âme charitable pourrait m'expliquer comment initialiser ces saletés de champs.

Merci beaucoup,
Cordialement
Evengeline

3 réponses

Bonjour,
Si tu récupères tes données en POST, tu dois avoir les champs de ton formulaire nommés ainsi (name) dans le code HTML :
- num
- nom
- nom2
- num2
- num3
Vérifies que c'est bien le cas car num est différent de Num ou encore de NUM.
Ensuite, pour tester que les valeurs sont bien transmises au script, fait un print_r($_POST) au tout début de ton script, dès que tu auras trouvé le problème tu pourras supprimer la fonction print_r().
Messages postés
117
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2016
3
J'ai essayé de mettre le print_r($_POST) comme tu dis, mais il me dis toujours qu'il y a une erreur sur la ligne du dessous où je l'ai placé.
J'ai également vérifié les noms des champs qui sont corrects.

Voici le code qui joue peut-être sur cette erreur, y vois-tu des fautes? j'ai pourtant vérifié et revérifié


Le formulaire:


<div id="menu">   
    

<form method="post" name="rechercheAvancee" action="">     
<!--Requiert les infos de connexion à la base de données-->  
<?php  
require '../conf.php';            
?>   
        
<div id= "bloc-1">  
<p>  
    <label for="num">Numero </label>  
    <input type="text" name="num" value="" /></br>  
    <label for="nom">Nom </label>  
    <input type="text" name="nom" value=""/></br>  
    <label for="nom2">Nom2</label>  
    <input type="text" name="nom2" value=""/></br>  
    <label for="num2">Num2</label>  
    <input type="text" name="num2" value=""/></br>  
    <label for="num3">Num3 </label>  
    <input type="text" name="num3" value="" /></br>  
        
    <!--Validation pour afficher ensuite la page sur la droite de l'écran-->  
    <input value="Valider" type="submit" name="bouton"/>  
</p>  
</div>   
       
</form>




La partie qui affiche les champs voulus grâce à l'input de validation "bouton" définit au-dessus.

<div id="menu2">  
          
<form method="post">  
<div id="affiche2">  
  <?php if(isset($_POST['bouton']))  
  {  
  include('affichageArticle.php');/*affichageArticle.php  est l'affichage du tableau d'après les paramètres entrés par l'utilisateur*/  
  }  
  ?>        
</div>    
</form>   
       
</div>







Ensuite la page affichageArticle.php où j'ai le code présenté plus haut:

<?php  
//appel de la page de connexion à la base de données  
include ('../conf.php');       
        
//le nom de la table  
$tablename = 'test';    
        
  $num = $_POST['num'];  
  $nom= $_POST['nom'];   
  $nom2= $_POST['nom2'];   
  $num2 = $_POST['num2'];  
  $num3 = $_POST['num3'];  
  //on regarde si les cases sont vides ou remplies  
  if ($num=="" AND $nom=="")  
  {  
  $select = "SELECT * FROM test WHERE nom2='$nom2' AND num2='$num2' AND num3='$num3' ORDER BY num DESC";  
  }  
   else if ($num=="" AND $nom2=="")  
   {  
   $select = "SELECT * FROM test WHERE nom='$nom' AND num2='$num2' AND num3='$num3' ORDER BY num DESC";  
   }  
   else if ($num=="" AND $num2=="")  
   {  
   $select = "SELECT * FROM test WHERE nom='$nom' AND nom2='$nom2' AND num3='$num3' ORDER BY num DESC";  
   }  
   else if ($num=="" AND $num3=="")  
   {  
   $select = "SELECT * FROM test WHERE nom='$nom' AND nom2='$nom2' AND num2='$num2' ORDER BY num DESC";  
   }  
   .  
   .  
   .  
   .  
else  
{  
$select = "SELECT * FROM test WHERE nom2='$nom2' AND num='$num' AND nom='$nom' AND num2='$num2' AND num3='$num3' ORDER BY num DESC";  
}  


$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error());  
$total = mysql_num_rows($result);  


// on affiche le résultat  
if($total) {  
// debut du tableau  
echo '<table bgcolor="#FFFFFF">'."\n";  
// première ligne on affiche les données dans 2 colonnes  
echo '<tr>';  
echo '<td bgcolor="#0099aa"><b><u>num</u></b></td>';  
echo '<td bgcolor="#0099aa"><b><u>nom</u></b></td>';  
echo '<td bgcolor="#0099aa"><b><u>nom2</u></b></td>';  
echo '<td bgcolor="#0099aa"><b><u>num2</u></b></td>';  
echo '<td bgcolor="#0099aa"><b><u>num3</u></b></td>' ;  
echo '</tr>'."\n";  
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.      
while($row = mysql_fetch_array($result)) {  
 echo '<tr>';  
 echo '<td bgcolor="#ADD8E6">'.$row["num"].'</td>';  
 echo '<td bgcolor="#ADD8E6">'.$row["nom"].'</td>';  
echo '<td bgcolor="#ADD8E6">'.$row["nom2"].'</td>';  
 echo '<td bgcolor="#ADD8E6">'.$row["num2"].'</td>';  
 echo '<td bgcolor="#ADD8E6">'.$row["num3"].'</td>';  
 echo '</tr>'."\n";  
 }  
echo '</table>'."\n";  
// fin du tableau.  
}  

else echo 'Pas d\'enregistrements dans cette table...';  

// on libère le résultat  
mysql_free_result($result);  

?>



il me sort les erreurs et ne prend pas en compte mon tableau puisqu'il me dit "pas d'enregistrements dans la table"
Pourtant la table est bien remplie puisque j'ai une partie qui affiche tout et ca marche niquel.
Messages postés
117
Date d'inscription
mercredi 20 octobre 2010
Statut
Membre
Dernière intervention
21 octobre 2016
3
Bon bon, ja'i changé de solutions, mon idée était impossible avec beaucoup de champs à prendre en compte, voici une solution pour les prochains:

Je rappelle le but de ce code: Récupérer les paramètres d'un formulaires pour les afficher dans un tableau


<?php

//appel de la page de connexion à la base de données
	include ('../conf.php');
						
	//le nom de la table
	$tablename = 'article';

						
		$num= $_POST['num'];
		$nom= $_POST['nom']; 
		$nom2= $_POST['nom2']; 
		$num2= $_POST['num2']; 
		$num3= $_POST['num3']; 
		$param = '';
						

			if ($num!='')
			{
				$param .=  ' AND num=  ' . $num . '  ';
			}
						 
			if ($nom!='')
			{
				$param .=  ' AND nom=  ' . $nom . '  ';
			}

			if ($nom2!='')
			{
				$param .=  ' AND nom2=  ' . $nom2 . '  ';
			}
                        .
                        .
                        .
                        .

                
               $select = 'SELECT * FROM article WHERE 1=1 ' . $param;
	       $result = mysql_query($select) or die ('Erreur : '.mysql_error());
	       $total = mysql_num_rows($result);
               ?>



Pour afficher:



<table class="affichage" border="2px" cellpadding="1" cellspacing="0" bgcolor="#FFFFFF">
		<tr border="0">
			<th>Num</th>
			<th>Nom</th>
			<th>Nom2</th>
			<th>Num2</th>
			<th>Num3</th>
		</tr>
												
		<?php 
							
			$num = '';
			$nom = '';
			$nom2 = '';
			$num2 = '';
			$num3 = '';
	<!--script permettant de colorier une ligne sur 2-->
				
			$cpt=1;
			while( $row=mysql_fetch_assoc($result)){
				if($cpt % 2!=0)
						echo '<tr class="ligneimpair">';
				else
						echo '<tr>';
								
			?>
							
			  <td border="0"><?php echo $row['num'] ?></td>
			  <td border="0"><?php echo $row['nom'] ?></td>
			  <td border="0"><?php echo $row['nom2'] ?></td>
			  <td border="0"><?php echo $row['num2'] ?></td>
			  <td border="0"><?php echo $row['num3'] ?></td>
			</tr>
			
                <?php
		    $cpt++;
			}
		?>
	
</table>




Voilà, si vous avez besoin de détails n'hésitez pas
bye