Problème de Post lors d'un submit
12 messages
• Page 1 sur 1
Problème de Post lors d'un submit
Bonjour,
actuellement je réalise une nouvelle page de type Horaire avec le modèle MVC de opencart 1.4.9.3
j'ai crée mon controller, ma vue et mon modèle mais lorsque je souhaite soumettre mon formulaire, j'ai un problème avec le bouton "save" qui doit envoyer le formulaire avec la methode POST vers horaire/update ...
Lorsque je clique sur le bouton cancel : redirection vers catalog/horaire/update&token ... fonctionne, mais lorsque je clique sur le bouton save : redirection vers la page login : "Session invalide, veuillez vous reconnecter."
Avez-vous une idée ?
Voici du code
Vue :
Mon controller :
actuellement je réalise une nouvelle page de type Horaire avec le modèle MVC de opencart 1.4.9.3
j'ai crée mon controller, ma vue et mon modèle mais lorsque je souhaite soumettre mon formulaire, j'ai un problème avec le bouton "save" qui doit envoyer le formulaire avec la methode POST vers horaire/update ...
Lorsque je clique sur le bouton cancel : redirection vers catalog/horaire/update&token ... fonctionne, mais lorsque je clique sur le bouton save : redirection vers la page login : "Session invalide, veuillez vous reconnecter."
Avez-vous une idée ?
Voici du code
Vue :
- Code: Tout sélectionner
<div class="heading">
<h1 style="background: url('view/image/information.png') 2px 9px no-repeat;"><?php echo $heading_title; ?></h1>
<div class="buttons"><a onclick="$('#form').submit();" class="button" id="save"><span><?php echo $button_save;?></span></a><a onclick="location = '<?php echo $cancel;?>';" class="button"><span><?php echo $button_cancel;?></span></a></div>
</div>
<div class="content">
<form action="<?php echo $action; ?>" methode="post" enctype="multipart/form-data" id="form">
<div class="htabs">
<?php foreach ($languages as $language) { ?>
<a tab="#language<?php echo $language['language_id']; ?>"><img src="view/image/flags/<?php echo $language['image']; ?>" title="<?php echo $language['name']; ?>" /> <?php echo $language['name']; ?></a>
<?php } ?>
</div>
<?php foreach ($languages as $language) { ?>
<div id="language<?php echo $language['language_id']; ?>">
<table class="form" style="width:700px;">
<?php foreach($horaires as $horaire) {?>
<tr>
<td style="width:80px;"><?php echo $horaire['day'];?></td>
<td>de <select name="<?php echo $horaire['day']."-hour_begin1h";?>">
<?php for($i=0;$i<10;$i++) { ?> <option value="0<?php echo $i;?>" <?php if($i == $horaire['hour_begin1h'])echo "selected";?> >0<?php echo $i;?></option> <?php } for($i=10;$i<24;$i++){?><option value="<?php echo $i;?>" <?php if($i == $horaire['hour_begin1h'])echo "selected";?> ><?php echo $i;?></option><?php }?>
</select> :
<select name="<?php echo $horaire['day']."-hour_begin1m";?>">
<?php for($i=0;$i<10;$i+=5) {?><option value="0<?php echo $i;?>" <?php if($i == $horaire['hour_begin1m'])echo "selected";?> >0<?php echo $i;?></option> <?php }?><?php for($i=10;$i<60;$i+=5) {?><option value="<?php echo $i;?>" <?php if($i == $horaire['hour_begin1m'])echo "selected";?> ><?php echo $i;?></option> <?php }?>
</select> à
<select name="<?php echo $horaire['day']."-hour_end1h";?>">
<?php for($i=0;$i<10;$i++) { ?> <option value="0<?php echo $i;?>" <?php if($i == $horaire['hour_end1h'])echo "selected";?>>0<?php echo $i;?></option> <?php } for($i=10;$i<24;$i++){?><option value="<?php echo $i;?>" <?php if($i == $horaire['hour_end1h'])echo "selected";?>><?php echo $i;?></option><?php }?>
</select> :
<select name="<?php echo $horaire['day']."-hour_end1m";?>">
<?php for($i=0;$i<10;$i+=5) {?><option value="0<?php echo $i;?>" <?php if($i == $horaire['hour_end1m'])echo "selected";?>>0<?php echo $i;?></option> <?php }?><?php for($i=10;$i<60;$i+=5) {?><option value="<?php echo $i;?>" <?php if($i == $horaire['hour_end1m'])echo "selected";?>><?php echo $i;?></option> <?php }?>
</select>
et de <select name="<?php echo $horaire['day']."-hour_begin2h";?>">
<?php for($i=0;$i<10;$i++) { ?> <option value="0<?php echo $i;?>" <?php if($i == $horaire['hour_begin2h'])echo "selected";?> >0<?php echo $i;?></option> <?php } for($i=10;$i<24;$i++){?><option value="<?php echo $i;?>" <?php if($i == $horaire['hour_begin2h'])echo "selected";?> ><?php echo $i;?></option><?php }?>
</select> :
<select name="<?php echo $horaire['day']."-hour_begin2m";?>">
<?php for($i=0;$i<10;$i+=5) {?><option value="0<?php echo $i;?>" <?php if($i == $horaire['hour_begin2m'])echo "selected";?> >0<?php echo $i;?></option> <?php }?><?php for($i=10;$i<60;$i+=5) {?><option value="<?php echo $i;?>" <?php if($i == $horaire['hour_begin2m'])echo "selected";?> ><?php echo $i;?></option> <?php }?>
</select> à
<select name="<?php echo $horaire['day']."-hour_end2h";?>">
<?php for($i=0;$i<10;$i++) { ?> <option value="0<?php echo $i;?>" <?php if($i == $horaire['hour_end2h'])echo "selected";?>>0<?php echo $i;?></option> <?php } for($i=10;$i<24;$i++){?><option value="<?php echo $i;?>" <?php if($i == $horaire['hour_end2h'])echo "selected";?>><?php echo $i;?></option><?php }?>
</select> :
<select name="<?php echo $horaire['day']."-hour_end2m";?>">
<?php for($i=0;$i<10;$i+=5) {?><option value="0<?php echo $i;?>" <?php if($i == $horaire['hour_end2m'])echo "selected";?>>0<?php echo $i;?></option> <?php }?><?php for($i=10;$i<60;$i+=5) {?><option value="<?php echo $i;?>" <?php if($i == $horaire['hour_end2m'])echo "selected";?>><?php echo $i;?></option> <?php }?>
</select></td>
</tr>
<?php } ?>
</table>
</div>
<?php } ?>
</form>
</div>
Mon controller :
- Code: Tout sélectionner
public function update(){
echo print_r($_POST);
$this->load->language('catalog/horaire');
$this->document->title = $this->language->get('heading_title');
$this->load->model('catalog/horaire');
echo "ok/update";
if(($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()){
//$this->model_catalog_horaire->editHoraires($this->request->get['store_id'],$this->request->post);
echo"dans methode POST";
foreach($this->request->post as $key => $val){ echo "POST: key=".$key." value=".$value."<br/>";}
$this->session->data['success'] = $this->language->get('text_success');
$this->redirect(HTTPS_SERVER .'index.php?route=catalog/horaire&token=' .$this->session->data['token']);
}
$this->getForm();
}
public function delete(){
}
public function getForm(){
$this->document->breadcrumbs = array();
$this->document->breadcrumbs[] = array(
'href' => HTTPS_SERVER . 'index.php?route=catalog/product&token=' .$this->session->data['token'],
'text' => $this->language->get('text_home'),
'separator' => FALSE
);
$this->document->breadcrumbs[] = array(
'href' => HTTPS_SERVER . 'index.php?route=catalog/horaire&token=' .$this->session->data['token'],
'text' => $this->language->get('heading_title'),
'separator' => ' :: '
);
//a revoir
if(isset($this->request->get['store_id'])){
$this->data['action'] = HTTPS_SERVER . 'index.php?route=catalog/horaire/update&token=' . $this->session->data['token'] .'&store_id='.$this->session->data['store_id'];
}else {
$this->data['action'] = HTTPS_SERVER . 'index.php?route=catalog/horaire/update&token=' . $this->session->data['token'].'&store_id='.$this->session->data['store_id'];
}
$this->data['cancel'] = HTTPS_SERVER . 'index.php?route=catalog/horaire/update&token=' . $this->session->data['token'];
$this->load->model('localisation/language');
$this->data['languages'] = $this->model_localisation_language->getLanguages();
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['button_save'] = $this->language->get('button_save');
$this->data['button_cancel'] = $this->language->get('button_cancel');
$this->load->model('catalog/horaire');
$results = $this->model_catalog_horaire->getHoraires($this->session->data['store_id']);
foreach($results as $result) {
$this->data['horaires'][] = array(
'horaire_id' => $result['horaire_id'],
'store_id' => $result['store_id'],
'day' => $result['day'],
'hour_begin1h' => substr($result['hour_begin1'],0,2),
'hour_begin1m' => substr($result['hour_begin1'],3,5),
'hour_end1h' => substr($result['hour_end1'],0,2),
'hour_end1m' => substr($result['hour_end1'],3,5),
'hour_begin2h' => substr($result['hour_begin2'],0,2),
'hour_begin2m' => substr($result['hour_begin2'],3,5),
'hour_end2h' => substr($result['hour_end2'],0,2),
'hour_end2m' => substr($result['hour_end2'],3,5),
);
}
if (isset($this->error['warning'])) {
$this->data['error_warning'] = $this->error['warning'];
} else {
$this->data['error_warning'] = '';
}
if (isset($this->session->data['success'])) {
$this->data['success'] = $this->session->data['success'];
unset($this->session->data['success']);
} else {
$this->data['success'] = '';
}
$this->template = 'catalog/horaire.tpl';
$this->children = array(
'common/header',
'common/footer'
);
$this->response->setOutput($this->render(TRUE), $this->config->get('config_compression'));
}
Dernière édition par benjaminb le 02 Nov 2011, 22:29, édité 1 fois au total.
opencart 1.4.9.3
- benjaminb
- Messages: 6
- Inscrit le: 02 Nov 2011, 04:17
Re: Problème de Post lors d'un submit
Je vais regarder cela.
Par contre dans ton TPL il te manque par deux fois le point virgule situé à la fin de la lettre accentuée "à" (à) que tu as mis en dur.
Pourquoi ne pas avoir utilisé le formulaire de contact pour ajouter tes horaires dedans ?
Par contre dans ton TPL il te manque par deux fois le point virgule situé à la fin de la lettre accentuée "à" (à) que tu as mis en dur.
Pourquoi ne pas avoir utilisé le formulaire de contact pour ajouter tes horaires dedans ?
1 - A lire avant de poster un sujet
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
-

LeorLindel - Messages: 1987
- Inscrit le: 19 Fév 2010, 13:44
- Localisation: Lutéce
Re: Problème de Post lors d'un submit
**merci de prendre de ton temps pour m'aider à résoudre mon problème !!
j'ai en effet oublié le ";" après le à
maintenant la page contact.php ne me convient pas du tout j'ai créé ma propre page template pour les horaires de ma boutique,
j'ai toujours ce problème de POST vers ma fonction update, (je n'y accède pas à cause d'un problème de session, je retourne directement vers la page login avec session incorrecte) !
je pense que c'est ma variable $action qui ne convient pas aurez vous une idée?
j'ai en effet oublié le ";" après le à
maintenant la page contact.php ne me convient pas du tout j'ai créé ma propre page template pour les horaires de ma boutique,
j'ai toujours ce problème de POST vers ma fonction update, (je n'y accède pas à cause d'un problème de session, je retourne directement vers la page login avec session incorrecte) !
je pense que c'est ma variable $action qui ne convient pas aurez vous une idée?
opencart 1.4.9.3
- benjaminb
- Messages: 6
- Inscrit le: 02 Nov 2011, 04:17
Re: Problème de Post lors d'un submit
Est-ce normal que tu n'ai pas de "Public function insert" dans ton fichier /controller ?
1 - A lire avant de poster un sujet
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
-

LeorLindel - Messages: 1987
- Inscrit le: 19 Fév 2010, 13:44
- Localisation: Lutéce
Re: Problème de Post lors d'un submit
si j'en ai une je ne l'ai juste pas copier !
Controller complet :
Controller complet :
- Code: Tout sélectionner
<?php
class ControllerCatalogHoraire extends Controller {
private $error = array();
private $var = array();
public function index(){
$this->load->language('catalog/horaire');
$this->document->title = $this->language->get('heading_title');
$this->load->model('catalog/horaire');
$this->getForm();
}
public function insert(){
$this->load->language('catalog/horaire');
$this->document->title = $this->language->get('heading_title');
$this->load->model('category/horaire');
echo "ok/insert";
$this->getForm();
}
public function update(){
echo print_r($_POST);
$this->load->language('catalog/horaire');
$this->document->title = $this->language->get('heading_title');
$this->load->model('catalog/horaire');
echo "ok/update";
if(($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()){
//$this->model_catalog_horaire->editHoraires($this->request->get['store_id'],$this->request->post);
echo"dans methode POST";
foreach($this->request->post as $key => $val){ echo "POST: key=".$key." value=".$value."<br/>";}
$this->session->data['success'] = $this->language->get('text_success');
$this->redirect(HTTPS_SERVER .'index.php?route=catalog/horaire&token=' .$this->session->data['token']);
}
$this->getForm();
}
public function delete(){
}
public function getForm(){
$this->document->breadcrumbs = array();
$this->document->breadcrumbs[] = array(
'href' => HTTPS_SERVER . 'index.php?route=catalog/product&token=' .$this->session->data['token'],
'text' => $this->language->get('text_home'),
'separator' => FALSE
);
$this->document->breadcrumbs[] = array(
'href' => HTTPS_SERVER . 'index.php?route=catalog/horaire&token=' .$this->session->data['token'],
'text' => $this->language->get('heading_title'),
'separator' => ' :: '
);
//a revoir
if(isset($this->request->get['store_id'])){
$this->data['action'] = HTTPS_SERVER . 'index.php?route=catalog/horaire/update&token=' . $this->session->data['token'] .'&store_id='.$this->session->data['store_id'];
}else {
$this->data['action'] = HTTPS_SERVER . 'index.php?route=catalog/horaire/update&token=' . $this->session->data['token'].'&store_id='.$this->session->data['store_id'];
}
$this->data['cancel'] = HTTPS_SERVER . 'index.php?route=catalog/horaire/update&token=' . $this->session->data['token'];
$this->load->model('localisation/language');
$this->data['languages'] = $this->model_localisation_language->getLanguages();
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['button_save'] = $this->language->get('button_save');
$this->data['button_cancel'] = $this->language->get('button_cancel');
$this->load->model('catalog/horaire');
$results = $this->model_catalog_horaire->getHoraires($this->session->data['store_id']);
foreach($results as $result) {
$this->data['horaires'][] = array(
'horaire_id' => $result['horaire_id'],
'store_id' => $result['store_id'],
'day' => $result['day'],
'hour_begin1h' => substr($result['hour_begin1'],0,2),
'hour_begin1m' => substr($result['hour_begin1'],3,5),
'hour_end1h' => substr($result['hour_end1'],0,2),
'hour_end1m' => substr($result['hour_end1'],3,5),
'hour_begin2h' => substr($result['hour_begin2'],0,2),
'hour_begin2m' => substr($result['hour_begin2'],3,5),
'hour_end2h' => substr($result['hour_end2'],0,2),
'hour_end2m' => substr($result['hour_end2'],3,5),
);
}
$this->data['token']= $this->session->data['token'];
if (isset($this->error['warning'])) {
$this->data['error_warning'] = $this->error['warning'];
} else {
$this->data['error_warning'] = '';
}
if (isset($this->session->data['success'])) {
$this->data['success'] = $this->session->data['success'];
unset($this->session->data['success']);
} else {
$this->data['success'] = '';
}
$this->template = 'catalog/horaire.tpl';
$this->children = array(
'common/header',
'common/footer'
);
$this->response->setOutput($this->render(TRUE), $this->config->get('config_compression'));
}
public function getHoraires(){
}
private function validateForm(){
if(!$this->user->hasPermission('modify','catalog/horaire')){
$this->error['warning'] = $this->language->get('error_permission');
}
if(!$this->error){
return TRUE;
}else {
if(!isset($this->error['warning'])){
$this->error['warning'] = $this->language->get('error_requiered_data');
}
}
}
}
?>
opencart 1.4.9.3
- benjaminb
- Messages: 6
- Inscrit le: 02 Nov 2011, 04:17
Re: Problème de Post lors d'un submit
Que fais exactement ton formulaire hormis donner les horaires et pourquoi faut-il qu'il y ai une soumission de formulaire ?
1 - A lire avant de poster un sujet
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
-

LeorLindel - Messages: 1987
- Inscrit le: 19 Fév 2010, 13:44
- Localisation: Lutéce
Re: Problème de Post lors d'un submit
dans ma base de donnée, j'ai une table 'horaire' qui contient les horaires sous la forme suivante :
** horaire_id | store_id | day | hour_begin1 | hour_end1 | hour_begin2 | hour_end2 **
attention je parle bien de boutique physique (cad le commerçant tel qu'une boulangerie ...)
cela permet d'enregistrer des tranches horaires pour chacune de mes boutiques .
par exemple : la boutique1 ouvre lundi de 08:00 à 11:00 et de 14:00 à 19:00.
la boutique2 ouvre lundi de 09:00 à ... (vous avez comprit le principe)
actuellement j'arrive à rechercher les données dans ma base de donnée, grâce à mon modèle et mon controller, j'arrive à afficher les données dans mon template !
maintenant la deuxième partie (et c'est ici que le problème survient) , c'est la partie ou je modifie ces horaires dans mon formulaire et je décide de l'update dans ma base de donnée (en passant par ce bouton sauvegarde)
le principe est de post mon formulaire à la fonction /controller/catalog/horaire->update() (avec: index.php?route=catalog/horaire/update&token= ... ) qui va appeler la fonction dans le modèle /model/catalog/horaire->update() et ainsi mettre à jour ma base de donnée.
après il me restera plus qu'à faire un template pour afficher cela du côté front office(catalog)
j'espére avoir été clair dans mes explications. avez vous d'autres questions qui pourrait vous aider à comprendre l'utilité de cette page horaire ?
** horaire_id | store_id | day | hour_begin1 | hour_end1 | hour_begin2 | hour_end2 **
attention je parle bien de boutique physique (cad le commerçant tel qu'une boulangerie ...)
cela permet d'enregistrer des tranches horaires pour chacune de mes boutiques .
par exemple : la boutique1 ouvre lundi de 08:00 à 11:00 et de 14:00 à 19:00.
la boutique2 ouvre lundi de 09:00 à ... (vous avez comprit le principe)
actuellement j'arrive à rechercher les données dans ma base de donnée, grâce à mon modèle et mon controller, j'arrive à afficher les données dans mon template !
maintenant la deuxième partie (et c'est ici que le problème survient) , c'est la partie ou je modifie ces horaires dans mon formulaire et je décide de l'update dans ma base de donnée (en passant par ce bouton sauvegarde)
le principe est de post mon formulaire à la fonction /controller/catalog/horaire->update() (avec: index.php?route=catalog/horaire/update&token= ... ) qui va appeler la fonction dans le modèle /model/catalog/horaire->update() et ainsi mettre à jour ma base de donnée.
après il me restera plus qu'à faire un template pour afficher cela du côté front office(catalog)
j'espére avoir été clair dans mes explications. avez vous d'autres questions qui pourrait vous aider à comprendre l'utilité de cette page horaire ?
opencart 1.4.9.3
- benjaminb
- Messages: 6
- Inscrit le: 02 Nov 2011, 04:17
Re: Problème de Post lors d'un submit
Essaye avec le update comme cela :
- Code: Tout sélectionner
public function update() {
$this->load->language('catalog/horaire');
$this->document->title = $this->language->get('heading_title');
$this->load->model('catalog/horaire');
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) {
$this->model_catalog_horaire->editHoraire($this->request->get['horaire_id'], $this->request->post);
$this->session->data['success'] = $this->language->get('text_success');
$url = '';
$this->redirect(HTTPS_SERVER . 'index.php?route=catalog/horaire&token=' . $this->session->data['token'] . $url);
}
$this->getForm();
}
1 - A lire avant de poster un sujet
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
-

LeorLindel - Messages: 1987
- Inscrit le: 19 Fév 2010, 13:44
- Localisation: Lutéce
Re: Problème de Post lors d'un submit
non!
quand je clique sur le bouton save, toujours le même problème : problème de retour login "session incorrecte, veuillez vous reloger ..."
je pense que c'est un problème de la variable $action et &token ...
sinon quelle est la particularité de la fonction .$('#form').submit() ?
quand je clique sur le bouton save, toujours le même problème : problème de retour login "session incorrecte, veuillez vous reloger ..."
je pense que c'est un problème de la variable $action et &token ...
sinon quelle est la particularité de la fonction .$('#form').submit() ?
opencart 1.4.9.3
- benjaminb
- Messages: 6
- Inscrit le: 02 Nov 2011, 04:17
Re: Problème de Post lors d'un submit
Dans ton fichier tpl, remplace cette ligne :
- Code: Tout sélectionner
<form action="<?php echo $action; ?>" methode="post" enctype="multipart/form-data" id="form">
- Code: Tout sélectionner
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form">
1 - A lire avant de poster un sujet
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
-

LeorLindel - Messages: 1987
- Inscrit le: 19 Fév 2010, 13:44
- Localisation: Lutéce
Re: Problème de Post lors d'un submit
Parfait problème résolu ! (de temps en temps un copier-coller peut être une valeur sure...)
(je m'en veux beaucoup !!) mais en tout cas je vous remercie beaucoup pour cette réponse rapide !
(je m'en veux beaucoup !!) mais en tout cas je vous remercie beaucoup pour cette réponse rapide !
opencart 1.4.9.3
- benjaminb
- Messages: 6
- Inscrit le: 02 Nov 2011, 04:17
Re: Problème de Post lors d'un submit
Bien heureux que cela fonctionne !!
1 - A lire avant de poster un sujet
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
2 - Politique sur la signature.

Il vaut mieux poser une question et paraître idiot cinq minutes que de ne pas la poser et être idiot toute sa vie.
Cool Boutik
-

LeorLindel - Messages: 1987
- Inscrit le: 19 Fév 2010, 13:44
- Localisation: Lutéce
12 messages
• Page 1 sur 1
Qui est en ligne ?
Utilisateur(s) parcourant actuellement ce forum : Exabot [Bot] et 1 invité





