Problème en php

Résolu/Fermé
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010 - 14 déc. 2007 à 12:42
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010 - 18 déc. 2007 à 11:17
Bonjour,
J'ai un problème en php le voici:
En fait j'ai une page html sur laquel il ya des champs de recherche et un bouton ok.
lorqu'on appui sur ok le resultat de ma recherche s'affiche dans un tableau. Cet tableau en fait est dans du code php sur une page php
voici le code:

<?php
require_once('Connections/conCSI.php');
$colname_RechMbrePromo = "-1";
if (isset($_POST['vPromo'])) {
$colname_RechMbrePromo = (get_magic_quotes_gpc()) ? $_POST['vPromo'] : addslashes($_POST['vPromo']);
}
mysql_select_db($database_conCSI, $conCSI);
$query_RechMbrePromo = sprintf("SELECT nom, prenoms, promotion, email, cel FROM membre WHERE promotion = '%s' ORDER BY nom ASC", $colname_RechMbrePromo);
$RechMbrePromo = mysql_query($query_RechMbrePromo, $conCSI) or die(mysql_error());
$row_RechMbrePromo = mysql_fetch_assoc($RechMbrePromo);
$totalRows_RechMbrePromo = mysql_num_rows($RechMbrePromo);

//Etre sur que le parametre provient d'un input.
if ($_SERVER["REQUEST_METHOD"] <> "POST")
die("Vous pouvez acceder à cette page seulement par une page html");


// si le paramètre n'est pas null
if(!empty($_REQUEST["vPromo"])) {
if ($totalRows_RechMbrePromo <> 0) {
echo '
<table width="570" border="1" cellspacing="0" cellpadding="0" align="center">
<tr bordercolor="#999999" bgcolor="#0099FF">
<td width="90" class="text_noire_entete_tableau"><strong>Nom</strong></td>
<td width="150" class="text_noire_entete_tableau"><strong>Prénoms</strong></td>
<td width="90" class="text_noire_entete_tableau"><strong>Promo</strong></td>
<td width="150" class="text_noire_entete_tableau"><strong>Email</strong></td>
<td width="90" class="text_noire_entete_tableau"><strong>Cellulaire</strong></td>
</tr>';
while ($row_RechMbrePromo = mysql_fetch_assoc($RechMbrePromo)){
echo'<tr bordercolor="#000000" bgcolor="#FFFFE1">
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["nom"].'</td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["prenoms"].'</td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["promotion"].'</td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["email"].'</td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["cel"].'</td>
</tr>
</table>';
}
}

else{
echo '<strong> Aucun élément ne correspond à votre recherche! Veuiller reéssayer.</strong>';
}
}

// si le paramètre est vide
else {
echo "Echec vous n'avez pas saisi de paramètre";
}


mysql_free_result($RechMbrePromo);
?>

Lorsque ce code s'exécute il m'affiche que le dernier résultat en mémoire.
Comment faire pour afficher tous les résultats de ma requête? Aider moi SVP.
A voir également:

20 réponses

Bonjour

il m'affiche que le dernier résultat en mémoire
Que le dernier, ou tous sauf le premier ???
Tui as un $row_RechMbrePromo = mysql_fetch_assoc($RechMbrePromo); vers le début de ton code, à l'extérieur de la boucle. Ce résultat-là n'est sûrement pas affiché
0
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010
14 déc. 2007 à 16:53
merci père mais je ne comprends pas bien ta solution
0
As-tu remarqué qu'il y a deux fois $row_RechMbrePromo = mysql_fetch_assoc($RechMbrePromo); dans ton script ?
Une fois vers le début su script (ligne 11 environ), et une fois au début de ta boucle d'affichage.
Sais-tu à quoi sert cette instruction ?
0
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010
17 déc. 2007 à 11:20
oui père je sais à quoi sert cette instruction elle affecte une la ligne (tous les champs) d'un resultat dans la variable ($row_RechMbrePromo ).
Ex: le resultat qui a pour premiere ligne Dutche, Pere,2002-2003, pere@commentcamarche.fr , 06589656 sera affecté dans la variable
($row_RechMbrePromo ).
J'espère que je ne suis pas à côté de la plaque
Merci encore père
0

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

Posez votre question
Bonjour

C'est bien ça, mais alors je crois que tu aurais dû comprendre ce que j' ai voulu dire vendredi à 13h30.
Tu as vers la ligne 11 de ton script : $totalRows_RechMbrePromo = mysql_num_rows($RechMbrePromo);
Peux-tu me dire quand tu affiches le résultat de cette affectation ???
0
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010
17 déc. 2007 à 11:33
ah si je comprends bien le fait que j'affiche cette instruction hors de ma boucle, me permet seulement d'afficher la dernière ligne en memoire!
Ok donc je dois l'inserer dans ma boucle afin q'elle m'affiche toutes les lignes?
0
Non, ça n'est pas vraiment ça.

Le fait que tu aies cette ligne hors de ta boucle fait que tu extrais une première ligne du résultat de ta requête.
Ensuite, quand tu arrives dans ta boucle (while), tu recommences $totalRows_RechMbrePromo = mysql_num_rows($RechMbrePromo). Tu lis donc une seconde ligne du résultat. La première est écrasée sans jamais avoir été effacée.

Pourquoi dis-tu je dois l'inserer dans ma boucle alors qu'elle est déjà dans ta boucle ?
Combien devrait-il y avoir de résultats d'affichés et combien en vois-tu ?
Quand je te demande Peux-tu me dire quand tu affiches le résultat de cette affectation ???, pourquoi ne réponds-tu pas à la question ? Pour pouvoir te montrer où tu te trompes, j'ai besoin de savoir ce que tu crois, pas que tu proposes
0
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010
17 déc. 2007 à 12:01
je me disais que le fait de la mettre comme condition d'entrée dans ma boucle ne me permettais pas d'afficher son resultat.
Pour moi l'affichage se fait lorsuqe j'appel la focntion echo();
ceci:
echo'<tr bordercolor="#000000" bgcolor="#FFFFE1">
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["nom"].'</ td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["prenoms"].'& lt;/td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["promotion"]. '</td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["email"].'< ;/td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["cel"].'</ td>
</tr>

Concernant les resultats il doit y avoir 2 alors que je ne vois que le dernier.
0
je me disais que le fait de la mettre comme condition d'entrée dans ma boucle ne me permettais pas d'afficher son resultat.
Pour moi l'affichage se fait lorsuqe j'appel la focntion echo();

Tu as tout à fait raison
Mais ce que tu affiches, c'est la variable la variable $row_RechMbrePromo et elle est déterminée dans la condition d'entrée dans ta boucle !!!!
rassure-moi, tu es conscient que while ($row_RechMbrePromo = mysql_fetch_assoc($RechMbrePromo)) n'est pas un test d'égalité entre $row_RechMbrePromo et mysql_fetch_assoc($RechMbrePromo) ?

Concernant les resultats il doit y avoir 2 alors que je ne vois que le dernier
Je te l'avais dit dès vendredi 13 h 30 : ce n'est as que le dernier que tu vois, tu les vois tous sauf le premier. Je ne sais plus comment te le dire : ligne 11 tu récupères un résultat que tu n'affiches jamais. Ensuite, quand tu fais ta boucle (qui a l'air OK), il te manque le premier résultat. Arrange-toi pour avoir 3 réponses, tu verras qu'il en affichera 2.
0
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010
17 déc. 2007 à 16:11
ok merci encore, père rassuretoi je sais c'est une affectation de la valeur de mysql_fetch_assoc($RechMbrePromo) dans la variable $row_RechMbrePromo sinon ce serait plutôt while ($row_RechMbrePromo == mysql_fetch_assoc($RechMbrePromo)).
ok pere je vais supprimé la ligne 11, mais rassure moi est ce que je n'aurais pas un problène du genre il ne reconnais pas la variable $row_RechMbrePromo ?
0
Pourquoi ne la reconnaîtrait-il pas ? Qu'est-ce qui te fait supposer ça ?
0
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010
17 déc. 2007 à 16:28
excuse moi je m'étais trompé de variable. Je check et je te fais signe. 1000 fois merci
0
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010
17 déc. 2007 à 16:48
Père j'ai enfin tous les resultats merci ça m'a vraiment permis de mieux comprendre cette instruction. Ok Mais mon vrai problème demeur tjrs. Car c'est vrai toutes les lignes s'affichent mais ne s'affichent pas comme je le désire (dans le tableau).
0
sebdechezmoi Messages postés 22 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 17 décembre 2007 5
17 déc. 2007 à 16:59
Salut, si tu veu que tout s'affiche dans le tableu tu devrai sortir la balise </table> de la boucle while, sans quoi au premier passage le tableau sera fermé.

while ($row_RechMbrePromo = mysql_fetch_assoc($RechMbrePromo))
{
echo'<tr bordercolor="#000000" bgcolor="#FFFFE1">
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["nom"].'</ td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["prenoms"].'& lt;/td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["promotion"]. '</td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["email"].'< ;/td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["cel"].'</ td>
</tr>';
}
echo '</table>';
0
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010
17 déc. 2007 à 17:10
merci c'est cool, je n'y avais pas pensé je check
0
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010
17 déc. 2007 à 17:29
ça marche merci beaucoup,
je profite en même temps pour demander quelque chose.
Lorsque je valide sur mon bouton (ok) pour exécuter ma requête:
soit la requête ne s'exécute pas automatiquement et il faut que j'appuie une seconde fois sur (ok) avant qu'elle s'exécute,
soit elle ne s'exécute même et je suis obligé d'actualiser la page avant qu'elle s'exécute.
J'aimerais savoir à quoi c'est du, moi je me dis que c'est le serveur.
Car quelque fois j'arrive pas à actualiser la page et même les autres pages qui fonctionnaient correctement. Et losque je redemarre mon serveur apache. Tout reprend normalement.

Je pricise que j'utilise pour l'exécution de la requête un objet XmlHttpRequest et du java script pour l'exécution du bouton.
0
Désolé de ne plus pouvoir t'aider, je n'ai aucune idée de ce qu'est ton objet XmlHttpRequest. Mais si comme son nom l'indique il a quelque chose à voir avec l'interrogation du serveur, d'ici qu'il le fasse planter ...
0
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010
17 déc. 2007 à 18:07
Merci père pour ce que tu as fais déjà c'est assez. dis tu t'y connais en Merise?
0
Désolé, je n'y connais rien non plus. J'ai toujours fait du "bricolage" avec les bases de données, n'étant pas informaticien au départ. Mais tu as raison de t'intéresser aux bonnes méthodes.
0
dutche Messages postés 73 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 21 mai 2010
18 déc. 2007 à 11:17
bonjour voici le bon code

<?php
require_once('Connections/conCSI.php');
$colname_RechMbrePromo = "-1";
if (isset($_POST['vPromo'])) {
$colname_RechMbrePromo = (get_magic_quotes_gpc()) ? $_POST['vPromo'] : addslashes($_POST['vPromo']);
}
mysql_select_db($database_conCSI, $conCSI);
$query_RechMbrePromo = sprintf("SELECT nom, prenoms, promotion, email, cel FROM membre WHERE promotion = '%s' ORDER BY nom ASC", $colname_RechMbrePromo);
$RechMbrePromo = mysql_query($query_RechMbrePromo, $conCSI) or die(mysql_error());

$totalRows_RechMbrePromo = mysql_num_rows($RechMbrePromo);

//Etre sur que le parametre provient d'un input.
if ($_SERVER["REQUEST_METHOD"] <> "POST")
die("Vous pouvez acceder à cette page seulement par une page html");


// si le paramètre n'est pas null
if(!empty($_REQUEST["vPromo"])) {
if ($totalRows_RechMbrePromo <> 0) {
echo '
<table width="570" border="1" cellspacing="0" cellpadding="0" align="center">
<tr bordercolor="#999999" bgcolor="#0099FF">
<td width="90" class="text_noire_entete_tableau"><strong>Nom</strong></td>
<td width="150" class="text_noire_entete_tableau"><strong>Prénoms</strong></td >
<td width="90" class="text_noire_entete_tableau"><strong>Promo</strong></td&g t;
<td width="150" class="text_noire_entete_tableau"><strong>Email</strong></td&g t;
<td width="90" class="text_noire_entete_tableau"><strong>Cellulaire</strong>< /td>
</tr>';

while ($row_RechMbrePromo = mysql_fetch_assoc($RechMbrePromo)){
echo'<tr bordercolor="#000000" bgcolor="#FFFFE1">
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["nom"].'</ td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["prenoms"].'& lt;/td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["promotion"]. '</td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["email"].'< ;/td>
<td bordercolor="#999999" class="text_noire_corps_tableau">'.$row_RechMbrePromo["cel"].'</ td>
</tr> ';
}
echo '</table>';

}

else{
echo '<strong> Aucun élément ne correspond à votre recherche! Veuiller reéssayer.</strong>';
}
}

// si le paramètre est vide
else {
echo "Echec vous n'avez pas saisi de paramètre";
}


mysql_free_result($RechMbrePromo);
?>
0