Page 1 sur 3

affichage des données de ma base

Posté : 03 août 2005, 10:07
par liseb
bonjour à tous,

je rencontre un petit probleme pour afficher les données de ma base en fait j'ai une table produit contenant tous les produits de la societe
je cherche tout simplement à les afficher mais il ya un merssage d'erreur
je vous remercie d'avance de l'aide apporté

Code : Tout sélectionner

$requete='select * from produit where nomproduit="'.$_POST['nompr'].'"'; $jeuResultat=mysql_query($requete,$connexion); $ligne=mysql_fetch_array($jeuResultat); while($ligne) { echo '<tr>'; echo '<td align="center"><img src="../images/'.$ligne["pdt_image"].'.jpg" /></td>'; echo '<td>'.$ligne["nomproduit"].'</td>'; // echo '<td>'.$ligne["pdt_designation"].'</td>'; // echo '<td align="right">'.$ligne["pdt_prix"].' €</td>'; // echo '</tr>'; $ligne=mysql_fetch_assoc($jeuResultat); } mysql_close();
et voici le message d'erreur


Notice: Undefined index: nompr in c:\program files\easyphp1-7\www\site\essai.php on line 14


voici un bout de code de ma table produit

Code : Tout sélectionner

CREATE TABLE `produit` ( `idproduit` int(11) NOT NULL auto_increment, `nomproduit` varchar(40) default NULL,

Posté : 03 août 2005, 10:16
par ouckileou
rien à voir avec la base de données

il te dit que "nom_pr" dans les variables POST n'existe pas
à cette ligne
$requete='select * from produit where nomproduit="'.$_POST['nompr'].'"'; 
(
 c'est mieux que [code] pour afficher du code ;))

donc il faut que tu testes si c'est bien cette variable que tu récupères, et si elle existe bien

Posté : 03 août 2005, 10:21
par liseb
merci de m'avoir répondu
je débute mais je pense que puisque c'est une variable et comme tu me l'as ça n'a rien à voir avec la base ,il devait quand meme l'accepter donc je pux lui donner le nom que je veux ou pas ?

Posté : 03 août 2005, 10:23
par ouckileou
tu peux lui donner le nom que tu veux oui ça aucun soucis

mais là tu récupères une variable d'un formulaire, envoyée en POST
donc tu utilises le tableau $_POST

donc si ce formulaire n'a pas été envoyé, la variable $_POST['nompr'] n'existe pas ;)

donc si ce code est susceptible d'être appelé même si le formulaire n'a pas été soumis (si code et formulaire sont sur la même page par exemple)
il faut que tu ne l'exécutes que si le formulaire a été envoyé

Posté : 03 août 2005, 10:31
par liseb
je pense avce tes explications ça devient plus clair, sauf que je ne recupére pas les valeurs d'un formulaire, il nya pas de formulaire
je viens de créer ma table "produit" et je cherche à afficher les données que j'ai saisies

peut etre que alors c'est le code qui est tout faux ?
en tout cas merci

Posté : 03 août 2005, 10:32
par Cyrano
Et quand ça sera réglé, il faudra compléter ceci aussi :
while($ligne)
Il en manque un bout...

Posté : 03 août 2005, 10:37
par liseb
j'ai changé la structure d ela boucle while et voici le nouveau code
 $requete='select * from produit where nomp="'.$_POST['nomproduit'].'"';
        $jeuResultat=mysql_query($requete,$connexion);
       
        while($ligne = mysql_fetch_array($jeuResultat) )
        {
            echo '<tr>';
            echo '<td align="center"><img src="../images/'.$ligne["nomimage"].'.jpg" /></td>';
            echo '<td>'.$ligne["nomproduit"].'</td>';
           
            
        }
    
   
mysql_close();
peut etre que c'est mieux comme ça

Posté : 03 août 2005, 10:44
par Cyrano
Syntaxiquement oui : est-ce que ça fonctionne ?

Posté : 03 août 2005, 10:48
par zeus
je ne recupére pas les valeurs d'un formulaire, il nya pas de formulaire
Si tu n'utilise pas de formulaire, pourquoi est-ce que tu utilise une variable $_POST ? Selon toi, qu'est censée faire cette variable ?

Posté : 03 août 2005, 11:03
par liseb
c'est vrai je n'avais pas suffisamment réfléchi
j'ai vu mon erreur et je vous remercie tous

Posté : 04 août 2005, 09:41
par liseb
bonjour,
je rencontre un nouveau probleme:je m'explique
dans la table produit pour certains produits le champ description est vide et pour d'autre nom

je voudrais alors que quand le champ description est vide qu'il ne l'affiche pas pour ne rien mettre derriere

j'ai modifié mon code mais il m'affiche le message Parse error: parse error, unexpected '.' in c:\program files\easyphp1-7\www\sitef\essaia.php on line 23


et voici le bout de code
<table >
  		<td>
    		<tr>Image</tr>	
    		<td>Nom Produit <? echo '<tr><td>'.$ligne["nomproduit"].'</td></tr>';?></td>
		
    
			<? if (.$ligne["description"!=""].)?>
				{
					<td>Description <? echo '<tr><td>'.$ligne["description"].'</td></tr>';?></td>
			<? 	}?>
		</td>
	</table>
	<?
}
mysql_close();

?>
merci d'avance

Posté : 04 août 2005, 09:49
par ouckileou
quand tu un message "Erreur ligne 23", si tu postes le bout de code qui correspond, ce serait sympa de marquer la ligne 23, nous on ne sait pas laquelle c'est :roll:

mais bon à première vue cette ling epose problème :
<? if (.$ligne["description"!=""].)?> 
les points sont en trop et le test est mal fait
de plus, utilise plutôt la balise <?php que <?
et tu fermes la balise PHP avant l'accolade ouvrante de ta condition
<?php if ($ligne["description"] != "")

Posté : 04 août 2005, 09:54
par Cyrano
Déjà ton code html serait sérieusement à revoir, on ne met pas un <tr><td> directement dans un <td>.

Ensuite tu as un point juste avant ta variable dans le if() et dans ce if, le crochet de fermeture de l'index n'est pas à sa place :
proposition de corrigé:
<table >
  <tr>
    <td>Image</td> 
    <td>Nom Produit <? echo($ligne["nomproduit"]);?></td>
    <?
    if ($ligne["description"]! = "")
    {
?>
    <td>Description <? echo($ligne["description"]);?></td>
<?
    }
    else

    {
?>
    <td>&nbsp;</td>
<?
    }
?>
  </tr>
</table>
<?
}
mysql_close();
?>
Un minimum d'attention est requis pour programmer, les langages informatiques tolèrent mal la fantaisie...

Posté : 04 août 2005, 10:26
par liseb
merci
j'ai pris compte de vos remarques sans rancune ni rien du tout et ça m'a beaucoup servi, j'ai fini par reussir ce que je voulais faire
merci encore

Posté : 04 août 2005, 10:28
par ouckileou
j'ai pris compte de vos remarques sans rancune ni rien du tout
ben ouais heureusement encore :lol:

ce sont des remarques pour s'améliorer, pas une engueulade ;)