2013-03-25 2 views
0

데이터베이스에서 이미지를 표시 할 수 있었지만 표 형식을 사용하지 않고 연속적으로 표시합니다. 추가 if 루프 또는 while 루프를 수행해야합니까?여러 개의 연속적인 행과 열의 표에서 에코를 사용하여 이미지 표시

<table cellpadding='4' cellspacing='0'> 

<?php 
include 'dbFunctions.php'; 
$arrStocks = executeSelectQuery("SELECT name,id,image,price FROM stocks"); 

for ($countStocks = 0; $countStocks < count($arrStocks); $countStocks++) { 
    $name = $arrStocks[$countStocks]['name']; 
    $image = $arrStocks[$countStocks]['image']; 
    $id = $arrStocks[$countStocks]['id']; 
    $price = $arrStocks[$countStocks]['price']; 
?> 
    <thead> 
    <tr> 
     <th class="timgG"> 
     <h4><?php echo '<img src="stocks/' . $image . '">' ?></h4> 
     </th> 
     <th class="timgG"> 
     <?php echo '<a href="stockDetails.php?id=' . $id . '">' . $name . '</a>'; ?> 
     </th> 
    </tr> 
<?php 
} 
?> 
    </thead> 
</table> 
+0

"그냥 테이블에 어떤 형식도없이 연속적으로 표시됩니다"부분을 설명해 주시겠습니까? 무엇을 성취하려고합니까? – astorije

+0

위의 코드를 사용하면 단일 열로 표시된다는 의미입니다. 그리고 난 단지 하나의 열 대신 여러 행과 열로 이미지를 표시하고 싶습니다. @ JérémieAstori – nurf

+0

나는 아직도 당신이 성취하려는 것을 얻지 못한다. 나는 가짜 데이터를 사용하여 그것을 tred했다. @FaCE가 (의미적인 이상 함과 함께) 반복문에 빠져있는' '을 제외하고, 필자는 여러 개의 행을 가지고 있는데, 각 행은 두 개의 열로 구성되어있다. (첫 번째는 이미지이고, 두 번째는 링크이다.). – astorije

답변

0

현재 코드는 출력에 잘 HTML을 형성되지 않은

<table> 
    <thead> 
    <tr> 
    <th><h4><img /></h4></th> 
    <th><a>...</a></th> 
    </tr> 
    <thead> 
    <tr> 
    <th><h4><img /></h4></th> 
    <th><a>...</a></th> 
    </tr> 
    <thead> 
    <tr> 
    <th><h4><img /></h4></th> 
    <th><a>...</a></th> 
    </tr> 

    ... 
</thead> 

처럼 보이는 뭔가를 것입니다. 나는 당신이 테이블 컬럼 헤더 인 테이블의 모든 행이나 헤더에 이미지를 가질 필요가 없다고 생각한다.

<th></th> 대신 <td></td>을 사용하고 오프닝 <thead>을 for 루프 외부에 두십시오.

arrStocks 쿼리의 첫 번째 행인 경우 테이블 제목이 무엇인지 고려해야 할 수도 있습니다. if 문을 추가하여 첫 번째 테이블 행의 출력을 make 그들 <th></th>,하지만 다시, 왜 당신이 테이블 헤더로 이미지를 정의해야할지 모르겠어요. 테이블 출력을 깰 수

편집

유일한 다른 점은 다음과 같습니다 당신의 내용이다.

는 시도 : 내가 제대로 당신이 무엇을 요구 이해하면

<?php 
include 'dbFunctions.php'; 
$arrStocks = executeSelectQuery("SELECT name,id,image,price FROM stocks"); 
?> 
<table cellpadding='4' cellspacing='0'> 
<? 
for ($countStocks = 0; $countStocks < count($arrStocks); $countStocks++) { 
    $name = $arrStocks[$countStocks]['name']; 
    $image = $arrStocks[$countStocks]['image']; 
    $id = $arrStocks[$countStocks]['id']; 
    $price = $arrStocks[$countStocks]['price']; 
?> 
    <tr> 
     <td class="timgG"> 
     <?php echo '<img src="stocks/' . $image . '" alt="">' ?> 
     </td> 
     <td class="timgG"> 
     <?php echo '<a href="stockDetails.php?id=' . $id . '">' . $name . '</a>'; ?> 
     </td> 
    </tr> 
<?php 
} 
?> 
</table> 
+0

나머지 페이지는 어떻게 생겼습니까? CSS가 있습니까? – FaCE

+0

좋습니다. 고마워. 뒤로 내가 달성하기 위해 노력하고 무엇을, 나는 그것이 나에게이 '

' '' '' '<클래스 = "TIMG"일>'의 출력을 줄 것이다 뭔가를 에코 할 '의 ' '의 ' '' "" '의 ' '< th class = "timg"> ' '<클래스 = "TIMG"일> ' ' ' ' ' '
'난 당신이 그들이 이미지를 표시 온라인 상점에 표시되는 내용과 비슷한 무언가를 달성하기 위해 노력하고있어 – nurf

+0

및 테이블의 텍스트는 – nurf

0

, 당신은 이미지의 격자를 원한다. 그리드는 2- 엔트리 테이블이므로 실제로 2 개의 루프가 필요합니다. 행의 모든 ​​항목 (즉, 모든 열)은 첫 번째 루프에서 비롯되며 모든 행은 첫 번째 루프를 호출하는 두 번째 루프에서 비롯됩니다.

이 다음 발췌 문장을 보겠습니다. 당신이주지 않은 몇 가지 알려지지 않은 제약이 있습니다. 그래서 나는 그것들 중 일부를 가정 할 것입니다. 예를 들어, 데이터가 일차원 배열로 반환된다고 가정합니다.

<?php 
$data = array('one', 'two', 'three', 'four', 'five', 'six'); 
$nbColumns = 3; 
?> 

<table> 
    <?php 
    for($row = 0; $row * $nbColumns < count($data); ++$row) { 
    ?> 
    <tr> 
    <?php 
    for($col = 0; $col < $nbColumns; ++$col) { 
    ?> 
     <td><?php echo $data[$row * $nbColumns + $col]; ?></td> 
    <?php 
    } 
    ?> 
    </tr> 
    <?php 
    } 
    ?> 
</table> 

이 생성됩니다

<table> 
    <tr> 
    <td>one</td> 
    <td>two</td> 
    <td>three</td> 
    </tr> 
    <tr> 
    <td>four</td> 
    <td>five</td> 
    <td>six</td> 
    </tr> 
</table> 

당신은 여러분의 필요에이 코드를 적용 할 수 있어야한다.

제 대답/스 니펫을 편집 할 수 있도록 설명해야 할 것이 있는지 알려주세요.


편집 :

난 당신이 설명하는 내게 필요한 것을 얻을 모르겠습니다.

어쨌든 간단히 말해서 초기 코드를 스 니펫에 다시 넣었지만 특별한 것은하지 않았습니다. 기본적으로, 방금 include을 삽입하고 상단에 executeSelectQuery을 호출하고 멍청한 숫자를 두 줄로 바꿨습니다. 먼저 이미지가되고 두 ​​번째가 링크/이름이됩니다.

코드의 모든 세부 정보가 없으므로 보증 할 수 없습니다. 결론적으로

<?php 
include 'dbFunctions.php'; 
$arrStocks = executeSelectQuery("SELECT name,id,image,price FROM stocks"); 
$nbColumns = 3; 
?> 

<table> 
    <?php 
    for($row = 0; $row * $nbColumns < count($arrStocks); ++$row) { 
    ?> 
    <tr> 
    <?php 
    for($col = 0; $col < $nbColumns; ++$col) { 
     $index = $row * $nbColumns + $col; 
     $name = $arrStocks[$index]['name']; 
     $image = $arrStocks[$index]['image']; 
     $id = $arrStocks[$index]['id']; 
     $price = $arrStocks[$index]['price']; 
    ?> 
     <td> 
     <img src="stocks/<?php echo $image; ?>" alt="<?php echo $name; ?>"> 
     <br> 
     <a href="stockDetails.php?id=<?php echo $id; ?>"><?php echo $name; ?></a> 
     </td> 
    <?php 
    } 
    ?> 
    </tr> 
    <?php 
    } 
    ?> 
</table> 

, 당신은 당신이 원하는 것을 달성하기 위해 table를 사용하지 않도록주의하시기 바랍니다. 내 대답은 약간 hackish ( $nbColumns은별로 좋지 않다)이지만, table을 사용하여 원하는 것을 성취 할 수있는 더 좋은 방법은별로 없다.

편집하고 마지막 조각을 테스트, 지금 작동합니다 :


EDIT2가 ... float의 사용 하지만 더 나은 솔루션이 될 수 있습니다,하지만 더 이상 PHP 관련 문제가되지 않을 것입니다 -)

+0

당신이 의미하는 바를 얻지 만 코드에 어떻게 적용 할 수 있습니까? 이 페이지 상단의 내 코드를 참조 할 수 있습니다. $ arrStocks = executeSelectQuery ("SELECT name, id, image, price FROM stocks"); ...... @ Jérémie Astori – nurf

+0

내 편집을 참조하십시오. 이것은 – astorije

+0

당신에게 유용하고 적절했던 답변을 upvote하는 것을 잊지 마시고 실제로 해결책을 주셨던 답변을 수락하십시오 ;-) – astorije