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> </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]} 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 :)
