2013-08-19 4 views
1

PHP을 배우고 있습니다 만 여기에 약간의 문제가 있습니다. 내가 할MySQL 결과를 저장하고 처리하십시오.

는 몇 가지 정보 부족, 그래서 이것은 나에게 매우 도움이 될 것입니다 =)

내 데이터베이스에 대해 쿼리를 수행하고 결과를 얻을. 이 결과는 나열 할 모든 이미지 파일입니다. 내 페이지에 섬네일로 내 모든 파일을 나열하려면

$fileSQL = $mysqli->query(" 
    SELECT * 
    FROM content 
    WHERE projID=$projectID  
"); 

그래서, 이렇게 :

<?php while($row = $fileSQL->fetch_assoc()){ ?> 
    <img src="assets/<?=$row['contentFull']?>" id="thumbImg" 
    onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>   
<?php } ?> 

지금이 물론 잘 작동

. 모든 행을 반복하면서 각 행에 대해 a를 추가합니다.

그러나 첫 번째 엄지 손가락을 완전히 표시해야하는 주 이미지도 있습니다 (이 예에서는 엄지 손가락과 전체 크기로 모두 contentFull을 사용합니다).

이제 while 루프를 nr.2 행에서 시작하지 않고 첫 번째 행 contentFull을 얻으려면 어떻게해야합니까?

그리고 일반적으로; 이러한 상황에서 최선의 방법은 무엇입니까? 결과를 배열에 먼저 저장하십시오. 그러면 쉽게 액세스 할 수 있습니다. 아니면 "정상적인"방법입니까? =)

내가 필요한 것 :

  1. 그런 다음에 모든 이미지를 그려 내 SQL 결과의 첫 번째 이미지/컨텐츠)에서 contentFull를 사용하여 (주 이미지를 설정하는 쿼리를 수행 미리

감사 및 P (이미 주 화상으로 표시되는 제 등)에 미리 결과 임대

+1

OG하지만 mysql_ *이 아닌 mysqli_ * 함수를 배우고 있다는 것을 알게되어 기쁘게 생각합니다. – Anigel

+1

매개 변수화 된 쿼리를 사용하지 않음으로써 이들을 무효화 할 수 있습니다. – allen213

+0

그 allen213은 무엇을 의미합니까? –

답변

1

하나의 간단한 옵션이 작업을 수행하는 것) = 좀 더 자세한 정보가 필요하면 알려주세요 :

이제
<?php 
$first = null; 
while($row = $fileSQL->fetch_assoc()) { 
    if(!isset($first)) $first = $row; 
    ?> 
    <img src="assets/<?=$row['contentFull']?>" id="thumbImg" 
    onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>   
<?php } ?> 

당신이 모두를 저장하지 않고, 사용할 수있는 변수에 저장된 첫 번째 행 결과는 배열입니다. 어떤 이유로 당신이 배열에 저장된 모든 행을 원하는 경우에 당신은 간단하게이 작업을 수행 할 수 있습니다 :

<?php 
$rows = array(); 
while($row = $fileSQL->fetch_assoc()) { 
    $rows[] = $row; 
    //rest of code 
} 
?> 

는 그런 다음 전체를 채 웁니다 PHP를 사용하지하는 것입니다 $rows[0]

또 다른 옵션을 참조하여 첫 번째 행에 액세스 할 수 있습니다 영상. 대신 javascript 호출을 사용하여 첫 번째 이미지를 채 웁니다. 큰 이미지

$row = $fileSQL->fetch_assoc(); // the first picture 
if($row){ 
    // show first image if it exists 
    } 

while ($row = $fileSQL->fetch_assoc()) // etc. 

아마 코드가 다른 사람과는 다른, 그래서 그것은 합리적인 수 :

+0

고마워, 이것은 효과가있을 것이지만, 나는 그것을 할 수있는 다른 방법이 있기를 바랐다. ? 어떤 종류의 $ row [0] [ 'contentFull']을 호출하여 그 결과를 첫 번째 행에서 가져 오는 것은 불가능합니다. –

+0

원할 경우 http://php.net/manual/en/mysqli-result.fetch-all.php – Pitchinnate

+0

을 사용하십시오. 또는 배열을 유지하면서 모든 행을 저장해야합니다. 고리. – Pitchinnate

0

나는 당신이 while 루프 외부에서 첫 번째 사진을 찍을 수 있다고 생각. 그렇지 않으면 함수를 정의하거나 카운터 (또는 Pitchinnate의 answer에있는 플래그)를 사용하십시오.

+0

을 업데이트 하겠지만 while 루프를 입력 할 때 첫 행을 건너 뛰지 않겠습니까? 루프 외부에서 이미 행을 가져 왔으니 까? –

+0

예, 그렇기 때문에이 케이스를 완전히 처리해야합니다. 동일하면,이 기능을 쓸 수도 있지만, 다른 모든 이미지와 다른 방식으로 첫 번째 이미지를 표시한다고 가정하고있었습니다. – Voitcus

+1

mysqli_data_seek()를 사용하여 찾기를 재설정 할 수있다. http://www.php.net/manual/en/mysqli-result.data-seek.php – Pitchinnate

관련 문제