J'ai une table MySQL appelée ventes, contenant les champs produit, quantité et payée. J'utilise un système de type CMS qui a une façon personnalisée de faire des formulaires et des champs de formulaire personnalisés à utiliser. Pour autant que je sache, l'ID donné à un champ de formulaire est ce qui est utilisé comme nom de la table à insérer dans.Problèmes de stockage du contenu d'un formulaire via CMS
Ma forme actuelle, je me sers est la suivante:
<?php
include("../../include/session.php");
include("include/tables.php");
include("include/fields.php");
//if you need to ovveride the phpbmsTable class make sure to include the modules file
include("include/sales.php");
if(!isset($_GET["backurl"]))
$backurl = NULL;
else{
$backurl = $_GET["backurl"];
if(isset($_GET["refid"]))
$backurl .= "?refid=".$_GET["refid"];
}
$thetable = new sales($db, "tbld:490cf2d1-1c72-7b99-461d-b1b8e68553c4");
$therecord = $thetable->processAddEditPage();
if(isset($therecord["phpbmsStatus"]))
$statusmessage = $therecord["phpbmsStatus"];
$pageTitle = "Sales";
$phpbms->cssIncludes[] = "pages/menus.css";
$phpbms->jsIncludes[] = "modules/base/javascript/menu.js";
$theform = new phpbmsForm();
$theinput = new inputSmartSearch($db, "product", "Choose Product",$therecord["product"], "Choose Product", TRUE, NULL, NULL, TRUE, $required=true);
$theinput->setAttribute("class","important");
$theform->addField($theinput);
$theinput = new inputField("quantity",$therecord["quantity"],"Quantity",true, NULL, 1);
$theinput->setAttribute("class","important");
$theform->addField($theinput);
$theinput = new inputCheckbox("paid", $therecord["paid"], "Paid");
$theform->addField($theinput);
$thetable->getCustomFieldInfo();
$theform->prepCustomFields($db, $thetable->customFieldsQueryResult, $therecord);
$theform->jsMerge();
include("header.php");
?><div class="bodyline">
<?php $theform->startForm($pageTitle)?>
<div id="leftSideDiv">
<fieldset>
<legend><label for="S">Sales</label></legend>
<p class="big"><?php $theform->showField("product"); ?></p>
<p class="big"><?php $theform->showField("quantity"); ?></p>
<p class="big"><?php $theform->showField("paid"); ?></p>
</fieldset>
</div>
<?php
$theform->showGeneralInfo($phpbms,$therecord);
$theform->endForm();
?>
</div>
<?php include("footer.php");?>
Le contenu de quantité et payés sont stockés dans la table sans problème, mais le produit ne fonctionne pas, de ce que je peux dire parce qu'à un moment donné 'ds-' est ajouté à l'identifiant. Je suppose que c'est parce que j'utilise un champ de saisie différent (que j'ai besoin d'utiliser).
Ceci est le résultat du POST après avoir essayé d'enregistrer un formulaire:
Array ([product] => 75c72a6a-83d9-11df-951a-fa9c1ec271f2 [DS-produit] => Corona [quantité] => 2 [payant] => 0 [createdby] => [date_définition] => [commande] => save [modifiedby] => [cancelclick] => 0 [modifieddate] => [uuid] =>: 4402add3-b884-43e6 -04ad-c76d92ee465b [id] =>)
Au lieu de cela, l'UUID est inséré dans le produit, au lieu du nom du produit.
Je me demande s'il y a une solution à cela? Je ne pense pas avoir un accès direct pour changer le code de la requête, et je ne peux pas renommer le produit en ds-produit parce que je ne peux pas changer la requête pour accéder à un nom de champ avec un trait d'union.
Il y a la possibilité de remplacer les classes, comme ci-dessus j'ai inclus sales.php, qui est basé sur l'exemple here. Est-ce que la solution pour remplacer d'une manière ou d'une autre la fonction insertRecord, et si oui, comment? Ou y a-t-il une solution plus simple?