Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: внесение изменений в базу

Сообщения:  [1-10]    [11-20]  [21-23] 

 
 автор: Trianon   (10.04.2007 в 18:43)   письмо автору
 
   для: lilu   (10.04.2007 в 18:31)
 

Теперь приступайте к п 2.

   
 
 автор: lilu   (10.04.2007 в 18:31)   письмо автору
 
   для: Trianon   (10.04.2007 в 17:52)
 

Всё заработало -- спасибо вам!!!! И хватило же терпения....:)))

   
 
 автор: Trianon   (10.04.2007 в 17:52)   письмо автору
 
   для: lilu   (10.04.2007 в 17:35)
 

Вот видите?
Вот этот цикл
foreach($chk1 as $num => $value)
{
if($value == "on")
{
$rez2=mysql_query("UPDATE smi SET name_smi=".$_POST['new_name_smi[$id]'].",
tel_kont=".$_POST['new_phone_smi[$id]'].", e-mail=".$_POST['new_mail_smi[$id]'].", grafik=".$_POST['new_gr_smi[$id]'].", ed_tarif=".$_POST['new_ed_tarif[$id]'].", tarif=".$_POST['new_tar_smi[$id]']."
WHERE id_smi = '$num' ",$db);
if($rez2) { echo "изменения приняты<br>";}

}//if($value == "on")
}// foreach($chk as $num => $value

нужно построить по-другому.
1. if($value == 'on') не требуется. Дело в том, что неотмеченные чекбоксы в параметры скрипта просто не передаются - там будут лишь отмеченные, соответственно, в $value кроме on ничего и не будет.
2. А вот $num, который на самом деле является нашим id - нам может помочь.
3. К массивам в POST адресуются не так $_POST['new_name_smi[$id]'], а так $_POST['new_name_smi'][$id]

Соответственно:
<?
foreach($chk1 as $id => $value)  
{  
// чтобы не путаться - вынем значения из параметров.
    
$name $_POST['new_name_smi'][$id];
    
$phone $_POST['new_phone_smi'][$id];
    
$mail $_POST['new_name_smi'][$id];
    
$grafik $_POST['new_gr_smi'][$id];
    
$ed $_POST['new_ed_tarif'][$id];
    
$tar $_POST['new_tar_smi'][$id];
    
// теперь можно написать запрос. 
    
$rez2=mysql_query("UPDATE smi  
    SET 
        name_smi='
$name' ,   
        tel_kont='
$phone',
        `e-mail`=
$mail
        grafik='
$grafik',
        ed_tarif='
$ed',
        tarif='
$tar'
    WHERE id_smi = '
$id'   ",$db);  
     if(
$rez2)   echo "изменения для строки  $id приняты<br>";  
}      

   
 
 автор: lilu   (10.04.2007 в 17:35)   письмо автору
 
   для: Trianon   (10.04.2007 в 17:27)
 

Array
(
[change] => изменить
[new_name_smi] => Array
(
[0] => Иванов88888888888
[1] => Петров
и т.д.
)
[new_phone_smi] => Array
(
[0] => 22-85-34
[1] => 44-18-15
[2] => 22-46-93
.....)
и так все переменные.....

[chk1] => Array
(
[1] => on
)
)

Иванов88888888888 - это изменённое значение..., т.е. понимает где и на что поменять но не запонимает

   
 
 автор: Trianon   (10.04.2007 в 17:27)   письмо автору
 
   для: lilu   (10.04.2007 в 16:24)
 

>Должно
>только вот даже если в цикле echo $_POST['new_name_smi[$id]']; -- в ответ - ничего...
>Я уже не говорю про update
echo '<pre>';print_r($_POST); что показывает?

   
 
 автор: Loki   (10.04.2007 в 16:45)   письмо автору
 
   для: lilu   (10.04.2007 в 16:24)
 

Я бы страшно удивился если бы это заработало... даже не знаю с чего тут начинать править...

   
 
 автор: lilu   (10.04.2007 в 16:24)   письмо автору
 
   для: Trianon   (10.04.2007 в 16:20)
 

Должно
только вот даже если в цикле echo $_POST['new_name_smi[$id]']; -- в ответ - ничего...
Я уже не говорю про update

   
 
 автор: Trianon   (10.04.2007 в 16:20)   письмо автору
 
   для: lilu   (10.04.2007 в 16:17)
 

>а таблица у меня в форме просто этого я не написала (я думаю это само собой понятно)

Собственно, я тоже это предполагал. Но тогда всё должно работать.

   
 
 автор: lilu   (10.04.2007 в 16:17)   письмо автору
 
   для: Trianon   (10.04.2007 в 15:55)
 

Вы меня простите я не спец, но $change - это кнопка она описана выше просто (в шапке выводимой таблицы), а таблица у меня в форме просто этого я не написала (я думаю это само собой понятно)

<form action="<?php echo $_SERVER['REQUEST_URI']?>" method="post">

<?     
$rez 
mysql_query("SELECT * FROM table",$db);     
if(
$rez)     
{     
echo 
"<table border=1 bgcolor='#F1F1F1'>\n";     
echo 
"<tr><td>тел</td><td>наимен.</td><td>работа</td><td>адрес</td> 
<td><input name='CHANGE' type='SUBMIT' value='изменить'></td></tr>"


while(
$myrow=mysql_fetch_array($rez))     
     {   
$id $myrow['id'];    
echo 
"<tr>  
<td><input type =\"text\" name=\"new_phone[
$id]\" value =\"$myrow[2]\" size=\"10\"></td>     
<td><input type =\"text\" name=\"new_name[
$id]\" value =\"$myrow[3]\" size=\"10\"></td>     
<td><input type =\"text\" name=\"new_job[
$id]\" value =\"$myrow[4]\" size=\"10\"></td>     
<td><input type =\"text\" name=\"new_adres[
$id]\" value =\"$myrow[5]\" size=\"10\"></td>   
<td><input type=\"checkbox\" name=\"chk1[
$id]\"></td>  
</tr>\r\n"
;  
 }     

echo 
"</table>";     

 if(
$change
{  
$chk1 $_POST['chk1']; 
 if(
$chk1
      { 
        foreach(
$chk1 as $num => $value
        { 
          if(
$value == "on"
          { 
$rez2=mysql_query("UPDATE smi  SET name_smi=".$_POST['new_name_smi[$id]'].",  
tel_kont="
.$_POST['new_phone_smi[$id]'].", e-mail=".$_POST['new_mail_smi[$id]'].", grafik=".$_POST['new_gr_smi[$id]'].", ed_tarif=".$_POST['new_ed_tarif[$id]'].", tarif=".$_POST['new_tar_smi[$id]']."  
WHERE id_smi = '
$num' ",$db); 
 if(
$rez2) {  echo "изменения приняты<br>";} 

          }
//if($value == "on") 
        
}// foreach($chk as $num => $value 
      
}// if($chk) 


}
?>  


</form>


Я когда echo $_POST['new_name_smi[$id]']; ничего вообще....
Второй момент на логику не влияет, но эти проверки напишу обязательно....

   
 
 автор: Trianon   (10.04.2007 в 15:55)   письмо автору
 
   для: lilu   (10.04.2007 в 15:02)
 

$change - это не кнопка, а переменная.
Вы нигде её не определяете.
Если имеется в виду что $change = @$_POST['change']; то надо так и писать.

так... если уж мы перешли к деталям, то я не вижу ни этой кнопки, ни самой формы вокруг таблицы.
Кстати, в форме нужно не забыть поставить method=post . Я - в своем примере - забыл. :)

Ну а 2.... Это надо один раз усвоить. Так чтобы стало понятно, откуда ноги растут. И тогда вы научитесь эти вещи ставить на автомате, и они не будут отвлекать Вас от логики алгоритма.

   

Сообщения:  [1-10]    [11-20]  [21-23] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования