각 열에 이미지 이름이 포함되도록 설정된 열이 10 개인 데이터베이스가 있습니다. 사용자는 개별적으로 이미지 소거 할PHP 중첩 된 FOR 루프 문제 해결
himage1, himage2, himage3 등 ... 및 해당 열 값은 화상이 없다는 것을 의미하는, '이 없음'으로 설정된다.
그러나 'himage4'에서 이후 필드가 '노나'이며, 사용자가 'himage1', 다음 행이 다음과 같이 표시됩니다를 삭제 것을 의미 3 개 이미지, 거기에 말 :
himage1 = 'NA ', himage2 = "... img2.jpg", himage3 = "... im3.jpg", himage4 ='na ', himage5 ='na '등 ...
이렇게하면 문제가 발생합니다. 얼마나 많은 이미지가 표시되도록 설정되어 있는지를 나타내는 'hnumimage'컬럼이 있습니다.
그러나 'hnumimage'가 2 인 경우이 예에서는 2 개의 이미지 만 있으므로 이미지를 표시하는 데 사용하는 루프는 비어 있더라도 'himage1'을 계속 표시하려고합니다.
이런 이유로 필드가 'na'인지 감지하고 다음 필드 중 하나에 올바른 이미지가 있는지 확인하는 함수를 만들려고합니다. 그렇다면 이미지 값을 앞으로 이동하십시오. 함수가 실행 된 후
따라서 위의 예에서, 그것은 다음과 같아야합니다
himage1 = "... img2.jpg", himage2 = "... im3.jpg을", himage3 = ' 'na', himage4 = 'na', himage5 = 'na'등 ...
2 개의 중첩 된 루프를 사용하고 있지만 관련된 논리에 문제가 있습니다.
for ($i = 1; $i <= 10; $i++) {
// IF IMAGE FIELD IS NA
if ($rs_home_delete_select_array[ 'himage' . $i ] == na) {
//CHECK FOLLOWING IMAGES
for ($o = $i + 1; $o <= 10; $o++) {
// IF FOUND IMAGE VALUE
if ($rs_home_delete_select_array[ 'himage' . $o ] != na) {
// MOVE THAT VALUE FORWARD, and CLEAR OLD FIELD
$vCurrImgVal = $rs_home_delete_select_array[ 'himage' . $o ];
$sql_arrange_img = "UPDATE tblhome SET himage" . $i . " = '" . $vCurrImgVal . "', himage" . $o . " = 'na' WHERE hid = 1";
$rs_arrange_img = mysqli_query($vconn_db, $sql_arrange_img);
}
}
}
이 기능은 작동하지만 한 번만 수행됩니다.
위의 예는 다음과 같이 보일 것이다 :
himage1 = 등 "... img3.php", himage2 = 'NA', himage3 = 'NA', himage4 = 'NA',
안쪽 루프는 'himage1'을 'himage2'와 성공적으로 바꾼 다음 'himage1'을 'himage3'과 비교하여 'himage3'으로 바꿔 다른 모든 필드를 비워 둡니다.
나는이 값을 2 개의 값이 성공적으로 스왑 된 후에도 실행되는 내부 루프로 식별 했으므로 성공적인 스왑에서 내부 루프를 벗어나려고했지만 외부 루프는 여전히 작동하지 않는 것처럼 보입니다.
나는 뭔가를 놓친다는 것을 알고 있으며, 나는 이것에 잠시 머물러 있습니다.
이 문제와 관련된 논리 및 순서에 대한 통찰력을 크게 높이겠습니다.
(그래서
'na'
대신na
의) 당신의 문자열 값을 인용하는 것이 좋습니다입니다. 다른 테이블에 이미지를 저장하는 것이 좋을 것이고이 문제에 직면하지 않을 것입니다. –