В общем добавляю я запросом записи в БД и выходит так что самая первая запись добавляется криво, все остальные заходят нормально.
ВОТ sql запрос
$sql4 = "INSERT INTO Variant (id_variant, id_polsov, id_polsov1) VALUES ('".$id_v."','".$_SESSION['id_u']."','".$RM[$i-1]['id']."')";
Проверяю эхами $id_v, $_SESSION['id_u'], $RM[$i-1]['id'] на текущем (првом) шаге прямо перед занесением их в БД - равны
50
17
9
Соответсвенно.
А в БД заносит 0 17 0
Следующие записи (со второго шага) закидывает уже нормально
50 17 10
50 17 11
...
В чем может быть дело?
Спустя 25 минут, 32 секунды (25.11.2011 - 14:52) rooor написал(а):
А чему равен $i при первом проходе цикла?)
Спустя 12 минут, 1 секунда (25.11.2011 - 15:04) Michael написал(а):
логируй не отдельные переменные, а весь текст запроса ($sql4) . На первом шаге что?
Спустя 9 минут, 23 секунды (25.11.2011 - 15:13) otix()90 написал(а):
на первом шаге $i = 1, в принципе значит что в sql значение ниже чем 0 не подается...)
$sql4 = "INSERT INTO Variant (id_variant, id_polsov, id_polsov1) VALUES ('".$id_v."','".$_SESSION['id_u']."', '".$RM[$i-1]['id']."')";
Спустя 5 минут, 52 секунды (25.11.2011 - 15:19) otix()90 написал(а):
если правильно понял про логировние
Эффект тот же
$sql4 = "INSERT INTO `Variant` (`id_variant`, `id_polsov`, `id_polsov1`) VALUES ('".$id_v."','".$_SESSION['id_u']."', '".$RM[$i-1]['id']."')";
Эффект тот же
Спустя 5 минут, 3 секунды (25.11.2011 - 15:24) rooor написал(а):
А что показывает
upd:
Ступил немного))
echo "<pre>";
print_r($RM);
echo "</pre>";
upd:
Ступил немного))
Спустя 38 секунд (25.11.2011 - 15:25) Michael написал(а):
Логирование - это тот же echo.
Сделай вывод, но не отдельных переменных, а всего текста запроса до того как он попадет в mysql_query. Или логи мускуля смотри
Сделай вывод, но не отдельных переменных, а всего текста запроса до того как он попадет в mysql_query. Или логи мускуля смотри
Спустя 5 минут, 54 секунды (25.11.2011 - 15:31) maximka787 написал(а):
otix()90
а разве можно писать в запрос '".$_SESSION['id_u']."'
ошибку-то не дает?
а разве можно писать в запрос '".$_SESSION['id_u']."'
ошибку-то не дает?
Спустя 4 минуты, 26 секунд (25.11.2011 - 15:35) otix()90 написал(а):
rooor,
Array
(
[0] => Array
(
[0] => 9
[id] => 9
[1] => 99
[name] => 99
[2] => 455645
[tel] => 455645
[3] => asd@mail.ru
[email] => asd@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 7
[number_sadik2] => 7
[7] => 0
[number_sadik3] => 0
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[1] => Array
(
[0] => 10
[id] => 10
[1] => 1010
[name] => 1010
[2] => 455645
[tel] => 455645
[3] => asd@mail.ru
[email] => asd@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 7
[number_sadik2] => 7
[7] => 0
[number_sadik3] => 0
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[2] => Array
(
[0] => 11
[id] => 11
[1] => 1111
[name] => 1111
[2] => 455645
[tel] => 455645
[3] => asd@mail.ru
[email] => asd@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 7
[number_sadik2] => 7
[7] => 0
[number_sadik3] => 0
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[3] => Array
(
[0] => 12
[id] => 12
[1] => 1212
[name] => 1212
[2] => 455645
[tel] => 455645
[3] => asd@mail.ru
[email] => asd@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 7
[number_sadik2] => 7
[7] => 0
[number_sadik3] => 0
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[4] => Array
(
[0] => 13
[id] => 13
[1] => 1313
[name] => 1313
[2] => 123123
[tel] => 123123
[3] => as@mail.ru
[email] => as@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 5
[number_sadik2] => 5
[7] => 7
[number_sadik3] => 7
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[5] => Array
(
[0] => 14
[id] => 14
[1] => 1414
[name] => 1414
[2] => 123123
[tel] => 123123
[3] => as@mail.ru
[email] => as@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 5
[number_sadik2] => 5
[7] => 7
[number_sadik3] => 7
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[6] => Array
(
[0] => 15
[id] => 15
[1] => 1515
[name] => 1515
[2] => 123123
[tel] => 123123
[3] => as@mail.ru
[email] => as@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 5
[number_sadik2] => 5
[7] => 7
[number_sadik3] => 7
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
)
проход идет внутри цикла
т.е. у меня приходит на форму нпример такие данные
я поверяю если psk$i = 1, если то начинаюстся проверки по которым решаю закинуть или нет.
Так что вроде бы следующие переменние в цикле должны быть 2 5 и 7, но в sql запросе я убавляю на 1 чтобы согласовать с массивом $RM строчки, откуда и заношу строки в БД.
Array
(
[0] => Array
(
[0] => 9
[id] => 9
[1] => 99
[name] => 99
[2] => 455645
[tel] => 455645
[3] => asd@mail.ru
[email] => asd@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 7
[number_sadik2] => 7
[7] => 0
[number_sadik3] => 0
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[1] => Array
(
[0] => 10
[id] => 10
[1] => 1010
[name] => 1010
[2] => 455645
[tel] => 455645
[3] => asd@mail.ru
[email] => asd@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 7
[number_sadik2] => 7
[7] => 0
[number_sadik3] => 0
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[2] => Array
(
[0] => 11
[id] => 11
[1] => 1111
[name] => 1111
[2] => 455645
[tel] => 455645
[3] => asd@mail.ru
[email] => asd@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 7
[number_sadik2] => 7
[7] => 0
[number_sadik3] => 0
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[3] => Array
(
[0] => 12
[id] => 12
[1] => 1212
[name] => 1212
[2] => 455645
[tel] => 455645
[3] => asd@mail.ru
[email] => asd@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 7
[number_sadik2] => 7
[7] => 0
[number_sadik3] => 0
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[4] => Array
(
[0] => 13
[id] => 13
[1] => 1313
[name] => 1313
[2] => 123123
[tel] => 123123
[3] => as@mail.ru
[email] => as@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 5
[number_sadik2] => 5
[7] => 7
[number_sadik3] => 7
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[5] => Array
(
[0] => 14
[id] => 14
[1] => 1414
[name] => 1414
[2] => 123123
[tel] => 123123
[3] => as@mail.ru
[email] => as@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 5
[number_sadik2] => 5
[7] => 7
[number_sadik3] => 7
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
[6] => Array
(
[0] => 15
[id] => 15
[1] => 1515
[name] => 1515
[2] => 123123
[tel] => 123123
[3] => as@mail.ru
[email] => as@mail.ru
[4] => 3
[number_ustroen] => 3
[5] => 1
[number_sadik1] => 1
[6] => 5
[number_sadik2] => 5
[7] => 7
[number_sadik3] => 7
[8] => 1000
[groups] => 1000
[9] => 2011-10-21
[data] => 2011-10-21
)
)
проход идет внутри цикла
for ($i=0;$i<100;$i++)
{
if ($_POST["psk$i"] == '1')
т.е. у меня приходит на форму нпример такие данные
psk1 = 1
psk2 = 1
psk5 = 1
psk7 = 1
я поверяю если psk$i = 1, если то начинаюстся проверки по которым решаю закинуть или нет.
Так что вроде бы следующие переменние в цикле должны быть 2 5 и 7, но в sql запросе я убавляю на 1 чтобы согласовать с массивом $RM строчки, откуда и заношу строки в БД.
Спустя 1 минута, 16 секунд (25.11.2011 - 15:36) otix()90 написал(а):
Цитата (maximka787 @ 25.11.2011 - 12:31) |
otix()90 а разве можно писать в запрос '".$_SESSION['id_u']."' ошибку-то не дает? |
да нет вроде ))
Спустя 2 минуты, 26 секунд (25.11.2011 - 15:39) maximka787 написал(а):
otix()90
присвой значение ДО запроса
$id_u = $_SESSION['id_u'];
присвой значение ДО запроса
$id_u = $_SESSION['id_u'];
Спустя 8 минут, 28 секунд (25.11.2011 - 15:47) otix()90 написал(а):
Цитата (maximka787 @ 25.11.2011 - 12:39) |
otix()90 присвой значение ДО запроса $id_u = $_SESSION['id_u']; |
вроде бы везде присваиваю до запроса, к тому же id_u нормально записывает и в певром шаге))
Спустя 44 секунды (25.11.2011 - 15:48) Placido написал(а):
У тебя на первом проходе цикла (for ($i=0;$i<100;$i++)) $i = 0, соответственно и $RM[$i-1]['id'] превращается в $RM[-1]['id'], значения для которого в массиве нет. Или я что-то неправильно понял?
Спустя 4 минуты, 52 секунды (25.11.2011 - 15:53) rooor написал(а):
А если так?
for ($i=1;$i<100;$i++)
Спустя 2 минуты, 37 секунд (25.11.2011 - 15:55) rooor написал(а):
Цитата |
psk1 = 1 ... я поверяю если psk$i = 1 ... |
т.е. если $i = 0, ты проверяешь psk0...
Спустя 6 минут, 17 секунд (25.11.2011 - 16:02) otix()90 написал(а):
вроде бы нет, я поменял на for ($i=1;$i<100;$i++)) - суть та же.
У цикла цель посмотреть равна ли какая нибуть из переменных $_POST["psk$i"] == '1', а точнее найти те которые равны единице, если он находит, допустим psk1 = 1, то независимо откуда цикл начался с 0 или 1 - $i будет в данный момент равно 1, и таким образом через переменную $i и тем, что в скобках $RM[$i-1]['id'] (опытным путем согласовываю))))связываю psk1 с записью в массиве и закидываю в БД.
Далее следующее $i будет серавно будет равно тому значению которое в цикле поиска дало 1, т.е. если пришло на форму
psk1 = 1
psk3 = 1
то следующий $i = 3.
а вот если менять в скобках $RM[$i-1]['id'] к прмеру на $i-2 или просто $i то будет просто не та строка, которую хочу запичать в БД.
У цикла цель посмотреть равна ли какая нибуть из переменных $_POST["psk$i"] == '1', а точнее найти те которые равны единице, если он находит, допустим psk1 = 1, то независимо откуда цикл начался с 0 или 1 - $i будет в данный момент равно 1, и таким образом через переменную $i и тем, что в скобках $RM[$i-1]['id'] (опытным путем согласовываю))))связываю psk1 с записью в массиве и закидываю в БД.
Далее следующее $i будет серавно будет равно тому значению которое в цикле поиска дало 1, т.е. если пришло на форму
psk1 = 1
psk3 = 1
то следующий $i = 3.
а вот если менять в скобках $RM[$i-1]['id'] к прмеру на $i-2 или просто $i то будет просто не та строка, которую хочу запичать в БД.
Спустя 21 минута, 21 секунда (25.11.2011 - 16:23) rooor написал(а):
Ну тогда только вариант с первым проходом, как уже раньше говорили:
$RM[$i-1] = -1
$RM[$i-1] = -1
Спустя 5 минут, 32 секунды (25.11.2011 - 16:29) otix()90 написал(а):
да неееЕ) самое минимальное значение $i прнимает равное 1 т.о. min $RM[$i-1] = 0? а мне это и надо, т.к. массив принимает значения начиная с 0
Если же $RM[$i-1] = -1 , то $i д/б = 0, а в этом случае оно просто пропускается и идет дальше по циклу, т.к. минимальная перемнная с которой сравнивается $i psk1 дальше уже выше, т.е. psk3 = 1 psk4 = 1psk5 = 1
))))
грубо говоря чтобы $RM[$i-1] = было равно -1 надо чтобы был psk0 = 1 и цикл начиная с 0 нашел бы его , а так его нет))
Ну может и я уже пересидел))))
Если же $RM[$i-1] = -1 , то $i д/б = 0, а в этом случае оно просто пропускается и идет дальше по циклу, т.к. минимальная перемнная с которой сравнивается $i psk1 дальше уже выше, т.е. psk3 = 1 psk4 = 1psk5 = 1
))))
грубо говоря чтобы $RM[$i-1] = было равно -1 надо чтобы был psk0 = 1 и цикл начиная с 0 нашел бы его , а так его нет))
Ну может и я уже пересидел))))
Спустя 18 часов, 59 минут, 13 секунд (26.11.2011 - 11:28) otix()90 написал(а):
ну как может еще какие догадки?)))
Спустя 7 часов, 46 минут, 54 секунды (26.11.2011 - 19:15) Placido написал(а):
Гадали уже. Кусок кода выложи - посмотрим что там и как.
Спустя 2 дня, 19 часов, 7 минут, 58 секунд (29.11.2011 - 14:23) otix()90 написал(а):
Вечер добрый, вот код.
Ну как - то так )
elseif ($_POST[psk_add] == '1')
{
foreach ($_POST as $key=>$value)
echo "<p>".$key." = " . $value . "</p>";
echo '<p>';
foreach ($_SESSION as $key=>$value)
echo "<p>".$key." = " . $value . "</p>";
for ($i=1;$i<100;$i++)
{
if ($_POST["psk$i"] == '1')
{
$this_date=date('Y-m-d');
echo 'Добавление поиска '.$i.'<br>';
$sql = "INSERT INTO Poisk_var (id_us, Date) VALUES ('".$_SESSION['id_u']."', NOW())";
$sql2 = "SELECT * FROM `Poisk_var` WHERE id_us = '".$_SESSION['id_u']."'";
$sql3 = "UPDATE Poisk_var SET Date = '$this_date' WHERE id_us = '".$_SESSION['id_u']."' LIMIT 1";
$sql4 = "INSERT INTO `Variant` (`id_variant`, `id_polsov`, `id_polsov1`) VALUES ('".$id_v."','".$_SESSION['id_u']."', '".$RM[$i-1]['id']."')";
$sql5 = "SELECT * FROM Variant WHERE id_polsov = '".$_SESSION['id_u']."'";
$result2 = mysql_query($sql2);
$Resu_mas = mysql_num_rows($result2);
echo 'Записей в выборке';
echo $Resu_mas.'<br>';
if ($Resu_mas <> 0)
{
echo "Содержимое:<br>";
$rec = array();
while ($row = mysql_fetch_array($result2))
{
echo $row["id_pv"].'<br>';
echo $row["id_us"].'<br>';
echo $row["Date"].'<br><br><hr>';
if ($rec['Date'] < $row['Date'])
{
$rec = $row;
}
}
print_r ($rec);
echo '<br>';
if ($rec['Date'] == $this_date)
{
echo 'Дата (самая последняя) равна текущей<p>';
$id_v = $rec['id_pv'];
$RM = $_SESSION['RM'];
echo $i.'<br>';
echo $id_v.'<br>';
echo $RM[$i-1]['id'].'<br>';
$result4 = mysql_query($sql4);
}
else
{
echo 'Дата (самая последняя) не равна текущей<br>';
$RM = $_SESSION['RM'];
$result3 = mysql_query($sql);
//--------------------------------
$result2 = mysql_query($sql2);
while ($row = mysql_fetch_array($result2))
{
if ($new_rec['Date'] < $row['Date'])
{
$new_rec = $row;
}
}
print_r ($new_rec);
$id_v = $new_rec['id_pv'];
echo '<br>'.$id_v.'<br>';
echo $_SESSION['id_u'].'<br>';
echo $RM[$i-1]['id'].'<br>';
echo $i;
$result4 = mysql_query($sql4);
}
echo '<hr>';
}
}
}
}
Ну как - то так )
Спустя 39 минут, 21 секунда (29.11.2011 - 15:02) Placido написал(а):
А чего $_POST[psk_add] без кавычек? psk_add у вас ведь не константа?
$_POST[psk_add] ---> $_POST['psk_add']
Спустя 7 минут, 45 секунд (29.11.2011 - 15:10) otix()90 написал(а):
Цитата (Placido @ 29.11.2011 - 12:02) |
А чего $_POST[psk_add] без кавычек? psk_add у вас ведь не константа? <pre class="sh_sourceCode" rel="php"><span class="sh_variable">$_POST</span><span class="sh_symbol">[</span>psk_add<span class="sh_symbol">] ---></span> <span class="sh_variable">$_POST</span><span class="sh_symbol">[</span><span class="sh_string">'psk_add'</span><span class="sh_symbol">]</span></pre> |
Возможно) видимо работало , ошибку не выдавало, не обратил внимания.
Спустя 38 минут, 53 секунды (29.11.2011 - 15:49) Placido написал(а):
Вот этот кусок:
И вот это:
Вы, не сделав инсерта (mysql_query($sql)), пытаетесь выбрать WHERE id_us = '".$_SESSION['id_u']."', хотя $_SESSION['id_u'] еще не внесена в базу. Поэтому на первом круге условие if ($Resu_mas <> 0) никогда не будет выполняться (потому что $Resu_mas = mysql_num_rows($result2), а у вас там "0").
А вот после первого круга (дальше есть $result3 = mysql_query($sql)) это значение будет уже в базе и далее выбираться все будет нормально.
$sql = "INSERT INTO Poisk_var (id_us, Date) VALUES ('".$_SESSION['id_u']."', NOW())";
$sql2 = "SELECT * FROM `Poisk_var` WHERE id_us = '".$_SESSION['id_u']."'";
И вот это:
$result2 = mysql_query($sql2);
$Resu_mas = mysql_num_rows($result2);
echo 'Записей в выборке';
echo $Resu_mas.'<br>';
if ($Resu_mas <> 0)
Вы, не сделав инсерта (mysql_query($sql)), пытаетесь выбрать WHERE id_us = '".$_SESSION['id_u']."', хотя $_SESSION['id_u'] еще не внесена в базу. Поэтому на первом круге условие if ($Resu_mas <> 0) никогда не будет выполняться (потому что $Resu_mas = mysql_num_rows($result2), а у вас там "0").
А вот после первого круга (дальше есть $result3 = mysql_query($sql)) это значение будет уже в базе и далее выбираться все будет нормально.
Спустя 12 минут, 56 секунд (29.11.2011 - 16:02) otix()90 написал(а):
Если правильно понял, вы имеете ввиду что $_SESSION['id_u'] пустая. У меня в сессии эта перменная приходит и , как мне кажется, она сравнивается нормально, т.к.
выводит правильное количество записей.
Ну может я не включился еще - не понял вашу мысль))
А как можно исправить?
echo 'Записей в выборке';
echo $Resu_mas.'<br>';
выводит правильное количество записей.
Ну может я не включился еще - не понял вашу мысль))
А как можно исправить?
Спустя 3 дня, 20 часов, 41 минута, 39 секунд (3.12.2011 - 12:43) otix()90 написал(а):
В общем разобрался ))
Спустя 7 минут, 9 секунд (3.12.2011 - 12:50) otix()90 написал(а):
Оказалось, что запросы не надо было писать там где я их написал (т.е. перед кодом), т.к. код считывается линейно, то запрос на добавление прописанный в самом начале (еще до циклов проверок) принимает значения переменных на тот момент еще не существующих и соответственно равных 0, ну и после прохода далее по циклу они инициализируются и уже записываются нормально.
Исправил тем, что тупо убрал запрос на добавление и прописал его прямо в ветке на добавление.
Исправил тем, что тупо убрал запрос на добавление и прописал его прямо в ветке на добавление.