2010-07-02 3 views
1

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?

Répondre

0

Vous pouvez modifier les valeurs des éléments de la matrice afin de toujours remplacer l'élément de produit par la valeur que vous souhaitez placer dans le champ. Bien que je dirais que si le champ attend une valeur d'identification comme il semble et que vous définissez une chaîne alors cela ne fonctionnera pas très bien.

Questions connexes