Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Опять с выборкой и все с тем что и раньше (http://forum.oszone.net/showthread.php?t=116227)

dima1981 04-09-2008 14:31 890836

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

<?
$db = mysql_connect("localhost","root","...");
mysql_select_db("rp" ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
echo $HTTP_POST_VARS['cd'];
$sql = mysql_query ("SELECT * FROM og", $db);
while ($abc = mysql_fetch_row($sql))
{
echo("$abc[1]|$abc[2]|$abc[3]|$abc[4]");
}
mysql_close($db);
?>

в этом всё клёво показывает данные из базы на отлично, теперь этот

<?
$db = mysql_connect("localhost","root","...");
mysql_select_db("rp" ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$HTTP_POST_VARS['cd'];
echo $HTTP_POST_VARS['cd'];
$sql = mysql_query ("SELECT * FROM og 'og' where co='$co', and cd='$cd', $db", $db);
while ($abc = mysql_fetch_row($sql)
{
echo("$abc[1]|$abc[2]|$abc[3]|$abc[4]");
}
mysql_close($db);
?>

как и первый только не показывает базу, суда приходят переменные или как то так это называется нормально, прописываю тут $HTTP_POST_VARS['co']; $HTTP_POST_VARS['cd']; и перед ними echo для примера и чтоб показал, что с приходом получается, браузер показывает, то что передаю, но вот как дальше по коду идти так онлине и всё тут

timon4ik 04-09-2008 15:42 890904

Цитата:

Цитата dima1981
но вот как дальше по коду идти так онлине и всё тут »

Уже в который раз вы жалуетесь на ошибку в коде а саму ее не приводите, говорите только о каком-то онлине, хотя в вашем случае - это лишь указатель на строку кода в которой у вас ошибка.

Например:

Fatal error: _здесь_сообщение_об_ошибке_ in _имя_файла_с_ошибкой_ on line номер_строки_с_ошибкой

Так приведите же сообщение об ошибке а не только "онлине"

timon4ik 04-09-2008 16:00 890924

dima1981,
А ошибка у вас вот:
$sql = mysql_query ("SELECT * FROM og 'og' where co='$co', and cd='$cd', $db", $db);
Подчеркнутое - убрать.

dima1981 04-09-2008 16:01 890925

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 8
это по второму коду timon4ik,

это с while что то, дальше него не выполняет

timon4ik 04-09-2008 16:04 890927

dima1981,
Ответ уже дал :)

Цитата:

Цитата dima1981
это с while что то »

Это не с while, приблизительный перевод ошибки: "Используемый аргумент функции mysql_fetch_row() не является корректным MySQL-запросом"

dima1981 04-09-2008 16:27 890942

про что и разговор, какие он может воспринимать аргументы не могу понять в упор, подскажите, родной вы к нам timon4ik, очень нужно...

на гугле перевод делал и он мне так перевел, что некоректно мол так к mysql или к php я так вообщем и не понял к кому но обращаться, повторите говорит попытку позднее )
только запарился в хлам и что удивительно в форумах и в интернете по этому такое ощущение, что информации совсем нет, обычно, там какая то тема лбычная т.е. распостраненная, везде и во многих экземплярах, но это как будто все знают, или как будто только пара видов запросов всех интересует, в полном недоумении я короче.

timon4ik 04-09-2008 16:40 890957

Вы присваиваете значению переменной - запрос:
$sql = mysql_query ("SELECT * FROM og 'og' where co='$co', and cd='$cd', $db", $db);

Дальше используете переменную $sql в качестве аргумента функции mysql_fetch_row()
while($abc = mysql_fetch_row($sql)) - тут кстати вы забыли закрыть вторую скобку

Выполнение программы доходит до вызова функции mysql_fetch_row(), видит что её аргументом является некорректный запрос (тот что в значении переменной $sql), и естественно возвращает ошибку.

Исправить нужно следующее:

Неверно:
$sql = mysql_query ("SELECT * FROM og 'og' where co='$co', and cd='$cd', $db", $db);
Верно:
$sql = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd'", $db);

Неверно:
while($abc = mysql_fetch_row($sql)
Верно:
while($abc = mysql_fetch_row($sql))

Вроде все объяснил, понятнее уже некуда :)

dima1981 04-09-2008 16:57 890973

не получается короче
чего трудно так, вот говорю если сделать как вы говорите timon4ik, т.е. взять второй код и тех двух вначале, переставить там те строки, которые вы уважаемый говорите, что не верны и прописать там те, которые вы говорите верны, браузер покажет Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 8

timon4ik 04-09-2008 17:12 890984

Еще раз приведите получившийся код с учетом моих исправлений.

dima1981 04-09-2008 17:22 890992

<?
$db = mysql_connect("localhost","root","123");
mysql_select_db("rp" ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$HTTP_POST_VARS['cd'];
$sql = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd', $db");
while ($abc = mysql_fetch_row($sql))
{
echo("$abc[1]|$abc[2]|$abc[3]|$abc[4]");
}
echo "</table>";
mysql_close($db);
?>

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 8

timon4ik 04-09-2008 17:26 890995

dima1981,

Вы написали
$query = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd', $db");

А я говорил так:
$query = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd'", $db);

Закрывающие двойные кавычки на на своем месте были.

dima1981 04-09-2008 17:29 890999

Цитата:

Цитата timon4ik
Выполнение программы доходит до вызова функции mysql_fetch_row(), видит что её аргументом является некорректный запрос (тот что в значении переменной $sql), и естественно возвращает ошибку. »

каким образом он тут корректно воспринимает
mysql_query("SET CHARACTER SET 'utf8'");
echo $HTTP_POST_VARS['cd'];
$sql = mysql_query ("SELECT * FROM og", $db);
while ($abc = mysql_fetch_row($sql))
?

Цитата:

Цитата timon4ik
$query = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd'", $db); »

и так Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 8

timon4ik 04-09-2008 17:35 891004

dima1981,
хорошо, тогда попробуйте вместо
$sql = mysql_query ("SELECT * FROM og where co='$co', and cd='$cd'", $db);
написать
$sql = mysql_query ("SELECT * FROM og where co='".$_POST['co']."', and cd='".$_POST['cd']."'", $db);

Так должно заработать.

dima1981 04-09-2008 17:38 891006

и произойдет выборка из базы, ура!
щас попробую )

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 8

Coutty 04-09-2008 17:41 891009

Вот вы пишете в коде:
Цитата:

Цитата dima1981
$HTTP_POST_VARS['cd'];
echo $HTTP_POST_VARS['cd'];
$sql = mysql_query ("SELECT * FROM og 'og' where co='$co', and cd='$cd', $db", $db); »

А для чего первые две строки? Ну да, выводит, хорошо. А переменные $co и $cd откуда берутся?
Из приведённого кода видно, что они нигде не инициализируются, а значит равны NULL.

Попробуйте составить запрос в переменной, а потом его отправить. Примерно так:
PHP код:

$query "SELECT * FROM og where co='$co', and cd='$cd'";
echo 
$query;
$sql mysql_query($query); 

Полагаю, что echo $query выведет такую строку: SELECT * FROM og where co='', and cd=''.
Такой запрос вряд ли можно назвать корректным.

timon4ik 04-09-2008 17:43 891013

Цитата:

Цитата Coutty
А переменные $co и $cd откуда берутся? »

Вот именно, на это я сначала и не обратил внимание, поэтому нужно так:
$sql = mysql_query ("SELECT * FROM og where co='".$_POST['co']."', and cd='".$_POST['cd']."'", $db);

dima1981 04-09-2008 17:49 891016

от того что эти переменные увижу я в браузере, после прописывания $query = "SELECT * FROM og where co='$co', and cd='$cd'";
echo $query; обработчику станет не чуть не легче их воспринимать и это не значит что функция станет фосприниматься как корректная и т.д.

XCodeR 04-09-2008 17:49 891017

dima1981, повторяю свою просьбу еще раз: оформляйте куски кода тэгами [ CODE ], [ HMTL ] и [ PHP ] (см. кнопки на текстбоксом), ибо читать Ваши вопросы и пытаться помочь - очень сложно.

dima1981 04-09-2008 17:51 891020

HTML код:

<?
$db = mysql_connect("localhost","root","123");
mysql_select_db("rp" ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$HTTP_POST_VARS['cd'];
$query = "SELECT * FROM og where co='$co', and cd='$cd'";
echo $query;
$abc = mysql_query($query)

echo("$abc[1]|$abc[2]|$abc[3]|$abc[4]");

echo "</table>";
mysql_close($db);
?>

Parse error: syntax error, unexpected T_ECHO in C:\apache\localhost\www\zg.php on line 11

Coutty 04-09-2008 17:52 891021

Цитата:

Цитата dima1981
от того что эти переменные увижу я в браузере, после прописывания $query = "SELECT * FROM og where co='$co', and cd='$cd'";
echo $query; обработчику станет не чуть не легче их воспринимать и это не значит что функция станет фосприниматься как корректная и т.д. »

Естественно! Вы увидите, что составляется некорректный запрос и сможете исправить его (добавлением $_POST[co] и $_POST[cd]).

timon4ik 04-09-2008 17:52 891023

dima1981,
Еще вопрос, у вас точно в базе есть таблица og с полями co и cd?

Coutty 04-09-2008 17:53 891024

Цитата:

Цитата dima1981
Parse error: syntax error, unexpected T_ECHO in C:\apache\localhost\www\zg.php on line 11 »

Не стоит точка с запятой после строки $abc = mysql_query($query)

dima1981 04-09-2008 18:06 891028

да есть и первый код её полностью вытаскивает, там конечно есть и дополнительные поля, но выборку планируется осуществлять только по этим дву, в таблице поля cd и co расположенны не по соседству, но не думаю, что это является тем фактором, который так влияет на процесс

HTML код:

<?
$db = mysql_connect("localhost","root","123");
mysql_select_db("rp" ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$_POST[co];
$_POST[cd];
$sql = mysql_query ("SELECT * FROM og where co='".$_POST['co']."', and cd='".$_POST['cd']."'", $db);
echo $sql;
$abc = mysql_query($sql)
echo("$abc[1]|$abc[2]|$abc[3]|$abc[4]");
echo "</table>";
mysql_close($db);
?>

поставил точку с запятой вывел три палки т.е. все только не переменные )

timon4ik 04-09-2008 18:11 891033

А это что?
Код:

$abc = mysql_query($sql)
Куда подевался mysql_fetch_row()?

dima1981 04-09-2008 18:29 891045

да хоть
Цитата:

Цитата timon4ik
mysql_fetch_row()? »

хоть
Цитата:

Цитата timon4ik
$abc = mysql_query($sql) »

один онлине...

и так не правильно ?

<?
$db = mysql_connect("localhost","root","123");
mysql_select_db("rp" ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$_POST[co];
$_POST[cd];
$sql = mysql_query ("SELECT * FROM og where co='".$_POST['co']."', and cd='".$_POST['cd']."'", $db);
aray ($abc = mysql_fetch_array($sql))
echo("$abc[0][1]|$abc[0][2]|$abc[0][3]|$abc[0][4]");
mysql_close($db);
?>

пишет Parse error: syntax error, unexpected T_ECHO in C:\apache\localhost\www\zg.php on line 10, ставишь за и перед echo("$abc[0][1]|$abc[0][2]|$abc[0][3]|$abc[0][4]");фигурные скобки на них указывает чего то онлине

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

Coutty 04-09-2008 18:42 891055

Опять не правильно:)
PHP код:

<?
$db 
mysql_connect("localhost","root","123"); 
mysql_select_db("rp" ,$db); 
mysql_query("SET NAMES 'utf8'"); 
mysql_query("SET CHARACTER SET 'utf8'");
$_POST[co]; // это зачем? Ни присваивается никуда, ни "эхается"...
$_POST[cd]; // и это тоже не надо
$sql mysql_query ("SELECT * FROM og where co='".$_POST['co']."', and cd='".$_POST['cd']."'"$db); 
aray ($abc mysql_fetch_array($sql)) // какая-то левая команда aray, да ещё нет точки с запятой в конце
echo("$abc[0][1]|$abc[0][2]|$abc[0][3]|$abc[0][4]");
mysql_close($db);
?>

Пишите так:
PHP код:

<?
$db 
mysql_connect("localhost","root","123"); 
mysql_select_db("rp" ,$db); 
mysql_query("SET NAMES 'utf8'"); 
mysql_query("SET CHARACTER SET 'utf8'");
$sql mysql_query ("SELECT * FROM og where co='".$_POST['co']."', and cd='".$_POST['cd']."'"$db); 
$abc mysql_fetch_row($sql);
echo(
"$abc[1]|$abc[2]|$abc[3]|$abc[4]"); // вообще, для начала написать бы сюда print_r($abc), чтоб посмотреть, что содержится в массиве
mysql_close($db);
?>


dima1981 04-09-2008 19:02 891068

Вообщем, отказывает не то база не то скрипт не то не извесно что погорячился там
<?
$db = mysql_connect("localhost","root","123");
mysql_select_db("rp" ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$sql = mysql_query ("SELECT * FROM og where co='".$_POST['co']."', and cd='".$_POST['cd']."'", $db);
$abc = mysql_fetch_row($sql);
echo("$abc[1]|$abc[2]|$abc[3]|$abc[4]");
mysql_close($db);
?>

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 7
|||

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

timon4ik 04-09-2008 19:12 891071

Вот так напишите, прямо скопируйте отсюда и вставьте вместо своего кода, и отпишитесь что получилось:
Код:

<?
$db = mysql_connect("localhost","root","123");
mysql_select_db("rp", $db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$sql = mysql_query("SELECT * FROM og where co='".$_POST['co']."', and cd='".$_POST['cd']."'", $db);
while($abc = mysql_fetch_array($sql))
{
echo $abc[0]."|".$abc[1]."|".$abc[2]."|".$abc[3];
}
mysql_close($db);
?>


dima1981 04-09-2008 19:26 891077

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\apache\localhost\www\zg.php on line 7

может потому, что mysql 6-ой php 5-ый и апач 229 ?
но полностью таблицу показывает

timon4ik 04-09-2008 19:34 891085

Ну давайте проверим...

Замените свой код на этот и скопируйте сюда строку, которая выведется в браузер:
Код:

<?
$db = mysql_connect("localhost","root","123");
mysql_select_db("rp", $db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$sql = "SELECT * FROM og where co='".$_POST['co']."', and cd='".$_POST['cd']."'";
echo $sql;
mysql_close($db);
?>


dima1981 04-09-2008 19:38 891088

SELECT * FROM og where co='0', and cd='1' прям так и пишет и данные из форм html файла передаются

timon4ik 04-09-2008 19:45 891093

Все ясно, лишняя запятая в строке.
Вот этот код должен работать:

Код:

<?
$db = mysql_connect("localhost","root","123");
mysql_select_db("rp", $db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$sql = mysql_query("SELECT * FROM og where co='".$_POST['co']."' and cd='".$_POST['cd']."'", $db);
while($abc = mysql_fetch_array($sql))
{
echo $abc[0]."|".$abc[1]."|".$abc[2]."|".$abc[3]."<br>";
}
mysql_close($db);
?>


dima1981 04-09-2008 19:50 891098

timon4ik, вы чудо человек, спасибо вам огромное, очень вам и всем благодарен ура! )

теперь только, разберусь с кодом и далее две задачи, это автоматическое удаление, для этого скачал cron и дизай для этого у меня есть пейнт )
опять спасибо жму руку мир вам )

timon4ik 04-09-2008 19:55 891103

Цитата:

Цитата dima1981
опять спасибо жму руку »

Нажмите лучше "Полезное сообщение" под тем постом, который вам помог и отметьте тему решенной :)

dima1981 04-09-2008 19:59 891106

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

Coutty 04-09-2008 20:15 891128

Цитата:

Цитата dima1981
только что то теперь по одному значению теперь не выберается ) »

Вместо while($abc = mysql_fetch_array($sql)) пишите $abc = mysql_fetch_array($sql);
И фигурные скобки можно убрать. А можно и не убирать, потому что правильнее было бы добавить в sql-запрос в конце LIMIT 1.
Точку с запятой не забудьте))

Оппа... Я что-то логическую связь неправильно выстроил)
LIMIT 1 добавляется, чтобы делать выборку только одной строки, а не потому, что скобки стоят =^_^'=

dima1981 04-09-2008 20:42 891162

Цитата:

Цитата Coutty
LIMIT 1 добавляется, чтобы делать выборку только одной строки, а не потому, что скобки стоят =^_^'= »

да и скоторой записи начинать вторая цифра )
выбрать к примеру только по co или только по cd или по обоим значениям, как сделать?

dima1981 04-09-2008 22:42 891249

Короче данные опять не выводятся... и выберает как придется, какието имена в таблице есть но он чистую страницу показывает, но теперь почему то показывает её постоянно.


Время: 04:49.

Время: 04:49.
© OSzone.net 2001-