PHP/SQL code pour trier des produits (fonctionne en local mais pas sur internet)

Uga Messages postés 1 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 9 avril 2008 - 9 avril 2008 à 20:24
Axe971 Messages postés 75 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 9 janvier 2009 - 11 avril 2008 à 14:27
j'ai réalisé (enfin essayé) une page qui affiche des produits (9 par
page) et qui calcule le nombre de produit total dans la BDD pour
générer le nombre de pages nécessaires pour tous les afficher. jusque
la pas de soucis mais j'ai également voulu réaliser un formulaire afin
que le visiteur puisse trier les produits soit par défaut (nom) soit
par prix (en haut du code).


Sur Easyphp en local pas de soucis tout fonctionne, lorsque l'on valide
les produits se trient et lorsque l'on change de page restent triés.
Seulement, une fois mis ce script sur le net, il n'y a plus rien qui
marche (c'est exactement le même que celui en local exception faite des
codes pour se loguer à la BDD qui sont justes.)


Je ne suis qu'un débutant en PHP donc j'avoue me sentir largué par ce problème (je pense qu'il peut s'agir d'un problème de norme PHP mais je sais pas où )


Voila en espérant avoir été clair sur ce qui bug (le tri). Merci d'avance !



<?phpecho('<form action="index.php?page=liste_produit&amp;num_page='.$_GET['num_page'].'" method="post">') ;?> afficher par : 

                <select name="affichage">

                                <option value="id_produit">d&amp;eacute;faut</option>

                                <option value="prix">prix</option>

                </select> 

                

        </form>

                  

 

<?php

mysql_connect("*******", "******", "******");

mysql_select_db("*****");

 

//on recup le mode d'affichage (ordre) si il existe   (sinon, on fait par id_produit)

if(isset($_POST['affichage']) == FALSE  &amp;&amp; (isset($_GET['affichage']) == FALSE))

{

        $affichage = "id_produit" ;

}

elseif(isset($_POST['affichage']))

{$affichage = $_POST['affichage'];}

 

else

{$affichage = $_GET['affichage'];}

 

//on recup les éventuels ordre par matiere ou le prix minimum (pour les pages > 1)

if((isset($_GET['matiere']) == FALSE) || (empty($_GET['matiere'])))

{

        $where = "";

        $_GET['matiere'] = "";//on crée la variable si elle n'existe pas

}

else

{$where = (' WHERE `matiere`="'. $_GET['matiere'].'"') ;}

 

// CALCUL DU NOMBRE DE PAGE //

$req_ligne = mysql_query('SELECT * FROM produit'.$where.';');

$nbr_produit = mysql_num_rows($req_ligne);

mysql_free_result($req_ligne);  

                                        

$nb_page = $nbr_produit / 9 ;  

if(($nbr_produit % 9) != 0)

        {$nb_page = $nb_page + 1 ;}

 

$nbpr = (($_GET['num_page'] - 1) *9);

$nbpr_fin = $nbpr + 9;

$num_page = $_GET['num_page'];

 

// On récupère les produit

$retour = mysql_query('SELECT * FROM produit'. $where .' ORDER BY "'.$affichage.'" ASC LIMIT '.$nbpr.' , '.$nbpr_fin.';');

 

$id=1;

 

 

echo('');

       

$produits_restants=$nbr_produit;

for($i=1 ; $i<=3 ; $i++)// les lignes

{              

       

        echo('<table class="prix_produit"> ----, '.$prix.' &amp;euro;</td>
'); 

                                        echo(''.$nom_produit.'
'); 

                                        

                                        echo('</td>');

                                        $produits_restants =$produits_restants-1;                                               

                                        $nb_produits_mis ++;

                                        

                                }

                                else

                                {$nb_produits_mis ++;}

                        }//finwhile

                }

 

        }

        echo('</tr>');

//$j=4; 

}// fin du for

 

mysql_free_result($retour);

mysql_close();

 

?>

</table>

 

<center>

        
 Page

                <?phpfor($k = 1 ; $k<= $nb_page ; $k++)

                                {echo('[index.php?page=liste_produit&amp;num_page='..'&amp;affichage='.$affichage.'">'.$k.']-');}

        ?>

         
</center>

A voir également:

1 réponse

Axe971 Messages postés 75 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 9 janvier 2009 2
11 avril 2008 à 14:27
Bonjour,



Pour commencer ton code est à mon avis pas très sécurisé. En fonction de la configuration de ton serveur Web (Apache)  tu peux être sujet à des injections SQL. Cf (utilisation des variables $_POST et $_GET dans tes requêtes).
Deuxio, je n'ai pas vu d'erreur particulière. Mais il faut dire qu'autant code ce n'est pas aisé à lire.
Pour finir, il existe des scripts (qui ont fait leurs preuves) pour réaliser ce que tu veux faire. Regarde du coté de PEAR, ou encore des CMS.

Bonne chance,
0
Rejoignez-nous