2011-11-03 3 views
-3
$selectra_result = mysql_query("SELECT * FROM `my_selectra` WHERE user_id='$user_id'") or die(mysql_error()); 

while($row = mysql_fetch_array($selectra_result)) { 
    $product_id = $row['product_id']; 
    $namep[] = $product_name= $row['product_name']; 
    $linkp[] = $product_permalink = $row['product_permalink']; 
    $imgpp[] = $product_image_path = $row['product_image_path'];  
} 

    foreach($namep as $pname => $prodname){ 
     foreach($linkp as $plink => $prodlink) { 
     foreach($imgpp as $ppath => $prodpath) { 

     $res1 = "<a href='$prodlink'><p>$prodname</p></a>"; 
     $res2 = "<a href='$prodlink'><img src='$prodpath'/>"; 

      } 
     }  
     } 
     echo $res2.''.$res1; 

} 

foreach를 사용하여 my_selectra 테이블의 데이터를 표시하고 싶지만, 불행히도 반향 할 때 하나의 데이터 만 표시됩니다.에코 할 때 Foreach PHP 단 하나의 데이터 만 표시됩니다.

+8

I don ' 이걸 어디서부터 시작해야할지조차 알지 못한다 ... – DampeS8N

+9

'신께 사랑하는 신들의 눈'을위한 깃발이 있니? – Polynomial

+0

저는 3 명이 아니라 'foreach'가 있어야한다고 생각합니다. –

답변

3

코드가 복잡합니다. 원하는 데이터를 얻기 위해 3 개의 어레이가 필요하지 않으며 3 중첩 된 foreach 루프 구조가 필요하지 않습니다. 다음과 같이 시도하십시오.

$results = array(); 
while($row = mysql_fetch_array($selectra_result)) 
{ 
    $product_id = $row['product_id']; 
    $results[] = array($row['product_name'], $row['product_permalink'], $row['product_image_path']); 
} 

$res1 = $res2 = ''; 
foreach($results as $row) 
{ 
    $res1 .= "<a href='" . $row[1] . "'><p>" . $row[0] . "</p></a>"; 
    $res2 .= "<a href='" . $row[1] . "'><img src='" . $row[2] . "'/>"; 
} 
echo $res1 . $res2; 
+0

고마워, 너는 나를 구할거야 :) – user1028189

+1

어쩌면 그가 이것을 한 번 저장 했겠지만, 나는 솔직히 고용주에게 동정을 느낀다. 당신은 당신의 머리 너머에 있고 당신의 깊이 밖에 있습니다. 전문 스승을 찾으십시오! –

1

각 루프마다 $res1$res2을 계속 설정합니다.

루프 앞에서 $res1 = $res2 = '';, 그 다음은 $res1 .= '...'; $res2 .= '...';입니다.

+2

이 대답은 모든 문제를 해결하지 못합니다. – DampeS8N

1

에코의 범위가 잘못되었습니다. $ res2 변수 바로 밑에 놓습니다.

1

코드에는 많은 이중 선언과 가변 시프 팅이 있습니다. 기본 프로그래밍 패러다임을 올바르게 이해하는지 확신 할 수 없습니다. 솔직히 말해서 기본으로 돌아 가야합니다.

$selectra_result = mysql_query("SELECT * FROM `my_selectra` WHERE user_id='".intval($user_id)."'") or die(mysql_error()); 

while($row = mysql_fetch_array($selectra_result)) { 
     $product_id = $row['product_id']; 
     $product_name = $row['product_name']; 
     $product_image_path = $row['product_image_path']; 
     $product_permalink = $row['product_permalink']; 

     echo "<a href='$product_permalink'><p>$product_name</p></a>"; 
     echo "<a href='$product_permalink'><img src='$product_image_path'/>"; 
} 

이것은 내가 알고있는 것에 더 가깝습니다.

0

쿼리는 데이터베이스에서 하나의 행만 선택합니다 (id 열이 고유 한 경우).

왜 각 루프에 대해 루프 (foreach)가 필요합니까? 동일한 루프에서 (제공된 코드에서 변수를 정의하지 않기 때문에) 모든 배열이 생성된다는 것을 고려하면 (그 동안 명확하지는 않지만) 루프를 수행 할 필요가 없습니다.

관련 문제