catalogue

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : catalogue

par Invité » 18 avr. 2006, 10:01

Si justement hier aprés midi j'ai essayé de l'appliquer à mon cas mais ce que je voulais eviter c'était de passer par des page supplémentaire pour valider ou manipuler mes variables que j'avais (je tentais de mettre) dans ma session ! , non pas par manque de courage mais je voulais que ce soit simple et je me vois bien reparti dans une bonne gallère.

Je met ce que j'ai modifié hier dans mon code (qui donne pas mal d'erreur aprés test):
1ere page de selection avec les checkbox
<input type="checkbox" name="id_article[]" value="<?php $row['id_article'] ; ?>" />
Ma page de résultat:
<?php session_start();
$_SESSION['panier']['id_article'] = $_POST['id_article'];
require_once('../admin/connect.php'); 
require('fonctionpanier.php');
?>
<!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=iso-8859-1" />
<title>Document sans titre</title>
</head>
<body>
<?php 
$select = isset($_POST['id_article']) ? $_POST['id_article'] : "";
ajout($select) ;

var_dump($_SESSION); 
?>
</body>
</html>
et ma page de fonction panier simplifier (trop ? :oops: ):
 <?php
function ajout($select) 
{ 
    $ajout = false; 
        if(!verif_panier($select['id_article'])) 
        { 
            array_push($_SESSION['panier']['id_article'],$select['id_article']); 
            $ajout = true; 
        } 
    return $ajout; 
} 

function verif_panier($select) 
{ 
    $present = false; 
    if(array_search($select,$_SESSION['panier']['id_article']) != false) 
    { 
    $present = true; 
    } 
    return $present; 
} 
?>
help ](*,) , merci

par Cyrano » 18 avr. 2006, 00:21

C'est original comme méthode, et là, ce n'est même pas un problème de PHP mais de logique et de HTML :

La valeur qu'on inscrit dans un attribut "action" de balise <form>, ce n'est pas une instruction PHP mais une url relative ou absolue. Donc, il faut mettre cette instrcution dans un fichier .php et mettre dans ton attribut action l'adresse de ce fichier.

As-tu eu l'occasion de lire (pas juste survoler rapidement) le tuto sur les paniers que j'ai fait ?

par Invité » 17 avr. 2006, 10:28

Pouvez vous me mettre sur la voie j'ai testé pleins de solution en vain et je sais plus quoi faire :shock:

en debut de page j'ai mis:
session_start();

if(!isset($_SESSION['panier'])) 
{
$_SESSION['panier'] = array(); 
/* Subdivision du panier */ 
$_SESSION['panier']['id_article'] = array(); 
}
pour le form j'ai:
<form id="form1" name="form1" method="POST" action="<?php array_push($_SESSION['panier']['id_article'],$row['id_article']); ?>">
et la checkbox :
<input type="checkbox" name="<?php $row['id_article'] ; ?>" value="<?php $row['id_article']; ?>" />
j'ai contrôlé $row['id_article'] n'est pas null, une valeur différente existe pour chaque article.
Et avec var_dump($_SESSION); on vois que le panier existe bien, mais aucune valeur ne rentre dedans.
:roll:

par Cyrano » 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.

par Invité » 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" }

par Cyrano » 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.

par Invité » 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">

par Invité » 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é.

par Cyrano » 16 avr. 2006, 10:02

Enregistre-les dans des variables de session.

par Invité » 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.

par Invité » 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']

par Cyrano » 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 ?

par Invité » 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 ?

par Cyrano » 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. ;)

par Invité » 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: