catalogue

Invité
Invité n'ayant pas de compte PHPfrance

15 avr. 2006, 10:55

bonjour, je met en place un catalogue sur mon site mais voilà plus j'avance dans le projet plus je rencontre un tas de problème que je suis incapable de resoudre tous seul. pourriez vous m'aider à avancer ?
Voilà:
1/ Pour commencer j'affiche le resultat page par page d'une requete cela fonctionne bien mais quant je veut rajouter une close where ça marche plus :(
J'utilise ce tuto
http://www.phpfrance.com/forums/voir_sujet-8874.php
dans le script j'ai fait deux modifs :
$tri = "article = '". $_SESSION['article'] ."' AND cat = '". $_SESSION['cat'] ."'";

$sql_nb = "SELECT COUNT(id_article) FROM matable WHERE $tri"; 
et
    $tri = "article = '". $_SESSION['article'] ."' AND cat = '". $_SESSION['cat'] ."'";

$debut = $page_en_cours * $nb_nouv_par_page;
$sql_n = "SELECT * FROM matable WHERE $tri LIMIT ". $debut .", ". $nb_nouv_par_page .";";
$nouvelles = mysql_query($sql_n);
2/ Ensuite mon deuxième gros problème, dans ces pages pour chaque ligne de résultats j'ai une case à cocher ça me posé pas de problème pour récupéper mes select et les afficher sur une autre page, mais voilà avec le page par page c'est différent, je pense qu'il faut mettre la résultat dans une session, mais je vois pas ou je doit rajouter le lien qui feras glisser mes variables dans la session ? parcequ'en fait le visiteur peut selectionner des articles et aller directement dans la page de resultat ou passer à la page suivante (du page par page) :?
<form id="form1" name="form1" method="post" action="catalogue.php?insert=result">
<?php

   while($row = mysql_fetch_array($nouvelles))
    {
	
	$tabTitre = array('Marque','Model','fiche');
?>

<div>
<ul>
<li><?php echo $tabTitre[0].': <span>'; echo($row['marque']); ?></span></li>
<li class="title"><?php echo $tabTitre[1].': <span>'; echo($row['model']); ?></span></li>
<li><span><a href="<?php echo 'catalogue.php?insert='.$row['fiche']; ?> ">Voir Fiche</a></span></li>
<li class="title">Selection: <label><input type="checkbox" name="id_article[]" value="<?php echo($row['id_article']); ?>" /></label></li>
</ul>
</div>

merci pour votre aide car là je m'arrache tout mes cheveux depuis un bon moment :cry: :shock:

ViPHP
ViPHP | 656 Messages

15 avr. 2006, 13:34

J'ai l'impression que tu mélange WHERE et ORDER BY car tu mets une variable que tu nomme $tri donc j'imagine que c'est pour classer?

De plus on ne mets pas WHERE $tri, vaut mieu placer tout sur la même ligne.

Vérifie ensuite de faire une requète à la main voir s'il elle marche ou pas, parce que si rien dans ta base correspond c'est logique que rien ne s'affiche.

Est tu sûr que $_SESSION['article'] et $_SESSION['cat'] valent bien quelque chose?

Pour le deuxième problème si j'ai bien compris tu n'a qu'a faire :

$_SESSION["checkbox"] = $_POST["checkbox"];

Invité
Invité n'ayant pas de compte PHPfrance

15 avr. 2006, 18:54

bonsoir et merci pour l'aide, je viens de faire des tests et mes variables sont bien égale à ce que je veut.
En ecrivant ma requete en entier c'est à dire en remplacant $tri, $article et $cat ça marche :)
il doit y avoir une erreur dans ma syntax de $tri ?:
$tri = "article = '". $_SESSION['article'] ."' AND cat = '". $_SESSION['cat'] ."'";
$tri = "article = '". $_SESSION['article'] ."' AND cat = '". $_SESSION['cat'] ."'";
$sql_nb = "SELECT COUNT(id_article) FROM matable WHERE $tri";
et pour le deuxieme point :?: :!: :?: :shock:

Invité
Invité n'ayant pas de compte PHPfrance

15 avr. 2006, 19:21

c'est drôle losque je fait un echo $_SESSION[article] et la même chose avec $_SESSION['cat'] les valeur affichées sont bonnes mais lorsque que je change
$tri = "article = 'monarticle' AND cat = '". $_SESSION['cat'] ."'";
tous marche :!: mon erreur ne viendrait elle de ma session ?
if (isset($_GET['article']) && isset($_GET['cat'])) {
$_SESSION['article'] = $_GET['article'] ;
$_SESSION['cat'] = $_GET['cat'] ;
}
:?: :roll:

Mammouth du PHP | 19672 Messages

15 avr. 2006, 19:23

N'oublie pas un point important: une session reste active un certain temps tant que le navigateur est ouvert: si tu fais des modifications dans ton code et que tu recharges la page pour vérifier, les valeurs de session sont toujours là, et toujours mauvaises si elle l'étaient avant la modification. ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

15 avr. 2006, 19:34

je viens de test en fermeant et en ouvrant mon navigateur je confirme ma valeur article ne vas pas dans la session !
session_start();
$_SESSION['id_article'] = $_POST['id_article'];
//plus loin j'ai:
if (isset($_GET['article']) && isset($_GET['cat'])) {
$_SESSION['article'] = $_GET['article'] ;
$_SESSION['cat'] = $_GET['cat'] ;
}
y as pas des lignes en trop ?

Mammouth du PHP | 19672 Messages

15 avr. 2006, 19:48

ma valeur article ne vas pas dans la session
Ta valeur va là où tu lui indique d'aller : si elle n'arrive pas, c'est qu'il y a une boulette dans les instructions : en clair, ton code n'envoie pas la valeur soit parce qu'une instruction préalable est erronnée, soit parce que tu cherches une valeur dans la mauvaise variable.

Si ta variable de session n'est pas alimentée par la valeur $_POST, c'est peut-être bien parce que cette valeur $_POST n'existe pas : origine possible de l'erreur : erreur d'orthographe sur l'index, exemple "id_article" au lieu de "idarticle". Où encore parce que le formulaire n'est pas envoyé correctement, voire pas envoyé du tout ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

16 avr. 2006, 08:35

j'ai remarqué une chose quant j'arrive sur ma page mon url est du type:

Code : Tout sélectionner

http://www.monsite.fr/mapage.php?insert=moninsert1&article=monarticle&cat=macat
et quant je passe sur une autre page mon url est du type:

Code : Tout sélectionner

http://www.monsite.fr/mapage.php?insert=moninsert1&page=1
comme je suis toujour sur la même page y a pas une annulation de mes variables ?
$_GET['article']) && isset($_GET['cat']

Invité
Invité n'ayant pas de compte PHPfrance

16 avr. 2006, 09:56

:D
dans le script du tuto j'ai mis :
$url = "./mapage=moninsert&article=".$_SESSION['article']."&cat=" .$_SESSION['cat']."&page=";
à la place de:
$url = "./mapage.php?insert=moninsert&page=";
et ça marche, je sais pas si c'est normal de devoir rapeler à chaque fois mes variables mais bon ça marche.
:roll:
J'aurais encore besoin d'un petit peut d'aide au sujet de mes cases à cochet,
comment je doit procéder pour les mémoriser page par page ? car si je coche sur une même page et que je vais sur ma page de resultat c'est ok par contre si je change de page je pert tout les cases coché.
:? merci.

Mammouth du PHP | 19672 Messages

16 avr. 2006, 10:02

Enregistre-les dans des variables de session.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

16 avr. 2006, 10:08

C'était bien mon idée mais je sais pas trop comment faire.
J'ai bien l'idée d'un bouton pour valider la page en cour mais le bout de code validation je sais pas ou le casé.

Invité
Invité n'ayant pas de compte PHPfrance

16 avr. 2006, 12:35

Pouvez vous me dire si je suis sur la bonne voie ? j'ai testé mais ça marche pas :? mais j'ai peut être une erreur de syntax :?:
<li>Selection: <label><input type="checkbox" name="<?php $_SESSION['id_article']?>" value="<?php echo($row['id_article']); ?>" /></label></li>
<form id="form1" name="form1" method="post" action="url_de_ma_page_encour">

Mammouth du PHP | 19672 Messages

16 avr. 2006, 12:49

Ajoute un petit bout de code de débogage en début de script pour vérifier :
<?php
echo("<pre>\n");
var_dump($_SESSION);
echo("</pre>\n");
?>
Ensuite recharge ta page et observe.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

16 avr. 2006, 13:10

je l'ai mis et ça donne:

Code : Tout sélectionner

array(3) { ["id_article"]=> &NULL ["article"]=> &string(8) "monarticle" ["cat"]=> &string(8) "macat" }

Mammouth du PHP | 19672 Messages

16 avr. 2006, 18:38

En clair, la variable existe, mais elle est vide : donc remonte à la source : là où tu devrais attribuer la valeur à cette variable : et refais un var_dump() sur la variable source, etc... remonte jusqu'à l'erreur.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: