[RESOLU] Problème $_SESSION

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 : [RESOLU] Problème $_SESSION

Re: Problème $_SESSION

par orell1 » 27 déc. 2012, 15:11

Ok j'ai compris.
Merci beaucoup.

Je vais tester tout ça.
Bonnes fêtes de fin d'année!

Re: Problème $_SESSION

par sirakawa » 27 déc. 2012, 14:27

il faudrait que le script cible contienne des champs cachés dans un <form method='post'...> et que ce formulaire soit activé après modif de la bdd, ou alors mettre les variables en session.
Mais je pense sans en être sûr qu'il vaut mieux attendre que mysql ait fini(ne pas mettre de header)
<?PHP
$requete = "";
mysql_query($requete):
$_SESSION= ...;
?>
<body onload ='active()'>
<form ...>
</body>
où active est du même genre que ce que tu fais sur onchange().

Re: Problème $_SESSION

par orell1 » 27 déc. 2012, 00:50

Merci beaucoup!
Tout fonctionne bien ;-)
Merci pour votre aide!

Petite question...?
J'ai un formulaire php et j'utilise onchange="this.form.submit();" pour envoyer une seule la valeur d'un des champs dans ma base sql...
Je souhaite revenir sur ce même formulaire lorsque le submit est fait avec bien entendu les valeurs qui ont déjà été précédemment remplies .

Une petite idée?

Merciiii

Re: Problème $_SESSION

par sirakawa » 26 déc. 2012, 18:13

À partir de l'idée de moogli, en relisant la doc de filter_var:
<?PHP
$nombre_enregistrements = 144; //calculé par ailleurs
$debut_demande = 144;
$nombre_demande = 1;
//vérification du début
$options = array(
'options' => array(
'default' => 0, // valeur à retourner si le filtre échoue
'min_range' => 0,//ou 1 suivant comment est gérée la table
'max_range'=> $nombre_enregistrements
),
'flags' => '',
);

$debut = filter_var( $debut_demande, FILTER_VALIDATE_INT, $options);
var_dump($debut); // pour les tests

$options = array(
'options' => array(
'default' => ($nombre_enregistrements-$debut)+1, // valeur à retourner si le filtre échoue
'min_range' => 1,
'max_range'=> $nombre_enregistrements-$debut
),
'flags' => '',
);

$nombre = filter_var( $nombre_demande, FILTER_VALIDATE_INT, $options);
var_dump($nombre); // pour les tests

?>

$sql = "SELECT * FROM CLIENTS where ref ='$num_c' order by $tri desc limit $debut, $nombre";

Re: Problème $_SESSION

par orell1 » 26 déc. 2012, 16:40

je viens d'essayer ce que tu m'as dit :
  $conn = db_connect();
  $sql = "SELECT * FROM ".CLIENTS." order by $tri desc";
    if (!empty($_SESSION['debut']) && !empty($_SESSION['nb_affichage_par_page'])){
  $sql .="limit ".$_SESSION['debut'].", ".$_SESSION['nb_affichage_par_page'].""; 
  }
  $sql =" limit ".$_SESSION['debut'].", ".$_SESSION['nb_affichage_par_page'].""; 
  $result = mysql_query($sql, $conn);
  $num_results = mysql_num_rows($result);
mais ça ne fonctionne pas très bien...
En fait l'erreur a disparu mais il ne fait plus de limit...
Il affiche tous les résultats...

une idée?

Merci beaucoup.

Re: Problème $_SESSION

par moogli » 26 déc. 2012, 15:20

Non, plutôt avec de vrai condition et la concaténation.
<?php
$sql ='le début de la requête ';
If (!empty($_SESSION['debut']) && !empty($_SESSION['nb_affichage_par_page'])){
$sql .= 'la limite';
}
// exécution de la requête. 
?>
Tu peux aussi ajouter une condition pour être certain que les deux paramètres soit bien de entier (avec filter_var et le filtre FILTER_VALIDATE_INT ).




@+

Re: Problème $_SESSION

par orell1 » 26 déc. 2012, 12:56

Merciiiiiii!
je l'écris donc ainsi :
".!empty($_SESSION['debut']).", ".!empty($_SESSION['nb_affichage_par_page'])."
Si j'ai bien compris...?

Merci

Re: Problème $_SESSION

par moogli » 26 déc. 2012, 12:46

Salut,

Effectivement le problème viens de ta seconde variable de session qui n'est pas valorisée. La requête finit par une virgule => erreur ;)

Utilise empty pour éviter ce type d'erreurs.



@+

Problème $_SESSION

par orell1 » 26 déc. 2012, 12:31

Bonjour à tous,
J'ai une petite erreur que je n'arrive pas à corriger, peut-être avez vous une idée de comment faire...?

mon erreur : Erreur SQL !SELECT * FROM clients order by num_client desc limit 0,
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Ma requête
  $conn = db_connect();
  $sql = "SELECT * FROM ".CLIENTS." where ref ='$num_c' order by $tri desc limit ".$_SESSION['debut'].", ".$_SESSION['nb_affichage_par_page'].""; 
  $result = mysql_query($sql, $conn) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  $num_results = mysql_num_rows($result) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
J'ai l'impression que cela provient de ".$_SESSION['debut'].", ".$_SESSION['nb_affichage_par_page'].""; car lorsque je navigue un peu sur le site et que je revient sur la page où l'erreur se produit, plus d'errreur et tout fonctionne...

Avec vous une idée svp?

Merci par avance.