Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Онлайн тестирование (проблема) [3]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 2 [3]   

> Без описания
alex4715
Отправлено: 27 Мая, 2009 - 14:17:46
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2.         $res=mysql_query("SELECT name FROM users", $db);
  3.         while($row=mysql_fetch_array($res))
  4.         {
  5.             if($_POST['name']==$row['name'])
  6.             {
  7.                 $res1=mysql_query("DELETE name FROM users WHERE name='$_POST[name]'",$db);
  8.             }
  9.         }
  10.  
  11.  


Подскажите как сделать что бы он выполнялся 1 раз а то получаеться он все последущие разы удаляет и в итоге я получаю 1 ответ на последний вопрос
 
 Top
vitaliy_mad
Отправлено: 27 Мая, 2009 - 14:56:41
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




Делай так:
CODE (text):
скопировать код в буфер обмена
  1. if($_POST['name']==$row['name'])
  2.             {
  3.                 $res1=mysql_query("DELETE name FROM users WHERE name='$_POST[name]'",$db);
  4.             }

зачем вообще цикл нужен?
 
 Top
alex4715
Отправлено: 27 Мая, 2009 - 15:01:52
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




проверка похожив nam'ов без него будет выводиться первый нейм...
 
 Top
vitaliy_mad
Отправлено: 27 Мая, 2009 - 15:05:19
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




alex4715 пишет:
проверка похожив nam'ов без него будет выводиться первый нейм...
в твоем коде я не вижу вывода нэймов...вижу только удаление...
(Добавление)
вот это
alex4715 пишет:
$res=mysql_query("SELECT name FROM users", $db);
while($row=mysql_fetch_array($res))
{
if($_POST['name']==$row['name'])
{
$res1=mysql_query("DELETE name FROM users WHERE name='$_POST[name]'",$db);
}
}

поменяй на это
$res1=mysql_query("DELETE name FROM users WHERE name='$_POST[name]'",$db);
и будет счастье
 
 Top
alex4715
Отправлено: 27 Мая, 2009 - 15:25:26
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




Сделал как вы сказали получилось так:
Если удаляеться то удаляються все похожие т.е. у меня в поле
name:
alex
alex
alex
alex
вот их он удаляет если Ведёное имя совпадает с ними после идут след
miha
miha
miha
miha
Если я вожу имя михо он его не удаляет так как думает что переменная $row[name]ровна alex
Вот если я ввожу alex он удалает первые 4 alex'a и на их пытаеться записать ещё 4 но связи с тем что условие верно т.е. ведёное имя и имя в базе ровны он удаляет 3 alex'ов и оставляет последнего.
 
 Top
vitaliy_mad
Отправлено: 27 Мая, 2009 - 15:29:22
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




alex4715 пишет:
$res1=mysql_query("DELETE name FROM users WHERE name='$_POST[name]'",$db);
в како месте у этого выражения есть $row['name']?
(Добавление)
что то намудрено с логикой скрипта
 
 Top
alex4715
Отправлено: 27 Мая, 2009 - 15:31:13
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




Вот сам скрипт:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?PHP
  4. require_once "db.php";
  5. $vop=1;
  6.  
  7. if (!isset($_POST['started']))                                                  
  8.         {
  9.         echo "<form action=" .basename($_SERVER['SCRIPT_NAME'])." method=POST>
  10.        Введите логин: <input name=name type=text><br>
  11.        Введите @mail: <input name=mail type=text><br><br>
  12.        <input type=submit name=started value='Начать тест'>
  13.        </form>";
  14.         }
  15. else
  16. {
  17.         if($_POST['name']==true and $_POST['mail']==true)
  18.         {
  19.  
  20.                 $res=mysql_query("SELECT name FROM users", $db);
  21.                 $row=mysql_fetch_array($res);
  22.                         if($_POST['name']==$row['name'])
  23.                         {
  24.                                 mysql_query("DELETE FROM users WHERE name='$_POST[name]'",$db);
  25.                         }
  26.         echo mysql_error($db);
  27.         session_start();
  28.                 $_SESSION['name']=$_POST['name'];
  29.                 $_SESSION['mail']=$_POST['mail'];
  30.                 if (isset($_POST['vop']))                                                
  31.         {
  32.                 $vop=$_POST['vop'];
  33.                 $otv=$_POST['otv'];
  34.                 if ($otv>false)
  35.                 {
  36.                 $res1="INSERT INTO users (name,mail,answ_user) VALUES ('".$_SESSION['name']."','".$_SESSION['mail']."','".$otv."')";
  37.                 $r=mysql_query($res1);
  38.                 $vop++;
  39.                 }
  40.                 else
  41.                 {
  42.                 echo "<p>Нет ответа<br />";
  43.             }
  44.         }
  45.         if ($vop>4)
  46.         {
  47.                 echo "Тестирование окончено...";
  48.                 if($res1==true){echo mysql_error($db);}
  49.             //$q="INSERT INTO `users` (`name`,`email`) VALUES (".$_SESSION['name'].",".$_SESSION['mail'].")";
  50.            // $r=mysql_query($q);
  51.                 exit;
  52.         }
  53.         $fields=array("ans1","ans2","ans3","ans4");
  54.         $simb=array("А","Б","В","Г");
  55.         echo "<form action=" .basename($_SERVER['SCRIPT_NAME'])." method=POST>
  56.         <input type=hidden name=started value=yes>";
  57.  
  58.         if ($vop===0)$vop=1;
  59.         echo "<input type=hidden name=vop value=".$vop.">";
  60.         if ($vop<=4)
  61.         {
  62.                 $res2 = mysql_query("SELECT question.quest AS 'quest',
  63.                                                         answer.ans1 AS 'ans1',answer.ans2 AS 'ans2',
  64.                                                         answer.ans3 AS 'ans3',answer.ans4 AS 'ans4'
  65.                                                         FROM question,answer WHERE question.id=answer.id
  66.                                                         and question.id=$vop", $db);
  67.                 $row=mysql_fetch_array($res2);
  68.                 echo "<b>".$row['quest']."</b><br> \n";
  69.                 for ($i=0;$i<=3;$i++)
  70.                 {
  71.                 echo "<input type=radio name=otv value=".$row[$fields[$i]]."> ".$simb[$i]." ".$row[$fields[$i]]."<br>\n";
  72.                 }
  73.                 echo "<input type=hidden name=name value=" .$_SESSION['name'].">
  74.                                   <input type=hidden name=mail value=".$_SESSION['mail'].">
  75.                                   <input type=submit value=Ответить>";
  76.         }
  77.  
  78.         echo"</form>";
  79.     }
  80.     else
  81.     {
  82.         echo "Вы не ввели логин или емайл";
  83.     }
  84. }
  85. ?>
  86.  
  87.  



PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?
  4. $res=mysql_query("SELECT name FROM users", $db);
  5.                 $row=mysql_fetch_array($res);
  6.                         if($_POST['name']==$row['name'])
  7.                         {
  8.                                 mysql_query("DELETE FROM users WHERE name='$_POST  [name]'",$db);
  9.                         }
  10.  
  11. ?>
  12.  
  13.  

(Отредактировано автором: 27 Мая, 2009 - 15:32:13)

 
 Top
vitaliy_mad
Отправлено: 27 Мая, 2009 - 15:43:47
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




alex4715 пишет:
$res=mysql_query("SELECT name FROM users", $db);
$row=mysql_fetch_array($res);
if($_POST['name']==$row['name'])
{
mysql_query("DELETE FROM users WHERE name='$_POST[name]'",$db);
}

замени на
CODE (text):
скопировать код в буфер обмена
  1. mysql_query("DELETE FROM users WHERE name='$_POST[name]'",$db);

(Добавление)
по моему я это уже писал
 
 Top
alex4715
Отправлено: 27 Мая, 2009 - 15:55:30
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




В итоге я получаю из 4 ответов 1 потому что каждый раз удаляет само себя.
 
 Top
vitaliy_mad
Отправлено: 27 Мая, 2009 - 15:58:03
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




что ты хочешь вообще? удалить те которые совпадают с введенным?
 
 Top
alex4715
Отправлено: 27 Мая, 2009 - 16:05:22
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




должно быть так Чел водит логин он проверяеться если такой логин есть он удаляеться если нет создаёться.
В бд хроняться в таблице users слудещие поля id name mail answ_user Вот при каждом ответе на вопрос каждое поле записываеться ник майл и ответ т.е. если вопросов 20 то 20 раз это повториться и что бы удобно было подсчитывать я хочу что бы юзеры и всё остальное удалялись если кто то водит имеющийся логин в бд и после этот логин записывался как новый.
 
 Top
vitaliy_mad
Отправлено: 27 Мая, 2009 - 16:11:06
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




$_POST['name'] - здесь имя

дальше удалаем все где есть жто имя
DELETE FROM `users` WHERE `name`='$_POST['name']';
теперь создаем нового
INSERT INTO `users` (name) VALUES ('$_POST['name']');
(Добавление)
без проверок на существование записей.... вообще без проверок... потом только не мноо защиты надо дописать....
 
 Top
alex4715
Отправлено: 27 Мая, 2009 - 16:52:49
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Май 2009  


Помог: 0 раз(а)




а что делать с этим?

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?
  4.  
  5.             $vop=$_POST['vop'];
  6.             $otv=$_POST['otv'];
  7.             if ($otv>false)
  8.             {
  9.                   $res1="INSERT INTO users (name,mail,answ_user) VALUES ('".$_SESSION['name']."','".$_SESSION['mail']."','".$otv."')";
  10.                 $r=mysql_query($res1);
  11.                 $vop++;
  12.             }
  13.             else
  14.             {
  15.                 echo "<p>Нет ответа<br />";
  16.             }
  17.  
  18.  
  19. ?>
  20.  
  21.  


В этой части идёт добавление вариантов ответов пользователя

(Отредактировано автором: 27 Мая, 2009 - 17:00:48)

 
 Top
Dekker8
Отправлено: 06 Июля, 2009 - 18:40:53
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Янв. 2009  


Помог: 0 раз(а)




если хочешь могу помочь с написание такого скрипта (стучи в асю: 374898937 )
 
 Top
Страниц (3): « 1 2 [3]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB