[Réglé] Récupérer variable ...

Ce forum aborde toutes les questions qu'un codeur ou webmaster pourrait se poser, et n'ayant aucun rapport direct avec phpBB.
Tout ce qui peut concerner la récupération des sessions de phpBB sur votre site, doit se faire dans cette section.

Modérateur: Equipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com

[Réglé] Récupérer variable ...

Messagepar Mzr » 13 Déc 2010 à 23:12

Bonjour à tous,

J'utilise le mod formulaire avec succès, et je voudrais ajouter suivant certaines conditions le formulaire aussi en réponse.

J'ai donc modifié le posting.php de cette façon :

Code: Tout sélectionner
if($forum_id != 9 && $mode == 'reply')
            {
                redirect(append_sid("{$phpbb_root_path}form.$phpEx", 'f=' . $form_data['form_id'] . '&t=' . $topic_id));
            }
            else
            
{
                redirect(append_sid("{$phpbb_root_path}form.$phpEx", 'f=' . $form_data['form_id']));
            } 


Si on est en dehors du forum 9 et en mode réponse, alors on appelle form.php en ajoutant "&t=topic_id"

Ma page s'ouvre alors comme je le souhaite :

Code: Tout sélectionner
http://.../phpBB3/form.php?f=2&t=4598


où 2 est bien le numéro du formulaire et 4598 est bien mon id de topic.

Du côté de de form.php je récupère ma variable t :
Code: Tout sélectionner
$montopic_id     = $_GET['t']; 


ou

Code: Tout sélectionner
$montopic_id     = (int) request_var('t', 0); 


(c'est visiblement ici que ça ne fonctionne pas)

Ensuite, je modifie mon tableau avec :
Code: Tout sélectionner
'topic_id'              => $montopic_id,  


Et je rajoute un dernier test afin de savoir si on a trouvé ma variable t= :

Code: Tout sélectionner
if($montopic_id != 0)
            {
                $url_form = submit_post('reply', $topic_title, '', POST_NORMAL, $poll_data, $form_data);
            }
            else
            
{
                $url_form = submit_post('post', $topic_title, '', POST_NORMAL, $poll_data, $form_data);
            } 


Et donc, ma variable $montopic_id ne récupère jamais ma varaible passée dans l'URL ... (si je rentre en dur le topic_id, ça fonctionne très bien).

Quelqu'un aurait une idée ?
Modifié en dernier par Mzr le 16 Déc 2010 à 16:47, modifié 1 fois.
Avatar de l’utilisateur
Mzr
Posteur habitué
Posteur habitué
 
Messages: 221
Enregistré le: 21 Nov 2002 à 18:13

Re: Récupérer variable ...

Messagepar ABDev » 13 Déc 2010 à 23:27

C'est normal, vu que tu dois définir, puis fusionner ton ID dans le tableau $form_data
Pour se payer le luxe d'être feignant, il faut sans cesse faire travailler ses méninges ! (Korben)

On clique sur le bouton Répondre plutôt que le bouton Citer ...
Un problème avec une extension ? Pas de lien vers celle-ci ? Sujet ignoré !
Avatar de l’utilisateur
ABDev
Programmationateur
Programmationateur
 
Messages: 15695
Enregistré le: 12 Mai 2005 à 23:54

Re: Récupérer variable ...

Messagepar Mzr » 13 Déc 2010 à 23:38

ABDev a écrit:C'est normal, vu que tu dois définir, puis fusionner ton ID dans le tableau $form_data

Je l'ai pourtant bien ajouté :

Code: Tout sélectionner
$form_data = array(
				'forum_id'          	=> $form['form_forum'],
				'topic_id'          	=> $montopic_id,				
				'icon_id'           	=> false, 
				'enable_bbcode' 		=> true,
				'enable_smilies'    	=> true,
				'enable_urls'       	=> true, 
				'enable_sig'        	=> true,
				'message'           	=> $message,
				'message_md5'   		=> md5($message),
				'bbcode_bitfield'   	=> $bbcode_bitfield,
				'bbcode_uid'        	=> $bbcode_uid,
				'post_edit_locked'  	=> 0,
				'topic_title'       	=> $topic_title,
				'notify_set'        	=> false,        
				'notify'            	=> false,        
				'post_time'        	 	=> 0,       
				'forum_name'        	=> '',  
				'enable_indexing'   	=> true,
			//	'force_approved_state'  => true,
			);
Avatar de l’utilisateur
Mzr
Posteur habitué
Posteur habitué
 
Messages: 221
Enregistré le: 21 Nov 2002 à 18:13

Re: Récupérer variable ...

Messagepar Mzr » 14 Déc 2010 à 22:29

Bon, j'avance, mais je ne comprends où est mon pb :

mon URL générée :

Code: Tout sélectionner
phpBB3/form.php?f=2&t=4598


Elle est donc générée grâce à :

Code: Tout sélectionner
redirect(append_sid("{$phpbb_root_path}form.$phpEx"'f=' $form_data['form_id'] . '&t=' $topic_id));
 


Avec mon URL d'exemple, sI je fais :

Code: Tout sélectionner
$montopic_id 	= $_GET['t'];


Ma varaible $topic_id ne se remplie pas alors qu'elle devrait être égale à 4598

Si je change mon code (juste pour tester) par :

Code: Tout sélectionner
$montopic_id 	= $_GET['f'];


Elle se remplie bien par 2 ...

Avez-vous une idée du truc qui cloche ?
Avatar de l’utilisateur
Mzr
Posteur habitué
Posteur habitué
 
Messages: 221
Enregistré le: 21 Nov 2002 à 18:13

Re: Récupérer variable ...

Messagepar sylver35 » 15 Déc 2010 à 22:58

Tu n'a pas du tout écouté le conseil de ABDev !!

Code: Tout sélectionner
$montopic_id     = request_var('t', 0);

Code: Tout sélectionner
redirect(append_sid("{$phpbb_root_path}form.$phpEx", 'f=' . $form_data['forum_id'] . '&t=' .  $form_data['topic_id']));


De plus, tu semble te perdre avec tes 'forum_id' et 'form_id'
sylver35
Dieu des floodeurs
Dieu des floodeurs
 
Messages: 5943
Enregistré le: 26 Fév 2008 à 15:58
Localisation: Bretagne

Re: Récupérer variable ...

Messagepar Mzr » 16 Déc 2010 à 10:19

sylver35 a écrit:Tu n'a pas du tout écouté le conseil de ABDev !!

Si, mais en effet, j'avais compris forum et non form.

sylver35 a écrit:
Code: Tout sélectionner
$montopic_id     = request_var('t', 0);

Code: Tout sélectionner
redirect(append_sid("{$phpbb_root_path}form.$phpEx", 'f=' . $form_data['forum_id'] . '&t=' .  $form_data['topic_id']));

L'ennui, c'est qu'il n'y a pas de topic_id dans form_data ...

Voici le contenu de la clé forms : form_id form_name form_desc form_forum form_enabled form_bbcode_uid form_bbcode_bitfield (je suppose que le form data est bien repris de la bdd.)

Donc en faisant ta modif, ma page générée s'arrête = "&t=".

Le fait de soumettre le numéro de topic "manuellement" comme je l'avais fait n'est pas pris en compte car non vérifié ? Pas moyen de passer outre même si ce n'est pas forcément propre ?
Avatar de l’utilisateur
Mzr
Posteur habitué
Posteur habitué
 
Messages: 221
Enregistré le: 21 Nov 2002 à 18:13

Re: Récupérer variable ...

Messagepar sylver35 » 16 Déc 2010 à 11:42

Que dit tu??
Pas de topic_id ?? Je te rappelle ton propre code:
Code: Tout sélectionner
    $form_data = array(
                'forum_id'             => $form['form_forum'],
                'topic_id'             => $montopic_id,            

Ne voit tu donc pas le topic_id ici?
C'est simplement que ta variable $montopic_id doit être vide au départ! mais $form_data['topic_id'] existe bien sinon tu aurait une erreur retournée...
sylver35
Dieu des floodeurs
Dieu des floodeurs
 
Messages: 5943
Enregistré le: 26 Fév 2008 à 15:58
Localisation: Bretagne

Re: Récupérer variable ...

Messagepar Mzr » 16 Déc 2010 à 12:41

sylver35 a écrit:Que dit tu??
Pas de topic_id ?? Je te rappelle ton propre code:
Code: Tout sélectionner
    $form_data = array(
                'forum_id'             => $form['form_forum'],
                'topic_id'             => $montopic_id,            

Ne voit tu donc pas le topic_id ici?
C'est simplement que ta variable $montopic_id doit être vide au départ! mais $form_data['topic_id'] existe bien sinon tu aurait une erreur retournée...

On va reprendre, parce que (on) je m'y perd.

Dans posting.php, on a ajouté ceci :

Code: Tout sélectionner
if ($mode == 'post' || ($forum_id != 9 && $mode == 'reply'))
    {
        $sql = 'SELECT form_id, form_enabled
            FROM '
 . FORMS_TABLE . "
            WHERE form_forum = $forum_id"
;
        $result = $db->sql_query_limit($sql, 1);
        $form_data = $db->sql_fetchrow($result);
        
         
        if 
($form_data['form_id'] && ($form_data['form_enabled'] || $auth->acl_get('a_form')))
        {
            if($forum_id != 9 && $mode == 'reply')
            {
                redirect(append_sid("{$phpbb_root_path}form.$phpEx", 'f=' . $form_data['form_id'] . '&t=' .  $form_data['topic_id']));
            }
            else
            
{
                redirect(append_sid("{$phpbb_root_path}form.$phpEx", 'f=' . $form_data['form_id']));
            }
        }
    } 


Ce $form_data est bien issu de la requete SQL juste au-dessus ? Si oui, topic_id devrait être dans la BDD ?? Or il ne l'est pas.

Ensuite, dans form.php :

Code: Tout sélectionner
$montopic_id    = request_var('t', 0); 


puis
Code: Tout sélectionner
$form_data = array(
				'forum_id'          	=> $form['form_forum'],
				'topic_id'          	=> $montopic_id, 
				'icon_id'           	=> false, 


Pour au final envoyer :
Code: Tout sélectionner
$url_form = submit_post('reply', $topic_title, '', POST_NORMAL, $poll_data, $form_data); 


Et donc là, dans form.php, $montopic_id ne récupère pas de variable, il reste à zéro.

Edit : Je récupère bien ma variable $montopic_id via l'URL. Grace à un echo juste après, la contenu s'affiche bien. Cependant, lorsque je refais un echo de $montopic_id à l'intérieur de :
Code: Tout sélectionner
if ($submit || $preview)
{


Je me retrouve avec une valeur = 0 ... Il y a un truc qui m'échappe ... Lorsqu'on clic sur sibmit ou preview, mes varaibles ne sont plus prises en compte ? Ou plus de la même façon ,
Avatar de l’utilisateur
Mzr
Posteur habitué
Posteur habitué
 
Messages: 221
Enregistré le: 21 Nov 2002 à 18:13

Re: Récupérer variable ...

Messagepar Mzr » 16 Déc 2010 à 16:46

Bon, le problème se situait à ce niveau :

Code: Tout sélectionner
'S_POST_ACTION'	=> append_sid("{$phpbb_root_path}form.$phpEx", 'f=' . $form_id


Remplacé par :

Code: Tout sélectionner
'S_POST_ACTION'	=> append_sid("{$phpbb_root_path}form.$phpEx", 'f=' . $form_id  . '&t=' .  $montopic_id),


J'ai rajouté ce que j'ai ajouté dans le posting pour que lorsque la page s'éxecute de nouveau quand on appuie sur submit, on reprenne bien le topic_id
Avatar de l’utilisateur
Mzr
Posteur habitué
Posteur habitué
 
Messages: 221
Enregistré le: 21 Nov 2002 à 18:13


Retourner vers Coding, Webmastering et Sécurité informatique

 


  • Articles en relation
    Réponses
    Vues
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Bing [Bot] et 4 invités