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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Изменение нескольких строк сразу
 
 автор: Алексей Рябченко   (30.10.2007 в 21:37)   письмо автору
 
 

вот код, что не так. поправте пож.


<?
$name_db
="home"// Имя базы
$host_db="localhost"// Хост базы (обычно localhost)
$user_db="home"// Имя пользователя для доступа к базе
$password_db=""// Пароль для доступа к базе



$connect=mysql_pconnect($host_db,$user_db,$password_db) or die (mysql_error());
mysql_select_db($name_db,$connect) or die (mysql_error());

$result mysql_query("select * from `test`") or die (mysql_error());

$rows mysql_num_rows($result) or die (mysql_error());





    if (isset(
$_GET['go'])) {

    
$n=$_POST['id_test'];
$nazva_test=$_POST['nazva_test'];
$cina_test=$_POST['cina_test'];
$date_test=$_POST['date_test'];
     for(
$i=0;$i<count($n);$i++){
  
mysql_query("uptade `test` set
    
$nazva_test,
      
$cina_test,
        
$date_test WHERE id_test='$n[$i]'") or die(mysql_error());
          echo 
"<br><br><center><b>:: Изменение внесено! ::<br>ждем секунду</b></center><script language='Javascript'>function reload() {location = \"".$_SERVER['SCRIPT_NAME']."\"}; setTimeout('reload()', 1000);</script>";
            echo 
"$nazva_test,   $cina_test,  $date_test,  $id_test";

     }
    }else{

    if(
$rows 0)
       {
    
?>
    <style>
    .input{font-size: 12px; width: 70px;}
     </style>
    <table align=center cellspacing=5 cellpadding=0 width=70% border=1>
    <tr>
    <td>Команда</td>
    <td>Всего&nbsp;игр</td>
    <td>Выиграно</td>
    <td>Ничья</td>
    <td>Проиграно</td>
    <td>Забитых&nbsp;мячей</td>
    <td>Пропущеных&nbsp;мячей</td>
    <td>Очки</td>
    <td>&nbsp;</td>
    </tr>
    <?
    
for($i=0;$i $rows;$i++)
          {
    
$row=mysql_fetch_array($result);
    
?>

    <form method=post action="?go">
    <tr align=center>
    <td align=left><?=$row['id_test']?></td>
    <td><input class=input type="text" name="nazva_test" value="<?=$row['nazva_test']?>"></td>
    <td><input class=input type="text" name="cina_test" value="<?=$row['cina_test']?>"></td>
    <td><input class=input type="text" name="date_test" value="<?=$row['date_test']?>"></td>

        <td><input name="id_test[]" type="checkbox" value="<?=$row['id_test']?>"> </td>

    <?
          
}
    
?>


    <?
       
}
       
?>
       </tr><td><input type="submit" name="go" value="Изменить"></td></form></table>
       <?
    
}
?>

   
 
 автор: codexomega   (30.10.2007 в 22:40)   письмо автору
 
   для: Алексей Рябченко   (30.10.2007 в 21:37)
 

UPDATE TABLE_NAME
SET
Field1 = $Value1,
Field2 = $Value2,
Field3 = $Value3
WHERE
TABLE_NAME.Field_ID = $id

   
 
 автор: Алексей Рябченко   (30.10.2007 в 23:36)   письмо автору
 
   для: codexomega   (30.10.2007 в 22:40)
 

А чуточку поподробней

   
 
 автор: codexomega   (30.10.2007 в 23:46)   письмо автору
 
   для: Алексей Рябченко   (30.10.2007 в 23:36)
 

Мне кажется, у вас ошибка здесь:

uptade `test` set
    $nazva_test,
      $cina_test,
        $date_test WHERE id_test='$n[$i]'")


Где значения для полей?
Выше был приведен синтаксис.

   
 
 автор: Алексей Рябченко   (30.10.2007 в 23:50)   письмо автору
 
   для: codexomega   (30.10.2007 в 23:46)
 

Да я исправил все сдесь.
Вот так теперь


if (isset($_GET['go'])) {

    $n=$_POST['id_test'];

     for($i=0;$i<count($n);$i++){
  mysql_query("update test set
    nazva_test='".$_POST['nazva_test']."',
      cina_test='".$_POST['cina_test']."',
        date_test='".$_POST['date_test']."' WHERE id_test='".$n[$i]."'") or die(mysql_error());

Но вот в чем дело мне нужно заменить в нескольких строках инф. и в ячейках строк она разная.

   
 
 автор: codexomega   (31.10.2007 в 04:29)   письмо автору
 
   для: Алексей Рябченко   (30.10.2007 в 23:50)
 

Массив с элементами:

$massiv = {"A", "B", "C"};

индекс: натуральное число, от нуля, до последнего элемента массива - 1

$index

Как нам вытащить из массива 2-й элемент по счету?


$index = 1;
$element = $massiv[$index];
<=> 
$element = "B";


А теперь изменим 1-й элемент в массиве:

$index = 0;
$massiv[$index] = "A+";


У вас в цикле проблема.

nazva_test='".$_POST['nazva_test'][i]."',
      cina_test='".$_POST['cina_test'][i]."',
        date_test='".$_POST['date_test'][i]."


Учитывая что: $_POST['nazva_test'] - массив, a i - индекс.

Необходимо, кроме id, прокручивать и другие элементы массива

   
 
 автор: Faraon   (31.10.2007 в 09:24)   письмо автору
 
   для: Алексей Рябченко   (30.10.2007 в 23:50)
 


<?php
if (isset($_GET['go'])) {
    
$n=$_POST['id_test'];
 if (!
get_magic_quotes_gpc())
  {
    
$nazva_test mysql_escape_string($_POST['nazva_test']);
    
$cina_test mysql_escape_string($_POST['cina_test']);
     
$date_test mysql_escape_string($_POST['date_test']);
  }
     for(
$i=0;$i<count($n);$i++){
  
mysql_query("update test set
    nazva_test='"
.nazva_test[$i]."',
      cina_test='"
.$cina_test[$i]."',
        date_test='"
.$date_test[$i]."' WHERE id_test='".$n[$i]."'") or die(mysql_error());
        }
?>

   
 
 автор: Алексей Рябченко   (31.10.2007 в 11:09)   письмо автору
 
   для: Faraon   (31.10.2007 в 09:24)
 


get_magic_quotes_gpc

Эта функция, я вообще не понял что делает.


mysql_escape_string

эта я так понял, розбивает на строки.

и пробелема еще вот в чем пишу слово, а оно записывает только первую букву.

   
 
 автор: Faraon   (31.10.2007 в 11:42)   письмо автору
 
   для: Алексей Рябченко   (31.10.2007 в 11:09)
 

mysql_escape_string экранирует все спец-символы вследствие чего, её можно безопасно использовать в mysql_query().
get_magic_quotes_gpc получает текущую активную установку конфигурации "магических" кавычек gpc.
>пробелема еще вот в чем пишу слово, а оно записывает только первую букву.
Приведите более подробный скрипт, с формой и тд

P.S. ошибся в строке
заменить это
nazva_test='".nazva_test[$i]."',  

на
nazva_test='".$nazva_test[$i]."',  

   
 
 автор: Алексей Рябченко   (31.10.2007 в 13:29)   письмо автору
 
   для: Faraon   (31.10.2007 в 11:42)
 

теперь понятен скипт.

   
Rambler's Top100
вверх

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