SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.11.2011 16:01:41

Maroderstalker
Завсегдатай
Зарегистрирован: 09.11.2011
Сообщений: 27

Изменить Добавить Удалить

Проблема заключаеться в следующем, когда нажимаю изменить, у меня изменяються все строки в базе данных, а не именно та строка которую я хочу изменить, а добавляет и удаляет нормально, вот скрипт:

Код:

<html>
<head>
 <title>Пробуем)))</title>
</head>
<body>
<?require ("connectdb.inc.php");?>
<?if(isset($users)):?>

<table width="1000" border="1" cellspacing="0" cellpadding="0" align="center">
 <tr align="center">
   <td>Номер</td>
   <td>Имя</td>
   <td>Фамилия</td>
   <td>Рост</td>
   <td>Вес</td>
   <td>Изменить/Удалить</td>
 </tr>
 <?$sql=mysql_query("select*from users");
    while($row=mysql_fetch_array($sql)) {
        $id=$row['id'];
        $name=$row['name'];
        $name2=$row['name2'];
        $rost=$row['rost'];
        $ves=$row['ves'];
        ?>
        <form METHOD="POST" ACTION="index.php?id=<?=$id;?>">
 <tr align="center">
   <td><?=$id;?></td>
   <td><?=$name;?></td>
   <td><?=$name2;?></td>
   <td><?=$rost;?></td>
   <td><?=$ves;?></td>
   <td><INPUT TYPE="submit" name="readd" value="Изменить"><br>
       <INPUT TYPE="submit" name="delete" value="Удалить"></td>
 </tr>
 </form>
 <?}?>
</table>
<?
elseif(isset($delete)):
$result = mysql_query("delete from users where id='$id'");
if ($result == 'true')
{echo "Человек удален";}
else 
{echo "Не хочет удаляться";}

elseif(isset($readd)):
if(isset($par)):
$result = mysql_query ("UPDATE users SET name='$name1', name2='$name3', rost='$rost1', ves='$ves1'");
if ($result == 'true')
{echo "Данные успешно обновлены.";}
else 
{echo "Данные не обновлены!";}
    ?>
    <BR><BR><BR>
    <?
    else:?>
    <?$sql=mysql_query("select*from users");
$row=mysql_fetch_array($sql);
$name=$row['name'];
$name2=$row['name2'];
$rost=$row['rost'];
$ves=$row['ves'];?>
    <FORM METHOD=POST ACTION="index.php">
    Номер <INPUT TYPE="text" value="db" NAME="par"><br>
Имя было <?=$name?> станет <INPUT TYPE="text" NAME="name1"><BR>
Фамилия была <?=$name2?> станет <INPUT TYPE="text" NAME="name3"><BR>
Рост был <?=$rost?> станет <INPUT TYPE="text" NAME="rost1"><BR>
Вес был <?=$ves?> станет <INPUT TYPE="text" NAME="ves1"><BR>
<INPUT TYPE="submit" name="readd" value="Изменить">
</FORM>
<?endif;?>
<? elseif(isset($add)):
if(isset($par1)):
mysql_query("insert into users values (null, '$name','$name2','$rost','$ves');");
echo "Человек добавлен";?>

<?else:?>
<FORM METHOD=POST ACTION="index.php">
<table width="1000" border="1" cellspacing="0" cellpadding="0" align="center">
 <tr align="center">
   <td>Константа</td>
   <td>Имя</td>
   <td>Фамилия</td>
   <td>Рост</td>
   <td>Вес</td>
 </tr>
 <tr align="center">
   <td><INPUT TYPE="text" value="db" NAME="par1"></td>
   <td><INPUT TYPE="text" NAME="name"></td>
   <td><INPUT TYPE="text" NAME="name2"></td>
   <td><INPUT TYPE="text" NAME="rost"></td>
   <td><INPUT TYPE="text" NAME="ves"></td>
 </tr>
 <tr align="center">
   <td colspan="3"><INPUT TYPE="submit" name="add" value="::Сохранить::"></td>
   <td colspan="2"><INPUT TYPE="reset" value="::Очистить::"></td>
 </tr>
 &nbsp;
</table>
<?endif;?>
<?
else:
$sql=mysql_query("select*from users");
$num=mysql_num_rows($sql);
?>
<FORM METHOD="get" ACTION="index.php">
<table width="200" border="1" cellspacing="0" cellpadding="0" align="center">
 <tr align="center">
  <td><INPUT TYPE="submit" name="users" value="Люди <?=$num?>"></td>
 </tr>
 <tr align="center">
  <td><INPUT TYPE="submit" name="add" value="Добавить людей"></td>
 </tr>
</table>
</FORM>
<?endif;?>
<br><br>
<center><a href="index.php">На Главную</a></center>
</body>
</html>

Поскажите что неправильно

Неактивен

 

#2 12.11.2011 16:46:38

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Изменить Добавить Удалить

Чтобы изменялась одна строка, нужно условие указать, при котором замена идёт.
то есть не
"UPDATE users SET name='$name1', name2='$name3', rost='$rost1', ves='$ves1'"
а что-то вроде
"UPDATE users SET name='$name1', name2='$name3', rost='$rost1', ves='$ves1' where user.id=$id"
где id - идентификатор пользователя

И между прочим

$result = mysql_query ("UPDATE users SET name='$name1', name2='$name3', rost='$rost1', ves='$ves1'");
if ($result == 'true')

вот так неправильно, см http://www.php.su/functions/?mysql-query
Функция возвращает либо идентификатор набора записей (если запрос на выборку, иначе TRUE), либо FALSE в случае неудачи. 'true' и TRUE - не одно и то же.

Отредактированно deadka (12.11.2011 16:53:27)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 12.11.2011 19:27:44

Maroderstalker
Завсегдатай
Зарегистрирован: 09.11.2011
Сообщений: 27

Re: Изменить Добавить Удалить

Теперь вообще ничего не обновляет((( НЕ понятно

Неактивен

 

#4 12.11.2011 19:40:56

Maroderstalker
Завсегдатай
Зарегистрирован: 09.11.2011
Сообщений: 27

Re: Изменить Добавить Удалить

Все сделал)))) Спасибо за внимание)))

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson