2011-05-03 10 views
0

큰 문제가 있습니다. foreach를 고소 한 것은 이번이 처음이며 사용하는 것이 올바른지 모릅니다. 회원이 텍스트를 추가 할 수있는 텍스트 영역이 있습니다. 또한 게시 된 텍스트를 보낼 위치가 모든 계정에 있습니다. 계정에는 F와 T의 두 가지 유형이 있습니다. 이들은 체크 박스로 표시됩니다. 회원이 "제출"을 입력하면 선택한 계정의 각 테이블에 대해 텍스트가 특정 테이블에 INSERTED되어야합니다. php foreach가 올바른 것이라고 생각했습니다. 그러나 나는 더 이상 확신하지 못한다. foreach와 배열에 대해서는 아무 것도 모른다는 것을 명심하십시오. 그러니 제발 도와주세요, modded code = D를 제공하는 것을 고려하십시오. 정말 고맙습니다!PHP mySQL의 Foreach 루프 문제 INSERT INTO

<?php 
require_once('dbconnection.php'); 
$MembID = (int)$_COOKIE['Loggedin']; 
?> 
<form action="" method="post"> 
    <p align="center"><textarea id="countable1" name="addit" cols="48" rows="10" style="border-color: #ccc; border-style: solid;"></textarea> 
    <br> 
<? 
$DB = new DBConfig(); 
$DB -> config(); 
$DB -> conn(); 
$on="on"; 
    $queryF ="SELECT * FROM `TableF` WHERE `Active`='$on' AND `memberID`='$MembID' ORDER BY ID ASC"; 
    $result=mysql_query($queryF) or die("Errore select from TableF: ".mysql_error()); 
$count = mysql_num_rows($result); 
if ($count > 0) 
    { 
    while($row = mysql_fetch_array($result)) { 
    ?><div style="width:400px; height:100px;margin-bottom:50px;"><? 
    $rowid = $row['ID']; 
    echo $row['Name'] . '</br>'; 
    $checkit = "checked"; 
    if ($row['Main'] == "") 
    $checkit = ""; 
    if ($row['Locale'] =="") 
    $row['Locale'] ="None" . '</br>'; 
    echo $row['Locale'] . '</br>'; 
    if ($row['Link'] =="") 
    $row['Link'] ="javaScript:void(0);"; 
    ?> 
    <!-- HERE WE HAVE THE "F" CHECKBOXES. $rowid SHOULD BE TAKEN AND INSERTED IN THE FOREACH BELOW FOR ANY SELECTED CHECKBOX IN THE FIELD "Type".SEE BELOW --> 
    <input type="checkbox" name="f[<?php echo $rowid?>]" <?php echo $checkit;?>> 
    </div> 
    <? 
}//END WHILE MYSQL 
}else{ 
echo "you do not have any Active account"; 
} 
$DB = new DBConfig(); 
$DB -> config(); 
$DB -> conn(); 
    $queryTW ="SELECT * FROM `TableT` WHERE `Active`='$on' AND `memberID`='$MembID' ORDER BY ID ASC"; 
    $result=mysql_query($queryTW) or die("Errore select TableT: ".mysql_error()); 
$count = mysql_num_rows($result); 
if ($count > 0) 
    { 
    while($row = mysql_fetch_array($result)) { 
    ?><div style="width:400px; height:100px;margin-bottom:50px;"><? 
    $rowid = $row['ID']; 
    echo $row['Name'] . '</br>'; 
    $checkit = "checked"; 
    if ($row['Main'] == "") 
    $checkit = ""; 
    if ($row['Locale'] =="") 
    $row['Locale'] ="None" . '</br>'; 
    echo $row['Locale'] . '</br>'; 
    if ($row['Link'] =="") 
    $row['Link'] ="javaScript:void(0);"; 
    ?> 
     <!-- HERE WE HAVE THE "T" CHECKBOXES. $rowid SHOULD BE TAKEN AND INSERTED IN THE FOREACH BELOW FOR ANY SELECTED CHECKBOX IN THE FIELD "Type".SEE BELOW --> 
    <input type="checkbox" name="t[<?php echo $rowid?>]" <?php echo $checkit;?> > 
    </div> 
    <? 
}//END 2° WHILE MYSQL 
}else{ 
echo "you do not have any Active account"; 
} 
?> 
<input type="submit" value="submit"> 
</form> 
<? 
//WHEN CHECKBOXES "F" ARE FOUND, FOR EACH CHECKBOX IT SHOULD INSERT INTO TableG THE VALUES BELOW, FOR EACH SELECTED "F" CHECKBOX 
if(!empty($_POST['addit']) && !empty($_POST['f'])){ 
$thispostF = $_POST['f']; 
$f="F"; 
foreach ($thispostF as $valF) 
//THE MOST IMPORTANT FIELD HERE IS "Type". THE ARRAY INSERT "on", I NEED INSTEAD THE VALUE $rowid AS ABOVE 
$queryaddF="INSERT INTO TableG (ID,memberID,Type,IDAccount,Tuitting) VALUES (NULL,".$MembID.",'".$f."','".$valF."', '".$_POST['addit']."')"; 
$resultaddF=mysql_query($queryaddF) or die("Errore insert G: ".mysql_error()); 
} 
//WHEN CHECKBOXES "T" ARE FOUND, FOR EACH CHECKBOX IT SHOULD INSERT INTO TableG THE VALUES BELOW, FOR EACH SELECTED "T" CHECKBOX 
if(!empty($_POST['addit']) && !empty($_POST['t'])){ 
$thispostT = $_POST['t']; 
$t="T"; 
foreach ($thispostT as $valF) 
//THE MOST IMPORTANT VALUE HERE IS "Type". THE ARRAY GIVES "on", I NEED INSTEAD THE VALUE $rowid AS ABOVE 
$queryaddT="INSERT INTO TableG (ID,memberID,Type,IDAccount,Tuitting) VALUES (NULL,".$MembID.",'".$t."','".$valF."', '".$_POST['addit']."')"; 
$resultaddF=mysql_query($queryaddF) or die("Errore insert G: ".mysql_error()); 
} 
?> 
+2

게시 한 코드를 살펴보면 스택 오버플로의 훌륭한 제작자가 제공 한 서식 도구를 사용하지 않고도 사람들이 쉽게 읽고 이해할 수 있다고 생각합니까? ;) –

+3

"foreach와 배열에 대해서는 아무 것도 모른다"나는 아마 여기에서 시작하겠다. – cusimar9

+0

미안하지만 코드를 위해 Stack Overflow 도구를 사용하는 방법을 이해하지 못한다. 미안합니다. 대신 내 문제에 도움이 필요하십니까? 이 foreach를 사용하는 방법을 알고 싶습니다만, PHP 프로그래머가 아니기 때문에 이것은 어렵습니다. 도와주세요! = D –

답변

6
foreach ($thispostT as $valF) 
{ 

$queryaddT="INSERT INTO TableG (ID,memberID,Type,IDAccount,Tuitting) VALUES (NULL,".$MembID.",'".$t."','".$valF."', '".$_POST['addit']."')"; 
$resultaddF=mysql_query($queryaddF) or die("Errore insert G: ".mysql_error()); 
} 

foreach 루프에 시작 및 끝 브래킷을 넣고 전체 코드를 읽지는 않았지만 대괄호가없는 것을 발견했습니다. 당신을 돕는 희망.

1

내 제안 t는 [] (배열) onchecked 값

형태 체크 박스 필드가

<input type="checkbox" name="t[]" value="< ?php echo $rowid?>" <?php echo $checkit;? > > 
같아야 다음 페이지에 전달 될 것이다

필드 이름을 생성하는 것이다

및 양식 제출시

GET THE VALUE and insert in to database; 
< ? 
if($_POST['t']) 
{ 
foreach($_POST['t'] as $v) 
{ 
queryaddT="INSERT INTO TableG (ID,memberID,Type,IDAccount,Tuitting) VALUES (NULL,".$MembID.",'".$t."','".$valF."', '".$_POST['addit']."')"; 
$resultaddF=mysql_query($queryaddF) or die("Errore insert G: ".mysql_error()); 


} 

} 
? > 
1

나는

당신이해야 할거야 ... 난 당신이 무슨 일을하는지 알고 있다고 생각 :

foreach($_POST as $key => $value) { 
    $type = substr($key,0,1); 
    $id = substr($key,1); 
    if($type == 't') { 
     // do insert for t table here 
    } else if($type == 'f') { 
     // do insert for f table here 
    } 
} 

나는 그것을 테스트하지 않았다하지만 이런 식으로 뭔가해야합니다.