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

Форум PHP

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

 

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

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

тема: Запрос в базу...
 
 автор: LimP   (05.10.2004 в 16:32)   письмо автору
 
 

драсьте,у меня опять проблемка...вот есть такой код (его кусочек)
<?php
for($i=0;$i==$count1;$i++)
  {
   if (
$arr1['$i'] !== "")
   {
    
$ara $arr1['$i'];
    
$query_golos20 "insert into golos values (0,'$ara',0,'$id_poll');";
    
$ok2 mysql_query($query_golos20);
   }
  }
?>

так вот...у меня есть страничка на которой несколько форм,они у меня объединены в один массив golos для удобства,они все имеют разные,но значения из одной темы....короче,я все это дело обрабатываю в другом скрипте,я уже написал,чтобы если они все не пустые,то их поочереди заношу в базу,а как теперь мне сделать так,чтоб если пустой,то нафиг не нужен,а если что-то написано ьыло в форме,то в базу прямиком,я пишу вот так (выше) но нифига...тока пишет что мол долго все это делается (больше 30 сек)и ошибка...помогите...очень нано...

   
 
 автор: LimP   (05.10.2004 в 16:36)   письмо автору
 
   для: LimP   (05.10.2004 в 16:32)
 

ну по крайней мере на паскале так бы работало,это 100%,но как тут,я даже не знаю,чо он не хочет....

   
 
 автор: cheops   (05.10.2004 в 16:43)   письмо автору
 
   для: LimP   (05.10.2004 в 16:32)
 

Пару вопросов:
1) "они у меня объединены в один массив golos" - они это кто? формы, если да, то как они объединены в массив?
2) Откуда берётся массив $arr1
3) Переменная $count1 всегда равна 0? Если она не равна нулю, цикл
<?php
for($i=0;$i==$count1;$i++)
?>

не выполняется ни разу, если равна 0, один раз - это нормально?

   
 
 автор: LimP   (05.10.2004 в 17:47)   письмо автору
 
   для: cheops   (05.10.2004 в 16:43)
 

вот весь код,чтоб не мучались код это вот фома :

<html>
<head>
<title>Голосование - Добавить Голосование</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style type="text/css">
<!--
.style1 {
    font-family: verdana;
    font-size: 10px;
}
-->
</style></head>
<body>
<center>
<form action="addpoll.php" method="post">
  <p>Вопрос Блока: 
      <input name="question" type="text" size="60">
  </p>
  <p class="style1">Пункты голосования,введите в поля пункты блока голосования...если полей больше чем вам нужно,то оставьте их пустыми...</p>
  <p class="style1">Если же полей меньше,чем вам необходимо,то для дополнения или изменения блока,нажмите <a href="formeditpoll.php ">эту ссылку...</a></p>
№1:  <input name="golos[]" type="text" size="30"> <br>
№2:  <input name="golos[]" type="text" size="30"> <br>
№3:  <input name="golos[]" type="text" size="30"> <br>
№4:  <input name="golos[]" type="text" size="30"> <br>
№5:  <input name="golos[]" type="text" size="30"> <br>
№6:  <input name="golos[]" type="text" size="30"> <br>
№7:  <input name="golos[]" type="text" size="30"> <br>
№8:  <input name="golos[]" type="text" size="30"> <br>
№9:  <input name="golos[]" type="text" size="30"> <br>
№10:<input name="golos[]" type="text" size="30"> <br><br>
<input type="submit" value="Добавить Блок">
</form>
</center>

</body>
</html>

а вот обработчик....

<?php
include "../config.php";
$question $_POST['question'];
$query_poll "insert into poll values (0,'$question',now());";
$ok mysql_query($query_poll);
if (!
$ok)
{
 echo 
"<center><b>?????? ??? ?????? ? ???????!".mysql_error()."</b></center>";
}
$oka1 "select * from poll  where name='$question';";
$oka mysql_query($oka1);
$id1 mysql_fetch_array($oka);
$id_poll $id1['id_poll'];

$count1 count($_POST['golos']);
$arr1 $_POST['golos'];
$in in_array("",$arr1);
if (!
$in)
{
  
$arr2 $arr1['1'];
  
$arr3 $arr1['2'];
  
$arr4 $arr1['3'];
  
$arr5 $arr1['4'];
  
$arr6 $arr1['5'];
  
$arr7 $arr1['6'];
  
$arr8 $arr1['7'];
  
$arr9 $arr1['8'];
  
$arr10 $arr1['9'];
  
$arr11 $arr1['10'];
  
$query_golos1 "insert into golos values (0,'$arr2',0,'$id_poll');";
  
$query_golos2 "insert into golos values (0,'$arr3',0,'$id_poll');";
  
$query_golos3 "insert into golos values (0,'$arr4',0,'$id_poll');";
  
$query_golos4 "insert into golos values (0,'$arr5',0,'$id_poll');";
  
$query_golos5 "insert into golos values (0,'$arr6',0,'$id_poll');";
  
$query_golos6 "insert into golos values (0,'$arr7',0,'$id_poll');";
  
$query_golos7 "insert into golos values (0,'$arr8',0,'$id_poll');";
  
$query_golos8 "insert into golos values (0,'$arr9',0,'$id_poll');";
  
$query_golos9 "insert into golos values (0,'$arr10',0,'$id_poll');";
  
$query_golos10 "insert into golos values (0,'$arr11',0,'$id_poll');";
   
$ok1 mysql_query($query_golos1);
   
$ok2 mysql_query($query_golos2);
   
$ok3 mysql_query($query_golos3);
   
$ok4 mysql_query($query_golos4);
   
$ok5 mysql_query($query_golos5);
   
$ok6 mysql_query($query_golos6);
   
$ok7 mysql_query($query_golos7);
   
$ok8 mysql_query($query_golos8);
   
$ok9 mysql_query($query_golos9);
   
$ok10 mysql_query($query_golos10);
}
else
{
  for(
$i=0;$i=$count1;$i++)
  {
   if (
$arr1['$i'] !== "")
   {
    
$ara $arr1['$i'];
    
$query_golos20 "insert into golos values (0,'$ara',0,'$id_poll');";
    
$ok2 mysql_query($query_golos20);
   }
  }
}
echo 
"<meta http-equiv='refresh' content='0;url=index.php'>";
?>

я вот чую,что чота неправильно ваще написал в обработчике и по-моему 2 раза там все это переделываю,короче,помогите обрсботчика отладить...я надеюсь теперь вы поняли мою задумку... :)))

   
 
 автор: cheops   (05.10.2004 в 18:50)   письмо автору
 
   для: LimP   (05.10.2004 в 17:47)
 

Хм... может лучше так:
<?php 
  
include "../config.php"
  
$question $_POST['question']; 
  
$query_poll "insert into poll values (0,'$question',now());"
  
$ok mysql_query($query_poll); 
  if (!
$ok
  { 
    echo 
"<center><b>?????? ??? ?????? ? ???????!".mysql_error()."</b></center>"
  } 

  
$oka1 "select * from poll where name='$question';"
  
$oka mysql_query($oka1); 
  
$id1 mysql_fetch_array($oka); 
  
$id_poll $id1['id_poll']; 

  
$golos $_POST['golos']; 
  if(!empty(
$golos)) 
  { 
    
$query "INSERT INTO golos VALUES "
    foreach(
$type as $val)
    {
      if(!empty(
$val)) $query .= "(0, '$val', 0, $id_poll),";
    }
    
// Удаляем последнюю запятую
    
$query substr($query0strlen($query) - 1); 
    
// Выполняем запрос 
    
if(!mysql_query($query)) 
    { 
      echo 
mysql_error()."<br>"
      echo 
$query."<br>"
    } 
  }

  echo 
"<meta http-equiv='refresh' content='0;url=index.php'>"
?>

   
 
 автор: LimP   (05.10.2004 в 20:21)   письмо автору
 
   для: cheops   (05.10.2004 в 18:50)
 

ваш скрипт выдает вот такие ошибки
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\www\scripts\site\poll\admin\addpoll.php on line 2
почти в каждой строке...видимо тут куча каких-то скрытых символов....у меня не работает...

   
 
 автор: LimP   (05.10.2004 в 20:24)   письмо автору
 
   для: LimP   (05.10.2004 в 20:21)
 

cheops,помоги мне лучше как у меня написано...тока вот нужно собрать воедино...там где у меня много раз написано почти одно и то же...так через while или какой другой цикл и вот там что я писал,в чем собственно вся проблема...где for у меня дело в том,что если заполнены все формы,то все работает на ура,а если не все,вот тогда все и начинается.....

   
 
 автор: cheops   (05.10.2004 в 20:27)   письмо автору
 
   для: LimP   (05.10.2004 в 20:24)
 

А вот откуда невидимые символы берутся - при копировании из браузера...

   
 
 автор: LimP   (05.10.2004 в 21:08)   письмо автору
 
   для: cheops   (05.10.2004 в 20:27)
 

>А вот откуда невидимые символы берутся - при копировании из
>браузера...
кстати и не впервые.....

   
 
 автор: cheops   (05.10.2004 в 21:12)   письмо автору
 
   для: LimP   (05.10.2004 в 21:08)
 

А браузер какой? У меня на машинах WinXP и Win2000 - давненько такого не наблюдал... Правда использую практически только Opera....

   
 
 автор: LimP   (06.10.2004 в 07:54)   письмо автору
 
   для: cheops   (05.10.2004 в 21:12)
 

анологично,winXP и Opera 7....даже код,который сам написал выше.....который несколькими постами выше,при копировании,не работает...придется седня печатать его заново...как напечатаю...испралю все...кстати,я его когда себе на листок перепечптывал,нашел кучу ошибок ,например "!==" :)

   
 
 автор: glsv (Дизайнер)   (06.10.2004 в 10:17)   письмо автору
 
   для: LimP   (05.10.2004 в 21:08)
 

А что за программой верстаете код? Ну т.е. куда вставляете скопированный текст. Может она что не понимает и свое добавляет.

Например, если я сначала всталяю в Word, то он понимает раскраску символов и текст также раскрашивает. Т.е. при копировании, видимо, не только текст копируется, а и теги всякие невидимые.
А далее уже программа решает что ей отбросить, а что оставить.

   
 
 автор: LimP   (06.10.2004 в 15:24)   письмо автору
 
   для: glsv (Дизайнер)   (06.10.2004 в 10:17)
 

а я сначала либо в блокнот,но ваще в php editor...наверное из-за этого....ща попробую попробовать через word

   
 
 автор: glsv (Дизайнер)   (06.10.2004 в 15:27)   письмо автору
 
   для: LimP   (06.10.2004 в 15:24)
 

>ща попробую попробовать через word
Да, нет. Это я как пример привел, что спецсимволы раскраски кода тоже копируются. А вот как они обрабатываются - это на усмотрение программы. Через Word мне кажется совсем не удобно копировать...

   
 
 автор: LimP   (06.10.2004 в 15:29)   письмо автору
 
   для: LimP   (06.10.2004 в 15:24)
 

ага ,вот,заработало...тока теперь вот такая ошибка...тут в коде ошибка,тока где???
Warning: Invalid argument supplied for foreach() in C:\www\scripts\site\poll\admin\addpoll.php on line 18
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
INSERT INTO golos VALUES

   
 
 автор: LimP   (06.10.2004 в 15:35)   письмо автору
 
   для: LimP   (06.10.2004 в 15:29)
 

я вот какой написал новы й код...тока он не все добававляет,а бобавляет тока первый элемент...как мне сделать,чтоб он все добавлял???
<?php
include "../config.php";
$question $_POST['question'];
$query_poll "insert into poll values (0,'$question',now());";
$ok mysql_query($query_poll);
//----------------------------------
$oka1 "select * from poll where name='$question';";
$oka mysql_query($oka1);
$id1 mysql_fetch_array($oka);
$id_poll $id1['id_poll'];
$count1 count($_POST['golos']);
$arr1 $_POST['golos'];
//----------------------------------
$a=-1;
do
{
 
$a++;
  if(
$a == $count1)
  {
   break;
  }
  if (
$arr1[$a] != "")
  {
    
$ara $arr1[$a];
    
$query_golos "insert into golos values (0,'$ara',0,'$id_poll');";
    
$ok mysql_query($query_golos);
  }
}while (
$a == $count1);

?>

   
 
 автор: glsv (Дизайнер)   (06.10.2004 в 15:43)   письмо автору
 
   для: LimP   (06.10.2004 в 15:29)
 

Я так понимаю вот здесь опечатка вкралась

   
foreach($golos as $val) 

    if(!empty($val)) $query .= "(0, '$val', 0, $id_poll),"; 



$golos вместо $type поставить надо.

   
 
 автор: LimP   (06.10.2004 в 17:43)   письмо автору
 
   для: glsv (Дизайнер)   (06.10.2004 в 15:43)
 

все,ребят,не парьтесь,я сделал через while... :)

   
 
 автор: glsv (Дизайнер)   (06.10.2004 в 18:00)   письмо автору
 
   для: LimP   (06.10.2004 в 17:43)
 

Ок, не паримся :)

   
 
 автор: LimP   (06.10.2004 в 18:04)   письмо автору
 
   для: glsv (Дизайнер)   (06.10.2004 в 18:00)
 

теперь попрошу попариться всех над последним постом :)))

   
 
 автор: cheops   (05.10.2004 в 20:30)   письмо автору
 
   для: LimP   (05.10.2004 в 20:24)
 

Мне кажется
 $arr1['$i']; 

следует заменить на
 $arr1[$i]; 

   
 
 автор: Igorek   (05.10.2004 в 20:24)   письмо автору
 
   для: cheops   (05.10.2004 в 18:50)
 

  $oka1 = "select * from poll where name='$question';"; 
  $oka = mysql_query($oka1); 
  $id1 = mysql_fetch_array($oka); 
  $id_poll = $id1['id_poll']; 


рискну предположить, что данный кусок кода используется для выбора из базы значения поля типа Autoincrement - idpoll. Если это так, то гораздо удобнее и проще бущет использовать функцию mysql_insert_id(), которая возвращает ID, сгенерированный для последнего запроса типа INSERT

   
 
 автор: LimP   (06.10.2004 в 07:57)   письмо автору
 
   для: Igorek   (05.10.2004 в 20:24)
 

неверное предположение...это я вытаскиваю вопрос блока голосования....

   
 
 автор: LimP   (06.10.2004 в 17:59)   письмо автору
 
   для: LimP   (06.10.2004 в 07:57)
 

я с прошлым разобрался сделал,вот,посмотрите этот,это редактирование блока голосования...тут нано извлечь из базы вопрос и поместить его в поле(это получилось),затем извлечь из базы варианты ответов на голосование...,посчитать из,вывести такое жеколичество форм,сколько и ответов в базе по данному вопросу (по данному id_poll) и в этих формах должны быть прописаны эти ответы (values)...вот как я накалякал...
<?php
include "../config.php";
$id $_GET['id_poll'];
$select_quest "select * from poll  where id_poll='$id';";
$query mysql_query($select_quest);
$n mysql_fetch_array($query);
$quest $n['name'];
//-----------------------------------
$oka1 "select * from golos where id_poll='$id';";
$oka mysql_query($oka1);
$arr mysql_fetch_array($oka);
$ara $arr['name'];
$count count($arr);
//-----------------------------------
function add_form()
{
 
$a=0;
 while (
$a != $count)
 {
  
$a++;
  
$arr1 $ara[$a];
  echo (
"<input type="text" name="golos[]" size="30" value="<? echo $arr1?>"><br>");
 }
}
?>
<html>
<head>
<title>??????????? - ????????? ???? ???????????</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<form action="addpoll.php" method="post">
<center>
<p>?????? ?????: 
      <input name="question" type="text" size="60" value="<? echo $quest?>">
  </p>

<?php add_form();  >?
<
input type="submit" value="????????? ????">
</
center>
</
form>
</
body>
</
html>

   
 
 автор: LimP   (06.10.2004 в 19:21)   письмо автору
 
   для: LimP   (06.10.2004 в 17:59)
 

:)

   
 
 автор: LimP   (06.10.2004 в 19:53)   письмо автору
 
   для: LimP   (06.10.2004 в 19:21)
 

продолжение темы здесь >>>

http://softtime.ru/forum/read.php?id_forum=1&id_theme=437&page=1

   
Rambler's Top100
вверх

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