Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление лишь в одно поле таблицы базы, как реализовать 
:(
    Опции темы
corpsehunter
Дата 28.2.2007, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 24.2.2007

Репутация: нет
Всего: 3



Все, понял. Т.е. темы рефератов уже хранятся в базе, надо только в нужные поля добавить фамилии.
Т.к. поля уже существуют, то надо использовать не INSERT, а UPDATE:
Код

UPDATE ref SET name=$a WHERE (id = $e)

--------------------
Тест на IQ показал отрицательный результат...
PM MAIL   Вверх
nurv_ad
Дата 28.2.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 15.10.2006

Репутация: нет
Всего: нет



не записывает.
Блин 3 день уже мучаюсь.
PM MAIL   Вверх
corpsehunter
Дата 28.2.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 24.2.2007

Репутация: нет
Всего: 3



Все правильно и не должно:
В show.php, когда ты выводишь список, каждой ссылке "Фамилия" должен соответствовать номер темы:
Код

while( $row = mysql_fetch_object( $res ) )
 {  $i = $row -> id
print "<br><a href=\"?action=add&th=$i\">Фамилия:</a> " . $row -> name .", №: " . $row -> id . ", Тема: " . $row -> title . ".";  }
?>

Теперь в переменной $th будет номер темы, которой соответствует данная фамилия. И исправь 1.php - в нем надо передать эту перменную в add.php
Код

<form name="add" action="add.php?id=$th"  method="post">
Фамилия<br>
<input type="text" name="name">
<input type="submit" name="submit" value="Добавить">
</form>

Теперь вроде все должно работать.
--------------------
Тест на IQ показал отрицательный результат...
PM MAIL   Вверх
nurv_ad
Дата 28.2.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 15.10.2006

Репутация: нет
Всего: нет



Ураа у меня получилось.
в форме дописал 
<input type="hidden" name="id" value=<?echo $_GET['id'];?>>

теперь у меня такой вопрос как запретить повторную запись в поле

PM MAIL   Вверх
PARROT
Дата 28.2.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 3
Всего: 50



а что пишет? Какие ошибки? Напечатайте запрос:
Код

echo "UPDATE ref SET name=$a WHERE id = $e";



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
corpsehunter
Дата 28.2.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 24.2.2007

Репутация: нет
Всего: 3



Исправь запрос на такой:
Код

UPDATE ref SET name=$a WHERE (id = $e) AND (name != '')


P.S. Только я не помню точно, знак "не равно" может не так пишется smile
--------------------
Тест на IQ показал отрицательный результат...
PM MAIL   Вверх
PARROT
Дата 28.2.2007, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 3
Всего: 50



Код

echo "UPDATE ref SET `name`='$a' WHERE id = '$e'";


кавычки зависят от того строка это или число, одинарные или двойные.
кроме того проверяем на ошибки:
Код

 or die(mysql_error());



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
corpsehunter
Дата 28.2.2007, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 24.2.2007

Репутация: нет
Всего: 3



Цитата(corpsehunter @ 28.2.2007,  14:15)
Исправь запрос на такой:
Код

UPDATE ref SET name=$a WHERE (id = $e) AND (name != '')


P.S. Только я не помню точно, знак "не равно" может не так пишется smile

Вспомнил, надо не так, вот так:
Код

UPDATE ref SET name=$a WHERE (id = $e) AND (name is NULL)


P.S. Еще немного исправил запрос smile

Это сообщение отредактировал(а) corpsehunter - 28.2.2007, 14:52
--------------------
Тест на IQ показал отрицательный результат...
PM MAIL   Вверх
nurv_ad
Дата 1.3.2007, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 15.10.2006

Репутация: нет
Всего: нет



А как запретить повторную запись в поле.
то есть если поле заполнино вывести сообщение если пустое то вывести форму для заполнения фамилии?
PM MAIL   Вверх
corpsehunter
Дата 1.3.2007, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 24.2.2007

Репутация: нет
Всего: 3



Сделай так:
Код

while( $row = mysql_fetch_object( $res ) ) {
    $i = $row -> id;
    print ($row->name='')?"<br><a href='?action=add&th=$i'>Фамилия:</a> ":$row -> name;
    print ", №: " . $row -> id . ", Тема: " . $row -> title . ".";
}

Если поле "Фамилия" будет пустое, то выводится ссылка на добавление, если эта тема занята, то выводится фамилия того, кто занял эту тему.
--------------------
Тест на IQ показал отрицательный результат...
PM MAIL   Вверх
nurv_ad
Дата 1.3.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 15.10.2006

Репутация: нет
Всего: нет



Помогите найти ошибку.
Код

if($_GET['action'] == "add"){
//------------------
$name = mysql_escape_string($_POST['name']);
$sql = "select count(*) as c from referat where name='$name'";
$result=mysql_query($sql);
$row = mysql_fetch_object( $result );
if ($row->c == '0')
{
  //Все нормально, такого имени нету.
  echo "
<form name='add' action='add.php' method='post'>
Фамилия
<input type='hidden' name='id' value=".$_POST['id'].">
<input type='text' name='name'>
<input type='submit' name='submit' value='Добавить'>
</form>
";
@$a=$_POST['name'];
@$e=$_POST['id'];
$sql="INSERT INTO referat (id, title, name) VALUES (NULL, '','$a')";
 echo ("Информация изменена. <a href='show.php'>Назад</a>\n");

}
else
{
  //Ошибка, уже есть.
  exit ("<br><B><span style='color: red';>Извините но фамилия уже существует</span></B> <a href='123.php'>Вернуться</a>");
}
}


Это сообщение отредактировал(а) nurv_ad - 1.3.2007, 18:06
PM MAIL   Вверх
corpsehunter
Дата 1.3.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 24.2.2007

Репутация: нет
Всего: 3



Вот, попробуй это. Она должна вызываться с id, равным номеру выбранной темы.
Код

<form action="add.php?action=add&id=$_POST['id']" method='post'>Фамилия    
    <input type='text' name='name'>    
    <input type='submit' name='submit' value='Добавить'>
</form>    
<?php
if($_GET['action'] == "add"){
    $name = mysql_escape_string($_POST['name']);    
    $sql = "SELECT count(*) FROM referat WHERE name=$name";    
    if (!mysql_result($query,0)) {
        $a=$_POST['name'];    
        $e=$_POST['id'];    
        $sql="UPDATE ref SET name=$a WHERE (id = $e)";    
        echo ("Информация изменена. <a href='show.php'>Назад</a>\n");    
    }    
    else {    
        exit ("<br><B><span style='color: red';>Извините но фамилия уже существует</span></B> <a href='123.php'>Вернуться</a>");    
    }
}
?>

--------------------
Тест на IQ показал отрицательный результат...
PM MAIL   Вверх
nurv_ad
Дата 1.3.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 15.10.2006

Репутация: нет
Всего: нет



ID у меня уже берется до этого
$res = mysql_query( "SELECT * FROM referat" );
while( $row = mysql_fetch_object( $res ) )
{ print "
<a href='?action=add&id=".$row->id."'><br>Фамилия:</a> " . $row->name .", ¹: " . $row->id . ", Тема: " . $row->title . "."; }

id берется правильно и записывает в базу правильно дале я хочу сделать следующее

после 
if($_GET['action'] == "add"){

1. проверяем есть ли запись в поле name если нет 
2. выводим форму записи фамилии
3. если в поле name есть запись 
4. то выводим сообщение об ошибки

вот тут натворил делов а теперь не могу понять в чем ошибка.

if($_GET['action'] == "add"){
//------------------
$name = mysql_escape_string($_POST['name']);
$sql = "select count(*) as c from referat where name='$name'";
$result=mysql_query($sql);
$row = mysql_fetch_object( $result );
if ($row->c == '0')
{
  //Все нормально, такого имени нету.
  echo "
<form name='add' action='123.php?action=add&id=".$_POST['id']." method='post'>
Фамилия
<input type='text' name='name'>
<input type='submit' name='submit' value='Добавить'>
</form>
";
@$a=$_POST['name'];
@$e=$_POST['id'];
$sql="INSERT INTO referat (id, title, name) VALUES (NULL, '','$a')";
 echo ("Информация изменена. <a href='show.php'>Назад</a>\n"); 
}
else
{  //Ошибка, уже есть.
  exit ("<br><B><span style='color: red';>Извините но фамилия уже существует</span></B> <a href='123.php'>Вернуться</a>");}

в чем ошибка, где напутал. выводит сразу ошибку
"Извините но фамилия уже существует"
PM MAIL   Вверх
corpsehunter
Дата 1.3.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 24.2.2007

Репутация: нет
Всего: 3



Тогда пробуй это. Только в скобочках у одного ифа надо проверить извлеченную из БД фамилию. Сам сделаешь, на вскидку не помню как делать, а лезть не охота.
Код

<?php
if($_GET['action'] == "add"){
    $name = mysql_escape_string($_POST['name']);    
    $sql = "SELECT count(*) FROM referat WHERE name=$name";    
    if (!mysql_result($query,0)) {
        $e=$_POST['id'];    
        $sql="UPDATE ref SET name=$name WHERE (id = $e)";    
        echo ("Информация изменена. <a href='show.php'>Назад</a>\n");    
    }    
    else exit ("<br><B><span style='color: red';>Извините но фамилия уже существует</span></B> <a href='123.php'>Вернуться</a>");    
}
else {
    $sql = "SELECT name FROM referat WHERE id=$id";    
    if (<здесь проверяешь, если извлеченная фамилия равна '', то>) {
?>
<form action="add.php?action=add&id=$_POST['id']" method='post'>Фамилия    
    <input type='text' name='name'>    
    <input type='submit' name='submit' value='Добавить'>
</form>    
<?php
    } else print "<br><B><span style='color: red';>Извините но тема уже занята</span></B> <a href='123.php'>Вернуться</a>";
}
?>

--------------------
Тест на IQ показал отрицательный результат...
PM MAIL   Вверх
nurv_ad
Дата 1.3.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 15.10.2006

Репутация: нет
Всего: нет



else {
    $sql = "SELECT name FROM referat WHERE id=$id";
    if ($row->name == '0') {

ни так случаем?
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0703 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.