Avatar billede bumle90 Nybegynder
20. juli 2004 - 22:31 Der er 1 løsning

Jeg forstår ikke html_quickform. Please hjælp mig.

Nu har jeg siddet og rodet med dette problem i mange dage, og jeg kan simpelthen ikke løse det ej heller finde hjælp på nettet nogle steder. Så nu skriver jeg her på eksperten i håb om at der er en venlig sjæl der forbarmer sig over mig og hjælper mig igennem.
Mit problem er følgende:
Jeg bruger php sammen med smarty og pear-pakken : html_quickform
Mit problem er at jeg har en side med flere individuelle forms på. Det kan jeg simpelthen ikke få til at virke ordentligt. Det er ligesom om objektet ikke kan finde ud af at skelne mellem de enkelte forms. Hvis man submitter den ene submitter den begge forms, og lægger man data i den ene kommer det også over i den anden osv. Jeg kan simpelten ikke finde ud af at adskille det, så hvis der nogle der kunne sige mig hvad jeg gør galt ville jeg blive en lykkelig mand.
Følgende er koden der laver formsne:

function getPhonecardView($smarty,$productid, $showform)
{
//echo($_POST['hidProductId']);
    //Getting phonecard product info

    if ($productid=="")
    {
        $WhereClause="";
    }
    else
    {
        $WhereClause="AND p.ProductID=".$productid;
    }

    $SQL="SELECT * ".
          "FROM suppliers s, products p, phonecards ph ".
          "WHERE s.SupplierID=p.SupplierID  AND p.ProductID=ph.ProductID ". $WhereClause;

    $result = mysql_query ($SQL);
    $renderer=$HowToUse=$SupplierName=$SupplierAddress=$SupplierCity=$SupplierPhone=$SupplierCountry=$SupplierCustSupportPhone=$SupplierOpeningHours=$SupplierWebiste=$SupplierEmail=$SupplierFax=$PicturePath=$TermsConditionsDK=$ProductName=$ProductID=$Amount=$Price=$Description=$SupportPhone=$DaysValid=$form_data=$serverforms=array();
    $ctr=0;
    //$form = new HTML_QuickForm('buycard', 'post');
    while($row = mysql_fetch_array($result)) {
       
        $SupplierName[$ctr]=$row["SupplierName"];
        $SupplierAddress[$ctr]=$row["SupplierAddress"];
        $SupplierCity[$ctr]=$row["SupplierCity"];
        $SupplierPhone[$ctr]=$row["SupplierPhone"];
        $SupplierCountry[$ctr]=$row["SupplierCountry"];
        $SupplierCustSupportPhone[$ctr]=$row["SupplierCustSupportPhone"];
        $SupplierOpeningHours[$ctr]=$row["SupplierOpeningHours"];
        $SupplierWebiste[$ctr]=$row["SupplierWebiste"];
        $SupplierEmail[$ctr]=$row["SupplierEmail"];
        $SupplierFax[$ctr]=$row["SupplierFax"];
        $PicturePath[$ctr]=$row["PicturePath"];
        $TermsConditionsDK[$ctr]=$row["TermsConditionsDK"];
        $ProductName[$ctr]=$row["ProductName"];
        $ProductID[$ctr]=$row["ProductID"];
        $AmountDKK[$ctr]=$row["AmountDKK"];
        $SalesPriceDKK[$ctr]=$row["SalesPriceDKK"];
        $DescriptionDK[$ctr]=$row["DescriptionDK"];
        $HowToUse[$ctr]=$row["HowToUse"];
        $DaysValid[$ctr]=$row["DaysValid"];
        $SupportPhone[$ctr]=$row["SupportPhone"];
               
                if($showform)
                {
                    $serverforms[$ctr] = new HTML_QuickForm('buycard'.$ProductID[$ctr], 'post');
                    $tempnumber=1;
                    if(isset($_SESSION['cart']))
                    {
                        //echo("bingo<br>");
                        for($i=0;$i<count($_SESSION['cart']);$i++)
                        {
                        //    echo("Session: ".$_SESSION['cart'][$i]['ID']." = ".$ProductID[$ctr]."<br>");
                            if(isset($_SESSION['cart'][$i]['ID']) & $_SESSION['cart'][$i]['ID']==$ProductID[$ctr])
                                /*echo("true<br>");*/$tempnumber=$_SESSION['cart'][$i]['number'];
                        }
                        //echo("efter for: ".$tempnumber);
                    }
                   
                    $serverforms[$ctr]->addElement('text', 'txtNumber', 'Antal',"value=".$tempnumber." id=cardnr".$ProductID[$ctr]);    //DBophentning
                    $serverforms[$ctr]->applyFilter('__ALL__', 'trim');
                   
                   
                    //echo("<h1>".$_SESSION['cart'][$i]['ID']."</h1>");
                    $serverforms[$ctr]->addRule('txtNumber', REQUIRED.' Angiv antal', 'required');    //DBophentning
                    $serverforms[$ctr]->addRule('txtNumber',REQUIRED.' Der skal indtastes nummer','numeric');
                    $serverforms[$ctr]->addElement('hidden','page','10');
                    $serverforms[$ctr]->addElement('hidden','hidProductId',$ProductID[$ctr]);
                    $serverforms[$ctr]->addElement('submit', 'btnSubmit', 'Køb');
                   
                    //echo("ID: ".$ProductID[$ctr]."=".$_POST['hidProductId']);
                    if($_POST['hidProductId']==$ProductID[$ctr])
                    {
                        if($serverforms[$ctr]->validate())
                        {
                            $txtNumber =& $serverforms[$ctr]->getElement('txtNumber');
                            if(!isset($_SESSION['cart'][$ctr]))
                                $_SESSION['cart'][$ctr]=array();
                            $_SESSION['cart'][$ctr]['number']=$txtNumber->getValue();
                            $_SESSION['cart'][$ctr]['name']=$ProductName[$ctr];
                            $_SESSION['cart'][$ctr]['price']=$SalesPriceDKK[$ctr];
                            $_SESSION['cart'][$ctr]['ID']=$ProductID[$ctr];
                            $_SESSION['cart'][$ctr]['totalProdPrice']=$txtNumber->getValue() * $SalesPriceDKK[$ctr];
                            echo("number ".$_SESSION['cart'][$ctr]['number']=$ProductID[$ctr]."<br>");
                            echo("name ".$_SESSION['cart'][$ctr]['name']=$ProductID[$ctr]."<br>");
                            echo("price ".$_SESSION['cart'][$ctr]['price']=$ProductID[$ctr]."<br>");
                            echo("ID ".$_SESSION['cart'][$ctr]['ID']=$ProductID[$ctr]."<br>");
                            echo("totalProdPrice ".$_SESSION['cart'][$ctr]['totalProdPrice']=$ProductID[$ctr]."<br>");
                            //redirect("controller.php");
                        }
                    }
                    //header("Location:controller.php?page=99&".$_SERVER['QUERY_STRING']."&".MakeQueryStrFromPOST($_POST));
                        //header("Location:controller.php?page=99");
                    // Create the renderer object   
                    $renderer[$ctr] =& new HTML_QuickForm_Renderer_ArraySmarty($smarty);
           
                    // build the HTML for the form
                    $serverforms[$ctr]->accept($renderer[$ctr]);
       
                    // assign array with form data
                    $form_data[$ctr]=$renderer[$ctr]->toArray();
                    //print_r($form_data[$ctr]);
                    //echo("<br><br><br>");
                    //$form=NULL;   
                    //$renderer=NULL;
                    }//end form if
                    $ctr++;
            }//end while
       
        $smarty->assign("SupplierName",$SupplierName);
        $smarty->assign("SupplierAddress",$SupplierAddress);
        $smarty->assign("SupplierCity",$SupplierCity);
        $smarty->assign("SupplierPhone",$SupplierPhone);
        $smarty->assign("SupplierCountry",$SupplierCountry);
        $smarty->assign("SupplierCustSupportPhone",$SupplierCustSupportPhone);
        $smarty->assign("SupplierOpeningHours",$SupplierOpeningHours);
        $smarty->assign("SupplierWebiste",$SupplierWebiste);
        $smarty->assign("SupplierEmail",$SupplierEmail);
        $smarty->assign("SupplierFax",$SupplierFax);
        $smarty->assign("PicturePath",$PicturePath);
        $smarty->assign("TermsConditionsDK",$TermsConditionsDK);
        $smarty->assign("ProductName",$ProductName);
        $smarty->assign("ProductID",$ProductID);
        $smarty->assign("AmountDKK",$AmountDKK);
        $smarty->assign("SalesPriceDKK",$SalesPriceDKK);
        $smarty->assign("DescriptionDK",$DescriptionDK);
        $smarty->assign("HowToUse",$HowToUse);
        $smarty->assign("SupportPhone",$SupportPhone);
        $smarty->assign("DaysValid",$DaysValid);
           
            if ($showform)
            {       
                $smarty->assign('form_data', $form_data);
            }   
    return $smarty;
}

og følgende er tpl-filen der udskriver dem:

{section name=Productctr loop=$ProductID}
<table border=0 width=100%>
<tr>
<td valign=top>
<table border=0 >
   
        <tr>
            <th align=left>Korttype:</th>
            <td nowrap>{$ProductName[Productctr]}</td>
           
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td  valign=center><a href="java script:void(0)" onclick="OpenJSWin('controller.php?page=1&ProductID={$ProductID[Productctr]}')"><img src="{$PicturePath[Productctr]}"></a><br><a href="java script:void(0)" onclick="OpenJSWin('controller.php?page=1&ProductID={$ProductID[Productctr]}')">Klik her for mere info</a></td>
        </tr>
       
        <tr>
            <th align=left>Beløb:</th>
            <td>{$AmountDKK[Productctr]} &nbsp;DKK</td>
        </tr>
       
        <form {$form_data[Productctr].attributes}>
        <tr>
            <th align=left>{$form_data[Productctr].txtNumber.label}</th>
              <td>{$form_data[Productctr].txtNumber.html}</td>
              <td style="color:red;">{$form_data[Productctr].txtNumber.error}</td>
        </tr>
        <tr>
              <td></td>
            <td>{$form_data[Productctr].btnSubmit.html}</td>
        </tr>
        {$form_data[Productctr].hidden}
       
       
        </form>
   
</table>
{/section}

pleeease help :)
Avatar billede bumle90 Nybegynder
24. august 2004 - 18:08 #1
Undskyld den bratte afslutning, men jeg har lidt for mange løse ender...Blir nødt til at lukke for nogle af alle mine spg.
Tak for hjællpen. Hvis der er lagt svar får disse point, eller er jeg nødt til at tage dem selv for at lukke alle de her spg.
Mvh.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester