好的,所以我有這個功能,我在頁面中使用了很多時間,但只有當我調用函數一次,或者如果一個帶有結果的函數我稱它爲第一...在php中自己的函數,多個調用不同的參數問題
這是查詢:
$resultClientes = mysql_query("SELECT nombre.idNombre
, nombre.nombre AS nombreNombre
, comuna.nombre AS nombreComuna
, giro.nombre AS nombreGiro
, provincia.nombre AS nombreProvincia
, provincia.region_idRegion AS idRegion
FROM nombre
INNER JOIN comuna ON nombre.Comuna_idComuna = comuna.idComuna
INNER JOIN giro ON nombre.Giro_idGiro = giro.idGiro
INNER JOIN provincia ON comuna.Provincia_idProvincia = provincia.idProvincia
ORDER BY nombreProvincia, nombreComuna, nombreGiro, nombreNombre");
,這是功能:
function listaClientesPorRegion($numReg,$query){
$nombreProvincia = "";
$nombreComuna = "";
$nombreGiro = "";
$nombreNombre = array();
$i=0;
while ($row = mysql_fetch_assoc($query)) {
if($row['idRegion']== $numReg){
if ($nombreProvincia == $row['nombreProvincia']) {
if ($nombreComuna == $row['nombreComuna']) {
if ($nombreGiro == $row['nombreGiro']) {
$nombreNombre[] = $row['nombreNombre'];
}
else { //nombreGiro
echo '<li>' . implode('</li><li>', $nombreNombre).'</li></ul></li></ul>';
$nombreGiro = $row['nombreGiro'];
echo '<ul class="clientes_giro"><li>'.$nombreGiro.'<ul
class="clientes_nombre">';
$nombreNombre = array($row['nombreNombre']);
}
}
else { // nombreComuna
echo '<li>' . implode('</li><li>', $nombreNombre).
'</li></ul></li></ul></li></ul>';
$nombreComuna = $row['nombreComuna'];
echo '<ul class="clientes_comuna"><li>'.$nombreComuna;
$nombreGiro = $row['nombreGiro'];
echo '<ul class="clientes_giro"><li>'.$nombreGiro.'<ul
class="clientes_nombre">';
$nombreNombre = array($row['nombreNombre']);
}
}
else { // nombreProvincia
if (!empty($nombreNombre)) {
echo '<li>' . implode('</li><li>', $nombreNombre).
'</li></ul></li></ul></li></ul></li></ul></div>';
}
$class = $i++ % 2 ? 'clientes_floatEven' : 'clientes_floatOdd';
$nombreProvincia = $row['nombreProvincia'];
echo '<div id="'.$class.'"><ul class="clientes_provincia">
<li><div class="underline_yellow">'.$nombreProvincia.'</div>';
$nombreComuna = $row['nombreComuna'];
echo '<ul class="clientes_comuna"><li>'.$nombreComuna;
$nombreGiro = $row['nombreGiro'];
echo '<ul class="clientes_giro"><li>'.$nombreGiro.'<ul
class="clientes_nombre">';
$nombreNombre = array($row['nombreNombre']);
}
}
}
if (!empty($nombreNombre)) {
echo '<li>' . implode('</li><li>', $nombreNombre).
'</li></ul></li></ul></li></ul></li></ul></div>';
}
}
,這是HTML的一部分
<div id="atacama">
<ul class="regiones_nomb_container">
<li class="atacama"></li>
</ul>
<?php
listaClientesPorRegion(3,$resultClientes);
?>
</div>
<div id="coquimbo">
<ul class="regiones_nomb_container">
<li class="coquimbo"></li>
</ul>
<?php
listaClientesPorRegion(4,$resultClientes);
?>
</div>
<div id="valparaiso">
<ul class="regiones_nomb_container">
<li class="valparaiso"></li>
</ul>
<?php
listaClientesPorRegion(5,$resultClientes);
?>
</div>
起初我只用一次時間和一個查詢,我知道會有記錄,如listaClientesPorRegion(9,$ resultClientes),然後我嘗試了一個數字,我知道不會有記錄,都工作,所以我打電話給我的網站所有的div多次,但現在不工作,我不知道爲什麼... (我是新的PHP和東西),謝謝你的幫助!
我首先想到的是,從函數返回一個數組/對象和顯示結果分別代替在函數內'echo'ing的。或者至少返回一串結果......我只是不喜歡函數/方法中的'echo'或'print'。 – 2011-04-26 01:10:29
對於這個建議,我可能會受到批評,但請看[Smarty](http://www.smarty.net/documentation)。將代碼從代碼中分離出來是讓代碼可重用和健壯(如果你做得對)的重要一步。 – 2011-04-26 01:14:50
還有[Flexy](http://pear.php.net/package/HTML_Template_Flexy/docs),它更像是一個模板引擎,但我覺得這個文檔很累。 – 2011-04-26 01:22:08