8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je me suis remis à monter un site pour une association et je suis bloqué sur le non affichage de données prises sur une base Mysql.
J'ai repris un ancien code (de 2 ans) et l'ai adapté...

Voici l'appel à la base dans body :

<?php 
include('connect.php');
$sql = "SELECT * FROM `" . $DB_TABLE_NAME . "`";
$req = mysql_query($sql) OR die(mysql_error());
while ($user = mysql_fetch_assoc($req))
?>


Voici le code pour l'affichage (mais qui ne s'affiche pas):

<td><p align="center"><?php echo $user['prix_10']; ?> € par mois pour 2 séances par mois</p></td>


Si je mets le code d'affichage dans le bloc php de l'appel de la base cela m'affiche la valeur correctement et aucun affichage ailleurs dans la page !

J'espère que je me suis bien expliqué et merci d'avance pour vos réponses avisées.

@+

Naje83
Salut,

si rien ne s'affiche c'est peut-être tout simplement parce que la requête ne retourne aucun résultat. D'ailleurs c'est assez "étrange" d'avoir comme nom de variable $DB_TABLE_NAME puisque par convention on utilise les noms en majuscules pour les constantes comme dans
define('DB_TABLE_NAME', 'ma_table');
echo '<p>'.DB_TABLE_NAME.'</p>';
Donc le plus simple serrait de debugger en affichant le contenu de $sql avant d'effectuer la requête et de lancer la requête obtenue directement dans phpMyAdmin.

Au passage l'attribut "align" est obsolète et il est préconisé de gérer l'affichage via les css :
<p style="text-align:center;">
Voir également comment choisir un doctype .
Merci pour ta réponse.

J'arrive à afficher les données si je reste dans le premier bloc php celui où se trouve l' "include" donc cela fonctionne mais dés que je veux mettre l' "echo" en dehors nada !

Voici le code complet de la page :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Harmonie Gym tao</title>
    
<style type="text/css">
<!--
body {
	font: 100% Verdana, Arial, Helvetica, sans-serif;
	background: #666666;
	
	margin: 0; /* il est conseillé de mettre à zéro la marge et le remplissage de l'élément body, pour tenir compte des différentes valeurs par défaut des navigateurs */
	padding: 0;
	text-align: center; /* ce paramétrage centre le conteneur dans les navigateurs IE 5.x. Le texte est ensuite aligné à gauche (valeur par défaut) dans le sélecteur #container */
	/*color: #000000;*/
	color: white;
}
a{
	color: white;
}
h1{
   
   color:white;
   text-align: center;
   margin-bottom:60px;
   font-size: 42px;
  }
#s_titre{
  text-align: center; 	
}
#menu{
	position: relative;/*centrage du menu*/
    left: 18px;
	right: 0px;
    width:105%;
    margin-left: auto;
	
	}  
.oneColLiqCtr #container {
	width:70%;  /* ce paramétrage crée un conteneur dont la largeur est 80 % de celle du navigateur */
	/*background: #FFFFFF;*/
	background-color:#c55399;
	margin: 0 auto; /* les marges automatiques (et dotées d'une largeur positive) centrent la page */
	border: 1px solid #000000;
	text-align: left; /* ce paramétrage annule le paramètre text-align: center de l'élément body. */
}
.oneColLiqCtr #mainContent {
	padding: 0 20px; /* ne pas oublier que le remplissage est l'espace à l'intérieur du cadre de l'élément div, alors que la marge est l'espace à l'extérieur de celui-ci */
}
#apDiv1 {
	position:absolute;
	width:173px;
	height:102px;
	z-index:1;
	left: 272px;
	top: 10px;
}
#tableau{
	
	margin-left: auto;   
	margin-right: auto;   
	width: 760; /* largeur obligatoire pour être centré */ 
	
}
#apDiv2 {
	position:absolute;
	width:115px;
	height:109px;
	z-index:1;
	left: 275px;
	top: 10px;
}
-->
</style>
</head>

<body class="oneColLiqCtr">
<div id="container">
<?php 
include('connect.php');
$sql = "SELECT * FROM `" . $DB_TABLE_NAME . "`";
$req = mysql_query($sql) or die(mysql_error());
while ($user = mysql_fetch_assoc($req))
?>
   <div id="mainContent">
    <h1>TAO</h1>
    <h2 id="s_titre">Le TAO apprend à utiliser le Chi interne.</h2>
    <p></p><p></p><p></p>
    <p>Selon l'enseignement de Maître MANTAK CHIA le Tao ou "la voie" vers la santé, la revitalisation, la longévité.</p>
    <p>A l'origine de la Médecine Chinoise et des Arts Martiaux.</p>
    
    <p>C'est l'art de cultiver la douceur en acquérant la force, l'activation de la chimie subtile interne pour éveiller la sagesse du corps.</p>

<h3>Agréable et amusant, comme dit Maître MANTAK Chia :<p>"C'est tellement simple, il suffit de sourire".</p></h3><p></p>
    <p>Les exercices de Tao se pratiquent debout, assis ou couché, ils alternent phases d'activité et de détente. Durant cette dernière, le Chi est amené vers des zones spécifiques.</p>
    <p>A travers ce processus, l'énergie physique du corps est transformée en énergie vitale pure.</p>

<table id="tableau" width="573" border="1">
  <tr>
    <td><p align="center">1° et 3° jeudis au Dojo Esprit Zen</p></td>
  </tr>
  <tr>
    <td><p align="center">2° mercredi du mois à La Garde</p></td>
  </tr>
  <tr>
    <td><p align="center"><?php echo $user['prix_10'];?> € par mois pour 2 séances par mois</p></td>
  </tr>
  <tr>
    <td><p align="center">ou en association avec d'autres activités ou trimestriel  <?php echo $user['prix_9'];?> €</p></td>
  </tr>
</table>
<p></p><p></p><p></p>
<div id="apDiv2"><img src="images/tao.png" width="111" height="105" /></div>
<hr />
 <p>Renseignez-vous auprès de Liliane DELOUES 06 62 40 46 78 <a href="mailto:liliane.deloues@wanadoo.fr">liliane.deloues@wanadoo.fr</a></p>
<hr />
  <!-- fin de #mainContent --></div>
  
<!-- fin de #container --></div>
 

</body>
</html>


Encore merci

@+

Naje
while ($user = mysql_fetch_assoc($req)) 


sans bloc ( un bloc est defini par un delimiteur ouvrant { et un delimiteur fermant } ) derriere.

le while du coup n'effectue que la premiere instruction php qu'il rencontre et ne boucle qu'elle.

(plus le texte html entre les deux normalement)

et il n'affiche le prix_9 que pour la derniere valeur de $user.

hors $user vaut null puisqu'on est sorti du while.

voulais-tu faires une boucle pour afficher plusieurs fois ton texte?

sinon ne fais pas un while mais un if. et mets bien les delimiteurs.
edit:
cela resterait bizarre. une seule ligne dans une table pourquoi ne pas faire un tableau.
Modifié par CPascal (27 Mar 2010 - 18:45)
Oups !! Smiley confused

Cela vraiment trop longtemps...il faut que je m'y remette sérieusement

Un énorme merci, j'étais parti je ne sais où pour trouver une solution

@+

Naje83
de rien j'espere que ça marche et que le pb est resolu.

ceci dit j'ai raconté:

"(plus le texte html entre les deux normalement)"

ça me paraissait bizarre quand même. aprés test il n'en est rien.

la balise fermante ?> doit produire un ;

et donc le while ne bouclait rien du tout a part un instruction totalement vide. et $user vaut false et non null.

enfin bref ça ne change rien au problème des délimiteurs
Modifié par CPascal (27 Mar 2010 - 19:11)
Oui le problème est résolu et cela fonctionne au poil...je peux continuer le reste !

@+

Naje83