Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Probleme d'execution d'une page de requete avec smarty
#1

Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.4
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~

Bonjour, je demande votre aide concernant un problème avec smarty.
J'ai un module qui se compose d'une page ou je vais exécuter une requête d'insertion lors d'un clic sur le bouton valider.
Lors de ce click, je me retrouve sur une page vide, la requête ne s’exécute pas, elle s’exécute d’ailleurs au lancement de la page lorsqu'aucune valeur ne sont entrée dans les textbox. La question est comment faut-il gérer smarty pour pouvoir après click sur valider/envoyer, qu'on parcours le code php de la page en cours pour exécuter la requête a ce moment la.

Donc en résumer, le code qui exécute la requête se lance a l’exécution de la page, ne remplit pas les conditions de test(car valeur vide=> ce qui est normal). On click sur submit, et la on ne parcours pas le code, on quitte la page et c'est finit.
Si quelqu'un à une piste pour m'aider, je lui en serait infiniment reconnaissant.
Merci d'avance.
Voici un exemple du code:
Code :
[== PHP ==]

$db =& $this->GetDb();
$config = $this->config;

if (isset($params["submit"]) || isset($params["apply"]))
{
if (isset($params['ma_variable']))
{
    $id_ma_variable= $db->GenID(cms_db_prefix().'module_ma_base_ma_table_seq');
    $requete_insertion = "INSERT INTO ma_base VALUES(".$id_ma_variable.",$params['ma_variable'])."')"
    echo "INSERT INTO cmsms_module_ma_base_ma_table VALUES (".$id_ma_variable.",'"$params['categorie'])."')";

    $db->Execute($requete_insertion) or die("erreur requète2");
    $this->Redirect($id, 'defaultadmin', $returnid);
}
else
{
    exit(" Vous n'avez pas saisi de valeur");
}
}


// Assignation des valeurs aux templates
$this->smarty->assign('demarage_form',$this->CreateFormStart($id, 'creation_variable', $returnid));
if($_GET['para'])
{
$this->smarty->assign("input_id", $this->CreateInputHidden($id,"id",$_GET['para'],50,1000));
}
$this->smarty->assign("label_texte", $this->Lang("texte"));
$this->smarty->assign("textbox_mavariable", $this->CreateInputText($id,"ma_variable","",50,1000));
$this->smarty->assign("submit", $this->CreateInputSubmit($id, "submit", lang("submit")));
$this->smarty->assign('fin_form',$this->CreateFormEnd());

echo $this->ProcessTemplate('creation_fichier.tpl');

?>
Code :
[== HTML ==]
Fichier .tpl

<fieldset>
{$demarage_form}


<div>

<p>{$label_texte}:</p>
        <p>{$textbox_mavariable}</p>
        {$input_id}
</div>

<div>
<p>
<strong>&nbsp;</strong>
</p>
<p>
{$submit}
</p>
</div>
{$fin_form}
</fieldset>
Répondre
#2

Il manque un point virgule à la fin de cette ligne : $requete_insertion = "INSERT INTO ma_base VALUES(".$id_ma_variable.",$params['ma_variable'])."')"
Plus des problèmes dans tes guillemets.
Répondre
#3

Desolé, je te remercie pour ton aide mais j'ai du mal réecrire cette ligne car le code est correct dans ma page, j'ai
Code :
[== PHP ==]
$requete_insertion = "INSERT INTO ma_base VALUES(".$id_ma_variable.",".$params["ma_variable"].")";
Et donc c'est toujours le même problème, ce code est exécuté au lancement de la page, mais lors du clic du bouton submit, je quitte la page sans exécuter ce code.
Je cherche des infos sur le fonctionnement du submit pour comprendre pourquoi la valeur n'est pas relancé dans la page courante et ou peut-il bien me rediriger car je me retrouve sur une page blanche mais il n'y a pas grand chose qui m'aide pour le moment.
Répondre
#4

Ta ligne n'est pas correcte : tu dois échapper [\"ma_variable\"]
De plus, tu utilises une manière obsolète pour appeler la bd. Utilise ceci :
$db = cmsms()->GetDb();
Voir http://wiki.cmsmadesimple.fr/wiki/Udt_bdd
Quelle version de cmsms utilises-tu ?
Répondre
#5

Ah oui merci pour ses infos.
Je peaufine le code, Je corrige ça et je regarde si le code fonctionne mieux, même si je pense que le problème est ailleurs.

J'utilise la 1.7.
Répondre
#6

http://forum.cmsmadesimple.org/viewtopic...=1&t=57370 : What We Broke (Technical Stuff):
Tu dois upgrader, sinon pas de support Wink
Répondre
#7

Voila j'ai trouvé, c'etait tout bête, a la fin de la page lors de l'utilisation de smarty, lors de la creation du formulaire, j'ai mis:

$this->smarty->assign('demarage_form',$this->CreateFormStart($id, 'creation_variable', $returnid));

'creation_variable' est un nom que je creer afin de donner un nom au formulaire==> erreur, il faut remplacer par

$this->smarty->assign('demarage_form',$this->CreateFormStart($id, 'nom_de_ma_page', $returnid));

Je te remercie quand même pour ton aide, c'a m'a permis de retravailler mon code pour du plus propre Big Grin.
Répondre
#8

Tu as juste rendu un code obsolète plus propre Wink
La version 1.7 possède des failles de sécurité et n'est pas compatible avec MySQL 5.5+.
Répondre
#9

Ah d'accord, merci pour toutes ces infos,
je débute juste en cmsms du coup tout est bon à prendre.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)