2016-12-14 91 views
0

我tryng通过在URL参数,但我收到此错误: *破灭():在*如何通过在URL参数数组 - PHP

传递的参数无效我知道,原因是我传递一个字符串作为参数,而不是一个数组,但我怎么能直接传递数组?

我的代码:

$all_prod_cat="SELECT * FROM products GROUP BY product_category"; 
$run_all_prod_cat = mysqli_query($con,$all_prod_cat); 

$sql= "SELECT * FROM products"; 

if(isset($_GET['product_category']) && $_GET['product_category']!="") 
    { 
     $risperpag = 16;    
     $limit = $risperpag * $_GET['p'] - $risperpag; 

     $prod_cat = $_GET['product_category']; 
     $sql.=",categories WHERE product_category IN ('".implode("','",$prod_cat)."') AND product_category = cat_id LIMIT $limit,$risperpag"; 

     $get_cat_pro_total = "SELECT * FROM products,categories WHERE product_category IN ('".implode("','",$prod_cat)."') AND product_category = cat_id";  


$run_cat_pro_total = mysqli_query($con,$get_cat_pro_total); 
$num_cat_pro_total = mysqli_num_rows($run_cat_pro_total); 

$npag = ceil($num_cat_pro_total/$risperpag); 

$p = $_GET['p'];  

echo "<ul>"; 

    if($p!=1) 
    {   
     echo '<li class="numPagine"><a href="lista_prodotti.php?sort_price=&product_category='.urlencode($stringa).'&p='.($p-1).'">← Indietro</a></li>'; 
    } 

    for($i=1;$i<=$npag;$i++){ 

      if($p==$i) 
      { 

      echo '<li class="numPagine pagina_attuale">'.$i.'</li>'; 
      } 
      else 
      {    
      echo '<li class="numPagine"><a href="lista_prodotti.php?sort_price=&product_category='.urlencode($stringa).'&p='.$i.'">'.$i.'</a></li>'; 
      } 

    }    

    if($p!=$npag) 
    {   
     echo '<li class="numPagine"><a href="lista_prodotti.php?sort_price=&product_category='.urlencode($stringa).'&p='.($p+1).'">Avanti →</a></li>';      

    }   

echo "</ul>";   

    }  

问题是,当我设置的参数进行urlencode,我试图序列,但我得到一个其它的错误。我想我应该反序列化,但我不知道确切的一点。

在此先感谢。

+0

您的网址现在如何显示? – nowaja

+0

'url?product_category [] = 1&product_category [] = 2'将在PHP中给出一个数组,但您需要添加检查来查看** untrustable **用户输入是否实际上是一个数组, –

+1

[passing数组作为url参数](http://stackoverflow.com/questions/1763508/passing-arrays-as-url-parameter) –

回答

0

使用http_build_query函数可以通过get参数生成url。

$urlparams = [ 
    'product_category' => [ 
     'cat1', 
     'cat2', 
     'cat3', 
     'cat4' 
    ] 
]; 

echo http_build_query($urlparams); 
+0

product_category是动态的,我该怎么办? – vale

+0

同样的道理?只需动态地将值插入数组$ urlparams – nowaja

+0

不起作用...我总是得到相同的错误:( – vale