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

Форум MySQL

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

 

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

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

тема: Запрет повторного использования фамилии
 
 автор: nurv_ad   (28.02.2007 в 02:46)   письмо автору
 
 

Задача:
Есть созданная база с темами рефератов. Студен может подписаться под темой, написав свою фамилию, но при этом надо чтоб повторная запись фамилии был запрещен.

Что уже есть:
выводятся данные Фамилия | ID | Название темы
но почему при заполнении формы данные в поле name не заносятся. Помогите решить проблему.
Заранее благодарен.

Делаю следующее:

#
# Структура таблицы `referat`
#

CREATE TABLE `referat` (
`id` int(2) NOT NULL auto_increment,
`title` varchar(255) default NULL,
`name` varchar(50) default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=41 ;
INSERT INTO `referat` VALUES (1, 'Общественное питание и его место на потребительском рынке', '');
INSERT INTO `referat` VALUES (2, 'Проблемы и тенденции развития общественного питания', '');

(и т.д.)

show.php


<?PHP
error_reporting 
(E_ALL E_NOTICE);

if(
$_GET['action'] == "add"){
   include(
"1.php");
}
?>
<?php
 $host 
"localhost";    // Имя хоста
 
$port "3306";         // Номер порта, 3306 - по умолчанию
 
$user "root";         // Имя пользователя
 
$pass "*******";    // Пароль
 
$dbnm "plexa_ref";         // Имя Базы Данных
 
$h = ( empty( $port ) ) ? $host $host ":" $port;
 
$db mysql_connect$host $user $pass );
 
// Соединяемся с Сервером Баз Данных
 
if( !$db )   // Если соединиться не удалось:
  
{
   print (
"Извиняй ошибка вышла");
   
// Пишем ошибку и завершаем выполнение скрипта.
   
exit();
  }
 
// иначе выбираем Базу Данных для работы
 
if( ! mysql_select_db$dbnm ) )  // Если нет такой БД
  
{
   print (
"Ваще нет такой базу че гонишь то??");
   
// Пишем ошибку и завершаем выполнение скрипта.
   
exit();
  }
$res mysql_query"SELECT `*` FROM `referat`" );
while( 
$row mysql_fetch_object$res ) )
 {  print 
"<br><a href=\"?action=add\">Фамилия:</a> " $row -> name .", №: " $row -> id ", Тема: " $row -> title ".";  }
?>


form.php


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


add.php


<?
 $host 
"localhost";    // Имя хоста
 
$user "root";         // Имя пользователя
 
$pass "*****";    // Пароль
 
$dbnm "plexa_ref";         // Имя Базы Данных

/* Соединение с сервером базы данных */
mysql_connect ($host$user$pass);
/* Выбор базы данных */
mysql_select_db($dbnm);
$a=$_GET['name'];
$e=$_GET['id'];
$sql="INSERT INTO ref (id, title, name) VALUES ('$e', '','$a')";
$result=mysql_query($sql);
echo 
"Спасибо! Информация изменена. <a href=\"show.php\">Назад</a>\n";
echo 
$_FILES['userfile']['error'];
?>

   
 
 автор: dert   (28.02.2007 в 08:52)   письмо автору
 
   для: nurv_ad   (28.02.2007 в 02:46)
 

наверно потомучто у Вас в форме стоит метод POST, а принимаете переменные скриптом add.php как методом GET

   
 
 автор: nurv_ad   (28.02.2007 в 13:50)   письмо автору
 
   для: dert   (28.02.2007 в 08:52)
 

Исправил форму
<form name="add" action="add.php" method="GET">
Фамилия<br>
<input type="text" name="name">
<input type="submit" name="submit" value="Добавить">
</form>

так же
mysql_select_db($dbnm);
$a=$_GET['name'];
$e=$_GET['id'];
$sql="UPDATE ref SET name=$a WHERE (id = $e)";
$result=mysql_query($sql);

блин и все равно не пишет ни чего в базу... :(

   
 
 автор: dert   (28.02.2007 в 14:50)   письмо автору
 
   для: nurv_ad   (28.02.2007 в 13:50)
 

А если так


mysql_select_db($dbnm);
$a=$_GET['name'];
$e=$_GET['id'];
$sql="UPDATE ref SET name='$a' WHERE id ='$e'";
$result=mysql_query($sql);


И вообще надо внести новую запись или изменить старую?

   
 
 автор: nurv_ad   (01.03.2007 в 01:03)   письмо автору
 
   для: dert   (28.02.2007 в 14:50)
 

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

щас все объединил в один файл вот что получилось


<?php
$host 
"localhost";
$port "3306";
$user "root";
$pass "0000";
$dbnm "plexa_ref";
$h = ( empty( $port ) ) ? $host $host ":" $port;
$db mysql_connect$host $user $pass );
if( !
$db )
{
print (
"error !");
exit();
}
if( ! 
mysql_select_db$dbnm ) )
{
print (
"error !");
exit();
}
$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 "."; }


if(
$_GET['action'] == "add"){
if (
$_GET['name'])

else
{
exit (
"Извините но фамилия уже существует.&nbsp;<a href='./show.php'>Вернуться</a>");
}
else
{
{
echo 
"
<html>
<body>
<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>
</body>
</html>"
;
}
}
else
{
@
$a=$_POST['name'];
@
$e=$_POST['id'];
$sql="INSERT INTO ref (id, title, name) VALUES (NULL, '','$a')";
//$sql = "UPDATE referat SET  name = '".$a."' WHERE id=".$e;
$result=mysql_query($sql);
echo 
"Информация изменена. <a href='show.php'>Назад</a>\n";
}
}
?>

   
 
 автор: mr Bin   (01.03.2007 в 01:55)   письмо автору
 
   для: nurv_ad   (01.03.2007 в 01:03)
 

Возможны ошибки.


<?php

@
$a=$_POST['name']; 
@
$e=$_POST['id']; 
$search_name mysql_query"SELECT * FROM ref WHERE name = '".$a."'" );
if(
mysql_num_rows($search_name) == 0) {

$sql="INSERT INTO ref (id, title, name) VALUES (NULL, '','$a')"
//$sql = "UPDATE referat SET  name = '".$a."' WHERE id=".$e; 
$result=mysql_query($sql); 
echo 
"Информация изменена. <a href='show.php'>Назад</a>\n"

} else { echo 
"Пользователь уже существует!"; }
?>

   
 
 автор: nurv_ad   (01.03.2007 в 04:04)   письмо автору
 
   для: mr Bin   (01.03.2007 в 01:55)
 

о большое тем кто помогает.
Блин где то косяк а чтот не знаю почему, он все равно добавляет данные, может дело уже не в скрипте, может с базой что не так, ведь поля name стоит NULL а в самом поле пусто.

Посмотрите весь скрипт, пожалуйста я уже и не знаю где ошибки искать.
[code=php]
<?php
$host 
"localhost";
$port "3306";
$user "root";
$pass "000";
$dbnm "plexa_ref";
$h = ( empty( $port ) ) ? $host $host ":" $port;
$db mysql_connect$host $user $pass );
if( !
$db )
{
print (
"error !");
exit();
}
if( ! 
mysql_select_db$dbnm ) )
{
print (
"error !");
exit();
}
$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 "."; }


if(
$_GET['action'] == "add"){
if (
$_GET['name'])

else
{
exit (
"Извините но фамилия уже существует.&nbsp;<a href='./show.php'>Вернуться</a>");
}
else
{
{
echo 
"
<html>
<body>
<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>
</body>
</html>"
;
}
}
?>
<?php
{
@
$a=$_POST['name'];
@
$e=$_POST['id'];
$search_name mysql_query"SELECT * FROM ref WHERE name = '".$a."'" );
if(
mysql_num_rows($search_name) == 0) {

$sql="INSERT INTO ref (id, title, name) VALUES (NULL, '','$a')";
//$sql = "UPDATE referat SET  name = '".$a."' WHERE id=".$e;
$result=mysql_query($sql);
echo 
"Информация изменена. <a href='show.php'>Назад</a>\n";
}
} else { echo 
"Пользователь уже существует!"; }
?>

   
 
 автор: dert   (01.03.2007 в 13:46)   письмо автору
 
   для: nurv_ad   (01.03.2007 в 04:04)
 

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

   
 
 автор: nurv_ad   (01.03.2007 в 18:09)   письмо автору
 
   для: nurv_ad   (28.02.2007 в 02:46)
 

Помогите найти ошибку
[code=php]
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>");
}
}

   
Rambler's Top100
вверх

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