Undefind variable dans PHP

galaxico8 Messages postés 108 Statut Membre -  
Jeylo Messages postés 196 Statut Membre -
Bonjour,
j'ai un formulaire dans une page.php que j'utilise pour un moteur de recherche, mais l'hors de lancement de la page ça me donne :
"Notice: Undefined index: ville in D:\Projet\EasyPHP 2.0b1\www\Agence Essaouira\offres1.php on line 288"
et ça pour tous les variable que j'ai déclaré dans le script php, mais dès que je clique sur rechercher ça marche et les messages disparaissent.
voici mon script php :
<?php
include("testconnexion.php");
include("connexion.php");

$ville = $_POST['ville'];
$transaction = $_POST['transaction'];
$type = $_POST['type'];
$prixmin = $_POST['prixmin'];
$prixmax = $_POST['prixmax'];
$piecemin = $_POST['piecemin'];
$piecemax = $_POST['piecemax'];
$chambremin = $_POST['chambremin'];
$chambremax = $_POST['chambremax'];

$query = "SELECT biens.*,images.url,details.detail
FROM biens,images,details
WHERE (biens.ville LIKE '".$ville."' AND biens.typetransaction LIKE '".$transaction."' AND biens.type LIKE '".$type."'
AND biens.prix between '".$prixmin."' AND '".$prixmin."'
AND biens.piece between '".$piecemin."' AND '".$piecemax."'
AND biens.chambre between '".$chambremin."' AND '".$chambremax."')
AND (biens.id = images.id AND images.id = details.id)";

$result = mysql_query($query);

// on compte le nombre de livre contenu dans la base de données
$nb_biens = mysql_num_rows($result);
if ($nb_biens == 0)
{
echo('<script> alert("y a aucun bien correspendant à vos critères"); </script>');
}
else {
while($row = mysql_fetch_row($result))
{
$ref = $row[1];
$typetransaction = $row[2];
$type = $row[3];
$piece = $row[4];
$chambre = $row[5];
$surface = $row[6];
$salledeau = $row[7];
$toilette = $row[8];
$cuisine = $row[9];
$chauffage = $row[10];
$garage = $row[11];
$interphone = $row[12];
$parking = $row[13];
$soussol = $row[14];
$prix = $row[15];
$adresse = $row[16];
$ville = $row[17];
$annonce = $row[18];
$photo = $row[19];
$lien = $row[20];
echo '
<hr width="550" size="3">
<table width="601" border="0">

<tr>
<th width="248" rowspan="6" align="center" valign="middle" scope="col"><a href="'.$lien.'"><img src="'.$photo.'" width="250" height="239"></a></th>
<td width="343" height="21" valign="top"><div style="font-family:Arial, Helvetica, sans-serif" style="font-size:xx-small">'.$typetransaction.' '.$type.'</div></tr>
<tr>
<td height="21" valign="top"><div style="font-family:Arial, Helvetica, sans-serif" style="font-size:xx-small">Situé(e) à : '.$adresse.'</div></tr>
<tr>
<td height="9"></tr>
<tr>
<td height="120" valign="top"><div style="font-family:Arial, Helvetica, sans-serif" style="font-size:xx-small">'.$annonce.'</div></tr>
<tr>
<th height="21" align="left" valign="top"><div style="font-family:Arial, Helvetica, sans-serif" style="font-size:xx-small">Réf : '.$ref.'</div></th>
</tr>
<tr>
<th height="21" align="left" valign="top"><div style="font-family:Arial, Helvetica, sans-serif" style="font-size:xx-small">Prix : '.$prix.'</div></th>
</tr>
</table>
';
}}
// Deconnexion de la base de donnees
mysql_close();

?>
A voir également:

7 réponses

Jeylo Messages postés 196 Statut Membre 25
 
Bonjour,

Je suppose que dans la page formulaire précédente, tu n'as pas mis tes 'inputs' dans les balises
<form method post> ... </form>.
0
Alain_42 Messages postés 5413 Statut Membre 894
 
Non c'est que à partir de php5 tu ne peux pas faire comme ça:

<?php
include("testconnexion.php");
include("connexion.php");

$ville = $_POST['ville'];
$transaction = $_POST['transaction'];
$type = $_POST['type'];
$prixmin = $_POST['prixmin'];
$prixmax = $_POST['prixmax'];
$piecemin = $_POST['piecemin'];
$piecemax = $_POST['piecemax'];
$chambremin = $_POST['chambremin'];
$chambremax = $_POST['chambremax'];


il faut tester que le formulaire soit posté

<?php
include("testconnexion.php");
include("connexion.php");

isset($_POST['ville']) ? $ville =$_POST['ville'] : $ville ="" ; // si posté   $ville = valeur postée sinon vide
isset($_POST['transaction']) ? $transaction = $_POST['transaction'] : $transaction ="" ;
etc... idem pour toutes
0
galaxico8 Messages postés 108 Statut Membre 2
 
pour le formulaire les inputs sont bien misent, mais sur un autre formulaire/php où j'ai le même souci j'utilise :
if(! isset($_POST['ville']) ou bien j'utilise if(empty($_POST['ville']) ), ça marche le script fait bien le contrôle si les champs ne sont pas remplis il me donne un message que j'ai programé, mais l'hors de lancement de la page ça me met les Notice: Undefined index: ville in D:\Projet\EasyPHP 2.0b1\www\Agence Essaouira\offres1.php on line 285
et dès que je clique sur le bouton les Notice disparaissent...???
0
chupa23 Messages postés 152 Statut Membre 28
 
Tout a fait normal , fait un If pour dire " si le formulaire est envoyé on affiche la suite".
La envoyer ou pas , il prend en compte tout le php ,enfin ça dépend , le formulaire est bien sur la même page ?
Test si il est envoyé | si oui -> tu recup tes variables et tu affiche ton tableau.
|si non -> tu ne fais rien(ou affiche un truc du genre "rentrez les informations").
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jeylo Messages postés 196 Statut Membre 25
 
Dans le cas que tu nous présentes, tu as mis les $_POST en début de page, sans savoir si les champs ont été remplis.
Il faudrait que tu testes l'existence de chaque index avec if(empty($_POST)) avant de l'affecter à une variable.

Par contre, s'il y a erreur sur un index dont le champs est rempli, c'est que tu as un problème de balise <form> dans ton formulaire.
0
galaxico8 Messages postés 108 Statut Membre 2
 
ça marche il fallait juste un petit peu de logique...j'ai effectué le test avec empty et après j'ai affecté les valeurs saisi aux variables et ça a marché...merci bcp Jeylo et chupa23 vous m'avez sauvé la vie si vous voulez que je mette le script dites le moi...
0
Jeylo Messages postés 196 Statut Membre 25
 
Cool !

Je reste à l'écoute if you need.

Bon courage.
0
galaxico8 Messages postés 108 Statut Membre 2
 
merci bcp c'est gentil, en fet j'ai +eurs question mais je veux pas vous embêter trop, je veux pouvoir utiliser des cases à cocher dans mon moteur de recherche ???
la question que je me pose c'est comment le script php va savoir que la case et cochée ou non et comment va utiliser sa valeur ???
0
Jeylo Messages postés 196 Statut Membre 25
 
D'acc, tu es en phase d'apprentissage..

Va voir là, https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql

Le site est bien fait, il te donneras un coup de pouce pour démarrer.
0