Помогите пожалуйста с созданием формы (html,php, а может javascript)!кручу-верчу, запутать хочу...

JuiceFruit

Новичок
Помогите пожалуйста решить проблему. Мне нужно создать форму. Поля text этой формы - это записи таблицы бд, т.е. если в таблице 20 записей, то нужно создать 20 полей формы, причем количество записей в бд не статическое. Перебираю строки результата запроса циклом while, но таким образом получается каждый раз в цикле происходит перезапись в одно и то же поле input и в переменную $_POST записывается только последнее значение, которое лишь одно и сохраняется при оправке данных. Может быть как-нибудь событие при отправке значения input text в таблицу бд изменить или в цикл его запихнуть?
Вот оно:
PHP:
if (isset($_POST['editpok']))
					{      
					$set='id_pok_ank="'.$_POST[id_pok_ank].'",kol="'.$_POST[kol].'"';
						funcEditpok('pokazatel_anketu', $set, 'id_pok_ank', $_POST[id_pok_ank], '');
					}
А вот функция funcEditpok:
PHP:
function funcEditpok($table, $set, $key, $id)
{
	$sql='
		UPDATE '.$table.' 
		SET ' .$set.' 
		WHERE '.$key.'="'.$id.'"';
	if (@mysql_query($sql)) 
	{
		$message = 'Изменена 1 запись!';	                         
                  
	} 
	else 
	{
		$message = 'Ошибка при изменении записи: '.mysql_error();
		if (mysql_errno()=='1142') 
		{
		            $message = 'Вы не можете изменять записи!';
		}
	}
          	return $message;	
}
Вот процесс создания формы:
PHP:
echo ' <form id="myform" method="post" name="formpok"  >
                      <table id="rec">';
	              while ($row=mysql_fetch_array($res_sql_ank_pok))
                  {   
                                 
                   echo '<tr><td>
                          <input type="hidden" name="editpok" value="editpok" />
                          <input type="hidden" name="id_pok_ank" value="'.$row['id_pok_ank'].'" />  
                          </td>                                
                         <td>'.$row['pok'].'</td>
                         <td><input type="text" name="kol" value="'.$row['kol'].'" ></td>
                         </tr>
                               ';                  
                     }              
                echo '<tr>
					 <td colspan="2"><input type="submit" value="Изменить" />
					  </tr>
                      </table>
                      </form>
Но вот что уже не пробовала, ничего не получается...беда прям!!!
 

jonjonson

Охренеть
JuiceFruit, сделайте для начала форму для одной записи из БД. А потом начните её расширять для нескольких записей. Ну и попытайтесь помедитировать над примером Single применительно к нескольким записям.

А вообще для начала научитесь правильно код php постить в этот форум. Что бы он выглядел не как булшит. Ибо как постите код, так и смотрите на него. А как смотрите - то и видите.
 

akruteckij

Новичок
Сделай вот такую форму:
PHP:
<form action="./" id="myform" name="formpok" method="post">
<input type="hidden" name="editpok" value="editpok" />
<table id="rec">
<?php
while ($row=mysql_fetch_array($res_sql_ank_pok)) {
?>
  <tr>
    <td><?php echo $row['pok']; ?></td>
    <td><input type="text" name="kol['<?php echo $row['id_pok_ank']; ?>']" value="<?php echo $row['kol']; ?>" ></td>
  </tr>
<?php
}
?>
  <tr><td colspan="2"><input type="submit" value="Изменить" /></td></tr>
</table>
</form>
А при приёме разбирай соответственно:
PHP:
  if (isset($_POST['editpok']))
  {
    foreach ($_POST['kol'] as $k => $v) {
      $set = "id_pok_ank='{$k}', kol='{$v}'";
      funcEditpok('pokazatel_anketu', $set, 'id_pok_ank', $k, '');
    }
  }
Но не забудь отфильтровать все значения пришедшие из формы... если число то хотя бы (int)$value если строка то trim(strip_tags($value))...
А ещё подумай над функцией, получается то ты 2-ды передаёшь туда id один раз отдельно другой раз в $set...
 

KorP

Новичок
да хоть примитивно всю форму в цикл запихнуть, уже проблем не будет, ну а дальше уже это красиво реализовывать, после того как задача будет выполнена
 

JuiceFruit

Новичок
Спасибо всем за советы, вроде нашла выход,только,наверное,очень корявый...
Форма теперя создается так:
PHP:
 $con= ' <form id="myform"  method="post" name="formpok"  >
            <table id="rec">';
             $i=1;	      
	      while ($row=mysql_fetch_array($res_sql_ank_pok))
                  {                                    
                       $cont=$cont.'        
                            <tr>
                            <td>
                           <input type="hidden" name="editpok'.$i.'" value="editpok'.$i.'" />                                         
                           <input type="hidden" name="id_pok_ank'.$i.'" value="'.$row['id_pok_ank'].'" />  
                           </td>                                
                           <td>'.$row['pok'].'</td>
                    <td><input type="text" id="input_text" name="kol'.$i.'" value="'.$row['kol'].'"  style="width:30px">      
                     </td>
                     </tr>
                      ';
                   $i++;                                    
                  }  
                $conte= '
		<td colspan="2"><input type="submit" value="Добавить"/>&nbsp;							
	       </table>
		</form>';  
                $content=$con.$cont.$conte;
                echo ''.$content.'';
А условие if isset $_POST заключила в цикл:
PHP:
	$total = mysql_num_rows($res_sql_ank_pok);
                for ($i=1;$i<$total;$i++)  {
                     if (isset($_POST['editpok'.$i])){	              				     
					$set='id_pok_ank="'.$_POST[id_pok_ank.$i].'",kol="'.$_POST[kol.$i].'"';
						funcEditpok('pokazatel_anketu', $set, 'id_pok_ank', $_POST[id_pok_ank.$i], '');
                       }
                }
Скажите, этот код глазами программиста ужасно неграмотный?я вероятно всё дико усложняю и награмождаю много лишнего...
 

akruteckij

Новичок
JuiceFruit
Ты прикалываешься? Я же тебе готовый код выложил только скопируй и вставь :)
 
Сверху