help

Répondre
Philippe GUEGAN
Messages : 108
Enregistré le : jeu. oct. 31, 2002 11:51 am
Localisation : Breizh
Contact :

help

Message par Philippe GUEGAN » jeu. juil. 21, 2005 3:51 pm

Je crois que je suis coincé dans ma liste déroulante.
Mais vraiment planté.
Voilà je veux faire un tri de mes maisons par prix
Je n'arrive opas à décoller de ma première page.
Il me manque un truc :?

Je te passe mon code, ça fait plusieurs jours que j'essaie et je ne débloque pas.
C'est toujours le pb avec moi, il me manque tellement de bases que dès fois je suis bien planté

Philippe

Page d'appel

<link REL="StyleSheet" TYPE="text/css" HREF="../feuille_style/forme.css">

<?php /* Date de création: 21/06/05 */
include_once ("globals.inc.php");
include_once ("fonctions.inc.php");
mysql_connect($serveur,$login,$motpasse) or die ("erreur de connexion au serveur ".mysql_error());
mysql_select_db($base) or die ("erreur de connexion a la base de données ".mysql_error());



Entete();


echo("<table class=\"bord\" width=\"100%\" height=\"100\" border=\"1\" align=\"center\" summary=\"\">");
echo ("<tr class=\"fond\">");
echo ("<td>&nbsp;</td>");
echo ("<td>&nbsp;</td>");
echo ("<td>&nbsp;</td>");
echo ("</tr>");
echo ("<tr>");
echo ("<td>&nbsp;</td>");
echo ("<P CLASS=\"fond\"><td><form action=\"result.php\" method=\"post\">");
echo ("<select name=\"ftot1\">");
echo ("<option value=\"0\" selected=\"selected\"> tous les prix</option>");
echo ("<option value=\"1\"> <50.000 €</option>");
echo ("<option value=\"2\"> 50 -100.000 €</option>");
echo ("<option value=\"3\"> 100 - 150.000 €</option>");
echo ("<option value=\"4\"> > 150.000 €</option>");
echo ("</select>");

echo ("</form><br><form name=\"bt1\">");
echo ("<input type=\"submit\" value=\"alllons y...!\">");
echo ("<td>&nbsp;</td>");
echo ("</tr>");
echo("</table>");


?>

Page de résultat:
<?php /* Date de création: 21/06/05 */
include_once ("globals.inc.php");
include_once ("fonctions.inc.php");
mysql_connect($serveur,$login,$motpasse) or die ("erreur de connexion au serveur ".mysql_error());
mysql_select_db($base) or die ("erreur de connexion a la base de données ".mysql_error());

$que = " SELECT * FROM `biens_fr`" ;
$query = " SELECT * FROM `biens_fr` WHERE (tot1) <= 50000";
$query_1 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 50000 AND (tot1) <= 100000 LIMIT 0 , 30";
$query_2 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 100000 AND (tot1) <= 150000 LIMIT 0 , 30";
$query_3 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 150000";
$result = mysql_query($query_3) or die ("Requête incorrecte ".mysql_error());

// Fermer la connexion

mysql_close();

Entete();
echo("<table summary=\"Table gestion biens\" border=\"0\" cellpadding=\"5\" cellspacing=\"2\">\n");
echo("<tr>\n");
echo("<td class=\"tfc\">ref</td>\n");
echo("<td class=\"tfc\">tit</td>\n");
echo("<td class=\"tfc\">desc</td>\n");
echo("<td class=\"tfc\">tot1</td>\n");


while($row = mysql_fetch_array($result))
{
echo("<tr>\n");
echo("<td class=\"fc\">$row[ref]</td>\n");
echo("<td class=\"fc\">$row[tit]</td>\n");
echo("<td class=\"f\">$row[desc]</td>\n");
echo("<td class=\"fc\">$row[tot1]</td>\n");

}
?>

Régis
Messages : 243
Enregistré le : ven. avr. 11, 2003 2:23 pm
Localisation : Lyon

Message par Régis » ven. juil. 22, 2005 9:57 am

Bonjour Philippe,
D'abord je n'y connais rien en PHP, donc ce qui suit peut etre totalement faux.
Il me semble que tes requetes SQL ne definissent pas les champs à afficher.
Je verrais plutot ceci:
SELECT tot1, column1,column2
FROM "biens.db" biens
WHERE (tot1 >= 50000)
AND (tot1 <= 100000)
Il me semble que les parentheses devraient etre comme ci-dessus.

D'autre part dans tes limites si tu mets <=, et >= dans toutes tes requetes les valeurs de 100000 se trouveront dans query_1 et query_2

Enfin un bon moyen d'apprendre des requetes SQL avec P10 est de les écrire en QBE et de les editer en SQL.

Si cela peut etre utile
Régis

Côme
Site Admin
Messages : 855
Enregistré le : sam. sept. 14, 2002 10:41 pm
Localisation : Igny (Essonne)

Re: help

Message par Côme » ven. juil. 22, 2005 1:51 pm

Philippe GUEGAN a écrit :Je crois que je suis coincé dans ma liste déroulante.Mais vraiment planté.[...]
Sur le formulaire qui n'a donc rien de dynamique tu as une erreur sur ton bouton submit qui devrait être inclus dans le formulaire , donc avant le </form>.

Pour la 2ème partie , la page résultat il vaut mieux écrire :
$query_3 =" SELECT * FROM biens_fr WHERE (tot1 >= '150000')";

En outre il faut fermer ton enregistrement de titre de colonne par un </tr> avant d'entamer la boucle d'affichage while...

De même en fin de ligne détail (donc dans la boucle while) il faut fermer chaque ligne par un </tr> et après la boucle fermer la table par un </table>

Enfin il faut fermer la page html avec un </body></html> ou une fonction BasPage équivalente.

Courage tu vas y arriver et cela vaut le coup !

PS : Et ton code n'exécute que la query_3 pas les autres.

Philippe GUEGAN
Messages : 108
Enregistré le : jeu. oct. 31, 2002 11:51 am
Localisation : Breizh
Contact :

Message par Philippe GUEGAN » ven. juil. 22, 2005 4:58 pm

Hier soir le grand désespoir
aujourd'hui la lumière :P

Je viens de me connecter pour te dire que j'ai réussi.

En fait j'aurais dû me connecter avant ça m'aurait éviter de perdre encore une moitié de ma chevelure :oops:

J'avais fini par trouver le pb du bouton submit.

Je te remontre le code final pour que tu jettes vite fait un coup d'oeil pour voir s'il n'y a pas trop de lourdeurs.

Chuis vachement fier, j'arrête pas de faire des essais!! :D

Page d'appel

<link REL="StyleSheet" TYPE="text/css" HREF="../feuille_style/forme.css">

<?php /* Date de création: 21/06/05 */
include_once ("globals.inc.php");
include_once ("fonctions.inc.php");
mysql_connect($serveur,$login,$motpasse) or die ("erreur de connexion au serveur ".mysql_error());
mysql_select_db($base) or die ("erreur de connexion a la base de données ".mysql_error());


Entete();
?>


<table class="bord" width="100%" height="100" border="1" align="center" summary="">
<tr class="fond">
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<P CLASS="fond"><td>
<form method="post" action="result.php">
<select name="ftot1">
<option value="0" selected="selected"> tous les prix</option>
<option value="1"> <50.000 €</option>
<option value="2"> 50 -100.000 €</option>
<option value="3"> 100 - 150.000 €</option>
<option value="4"> > 150.000 €</option>
</select>
<input type="submit" value="allons y...!">
</form>
<td>&nbsp;</td>
</tr>
</table>

Page Cible
<?php /* Date de création: 21/06/05 */
include_once ("globals.inc.php");
include_once ("fonctions.inc.php");
mysql_connect($serveur,$login,$motpasse) or die ("erreur de connexion au serveur ".mysql_error());
mysql_select_db($base) or die ("erreur de connexion a la base de données ".mysql_error());
echo$_POST['ftot1'];
$que = " SELECT * FROM `biens_fr`" ;
$query = " SELECT * FROM `biens_fr` WHERE (tot1) <= 50000";
$query_1 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 50000 AND (tot1) <= 100000 LIMIT 0 , 30";
$query_2 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 100000 AND (tot1) <= 150000 LIMIT 0 , 30";
$query_3 =" SELECT * FROM `biens_fr` WHERE (tot1) >= 150000";



if ($_POST['ftot1'] == 0)
{
$result = mysql_query($que) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 1)
{
$result = mysql_query($query) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 2)
{
$result = mysql_query($query_1) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 3)
{
$result = mysql_query($query_2) or die ("Requête incorrecte ".mysql_error());
}
else
if ($_POST['ftot1'] == 4)
{
$result = mysql_query($query_3) or die ("Requête incorrecte ".mysql_error());
}
// Fermer la connexion

mysql_close();

Entete();
echo("<table summary=\"Table gestion biens\" border=\"0\" cellpadding=\"5\" cellspacing=\"2\">\n");
echo("<tr>\n");
echo("<td class=\"tfc\">ref</td>\n");
echo("<td class=\"tfc\">tit</td>\n");
echo("<td class=\"tfc\">desc</td>\n");
echo("<td class=\"tfc\">tot1</td>\n");


while($row = mysql_fetch_array($result))
{
echo("<tr>\n");
echo("<td class=\"fc\">$row[ref]</td>\n");
echo("<td class=\"fc\">$row[tit]</td>\n");
echo("<td class=\"f\">$row[desc]</td>\n");
echo("<td class=\"fc\">$row[tot1]</td>\n");

}
?>

Côme
Site Admin
Messages : 855
Enregistré le : sam. sept. 14, 2002 10:41 pm
Localisation : Igny (Essonne)

Message par Côme » ven. juil. 22, 2005 7:12 pm

Super que tu avances :D

Bon il faudra corriger le html produit car les erreurs que je t'ai signalées sont toujours là. Sinon au lieu de nombreux if sur la même variable il vaut mieux utiliser le switch qui clarifie le code :

switch($mavariableatester)
{
case 1 :
Que faire si elle vaut 1;
break;
case 2 :
Que faire si elle vaut 2;
break;
etc...
}

Enfin tu mélanges 2 types d'accès aux variables de formulaire, par les tableaux globaux ($_POST['MaVariable'] etc...) et l'accès direct par $nomvariable (possible parce que le paramètre Register Global est activé). Il est plutôt recommandé effectivement de passer par les tableaux $_POST , $_GET ou plus universel $_REQUEST

Sur cette grande victoire je te souhaite une bonne soirée !

Philippe GUEGAN
Messages : 108
Enregistré le : jeu. oct. 31, 2002 11:51 am
Localisation : Breizh
Contact :

Message par Philippe GUEGAN » sam. juil. 23, 2005 6:58 am

Bonjour Côme

Pour le html, je vais le soigner, en fait ce sont des pages de tests
J'ai réussi a transférer ma base de données, fait des "class" et maintenant mon formulaire.
Je vais faire un switch et étudier les points dont tu me parles.
En fait une fois que j'ai règlé le pb du formulaire j'ai déjà fait un grand pas

Philippe

Répondre