[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с кодом
gricenkom
<?php 
$mysql_host="localhost"; // MySQL Host [localhost]
$mysql_port="3306"; // MySQL Port [3306]
$mysql_db="baza"; // MySQL Database [l2jdb]
$mysql_login="root"; // MySQL User [root]
$mysql_password="root"; // MySQL Password [root]


$link = mysql_connect($mysql_host, $mysql_login, $mysql_password ) or die("<br>Could not connect: " .mysql_error());
mysql_select_db($mysql_db);


$result = mysql_query ("SELECT `object_id` FROM `items` WHERE item_id = '6660'") or die(mysql_error() ."<br/>". $result);

while ($row = mysql_fetch_assoc($result))

$result2 = mysql_query("SELECT `itemid` FROM `item_attributes` WHERE itemid = $row[object_id]") or die("Invalid query: " .mysql_error());
while ($row2 = mysql_fetch_assoc($result2))

$result3 = mysql_query("DELETE FROM `item_attributes` WHERE itemid = $row2[itemid]") or die("Invalid query: " .mysql_error());


?>

$result3 Удаляет только последнюю строку, $result2 получается запрос выводит только последнюю запись а нужно все
$result 1й запрос нормально выводит все строки что нужно



Спустя 24 минуты, 4 секунды (11.05.2011 - 17:50) quickxyan написал(а):

$result2 = mysql_query("SELECT `itemid` FROM `item_attributes` WHERE `itemid` = '".$row["object_id"]."'") or die("Invalid query: " .mysql_error());
while ($row2 = mysql_fetch_assoc($result2))

$result3 = mysql_query("DELETE FROM `item_attributes` WHERE `itemid` = '".$row2["itemid"]."'") or die("Invalid query: " .mysql_error());

Спустя 13 минут, 27 секунд (11.05.2011 - 18:04) gricenkom написал(а):
Ничего не изменилось

Спустя 6 минут, 29 секунд (11.05.2011 - 18:10) quickxyan написал(а):
ну ясно что одну запись ты же скобки цикла не выставил :)

$result = mysql_query ("SELECT `object_id` FROM `items` WHERE item_id = '6660'") or die(mysql_error() ."<br/>". $result);

while ($row = mysql_fetch_assoc($result)){

$result2 = mysql_query("SELECT `itemid` FROM `item_attributes` WHERE `itemid` = '".$row["object_id"]."'") or die("Invalid query: " .mysql_error());
while ($row2 = mysql_fetch_assoc($result2)){

$result3 = mysql_query("DELETE FROM `item_attributes` WHERE `itemid` = '".$row2["itemid"]."'") or die("Invalid query: " .mysql_error());
}
}


Спустя 11 минут, 19 секунд (11.05.2011 - 18:22) gricenkom написал(а):
Спасибо большое познания слабые в php я даже не знал что скобки это цикл

Спустя 5 минут, 54 секунды (11.05.2011 - 18:27) quickxyan написал(а):
ну скобки нужны если в цикле или условие больше одной команды. если же в цикле или условие одна строчка выполняется, то скобки можно не ставить, но это не обязательно.

все просто: открытая скобка показывает где начало, закрытая - где конец

Спустя 51 минута, 50 секунд (11.05.2011 - 19:19) gricenkom написал(а):
А если больше сделать так пойдёт?
$result = mysql_query ("SELECT `object_id` FROM `items` WHERE item_id = '6660'") or die(mysql_error() ."<br/>". $result);

while ($row = mysql_fetch_assoc($result))
{

$result2 = mysql_query("SELECT `itemid` FROM `item_attributes` WHERE `itemid` = '".$row["object_id"]."' AND `elemType` > '-1'") or die("Invalid query: " .mysql_error());
while ($row2 = mysql_fetch_assoc($result2))
{
$result3 = mysql_query("SELECT `owner_id` FROM `items` WHERE `object_id` = '".$row2["itemid"]."' ") or die("Invalid query: " .mysql_error());
while ($row3 = mysql_fetch_assoc($result3))
{
$result4 = mysql_query("SELECT `account_name` FROM `characters` WHERE `charId` = '".$row3["owner_id"]."' ") or die("Invalid query: " .mysql_error());
while ($row4 = mysql_fetch_assoc($result4))
{
$result5 = mysql_query("UPDATE `accounts` SET `accessLevel`= '-100' WHERE login` = '".$row4["account_name"]."' ") or die("Invalid query: " .mysql_error());

}
}
}
}


Спустя 4 минуты, 6 секунд (11.05.2011 - 19:23) gricenkom написал(а):
Invalid query: 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 '` = 'jawa'' at line 1


не пошло

Спустя 9 минут, 46 секунд (11.05.2011 - 19:33) quickxyan написал(а):
кавычку пропустил ) можешь повысить карму если помог :)

$result5 = mysql_query("UPDATE `accounts` SET `accessLevel`= '-100' WHERE `login` = '".$row4["account_name"]."' ") or die("Invalid query: " .mysql_error());

Спустя 6 минут, 14 секунд (11.05.2011 - 19:39) gricenkom написал(а):
Пошло без ошибок но не делает -100

Спустя 57 секунд (11.05.2011 - 19:40) quickxyan написал(а):
ну тут уже ковыряй свои алгоритмы. что там и как должно быть.
в каком случае должно отдавать -100?

Спустя 1 минута, 24 секунды (11.05.2011 - 19:42) quickxyan написал(а):
понял. там должно в БД переписыватся значение.

проверь правильность названия полей и что в самой переменной

Спустя 26 минут, 34 секунды (11.05.2011 - 20:08) gricenkom написал(а):
поставил вывод на экран все правильно показывает
$result = mysql_query ("SELECT `object_id` FROM `items` WHERE item_id = '6660'") or die(mysql_error() ."<br/>". $result);

while ($row = mysql_fetch_assoc($result)){

$result2 = mysql_query("SELECT `itemid` FROM `item_attributes` WHERE `itemid` = '".$row["object_id"]."' AND `elemType` > '-1'") or die("Invalid query: " .mysql_error());
while ($row2 = mysql_fetch_assoc($result2)){

$result3 = mysql_query("SELECT `owner_id` FROM `items` WHERE `object_id` = '".$row2["itemid"]."' ") or die("Invalid query: " .mysql_error());
while ($row3 = mysql_fetch_assoc($result3)){

$result4 = mysql_query("SELECT `account_name` FROM `characters` WHERE `charId` = '".$row3["owner_id"]."' ") or die("Invalid query: " .mysql_error());
while ($row4 = mysql_fetch_assoc($result4)){
echo "$row4[account_name]";{
$result5 = mysql_query("UPDATE `accounts` SET `accessLevel`= '-100' WHERE 'login' = '".$row4["account_name"]."' ") or die("Invalid query: " .mysql_error());
if($row2["itemid"]){
$result6 = mysql_query("DELETE FROM `item_attributes` WHERE `itemid` = '".$row2["itemid"]."'") or die("Invalid query: " .mysql_error());

}
}
}
}
}
}

чото не то с
$result5 = mysql_query("UPDATE `accounts` SET `accessLevel`= '-100'  WHERE 'login' = '".$row4["account_name"]."' ") or die("Invalid query: " .mysql_error());

потому как

$result6 = mysql_query("DELETE FROM `item_attributes` WHERE `itemid` = '".$row2["itemid"]."'") or die("Invalid query: " .mysql_error());

работает а поля все правильно написаны если не правильно то пишет
Invalid query: Table 'l2regeneration_base.acaunts' doesn't exist

Спустя 3 минуты, 43 секунды (11.05.2011 - 20:12) inpost написал(а):
gricenkom
ты уверен, что тот код показываешь, какой надо?
Тебе же написали, нет таблицы 'l2regeneration_base.acaunts' , при этом в данных запросах нет обращения к данной таблице!

Спустя 1 минута, 22 секунды (11.05.2011 - 20:13) gricenkom написал(а):
Invalid query: Table 'l2regeneration_base.acaunts' doesn't exist это я специально изменил чтоб посмотреть выдаст ошибку или нет

при этом в данных запросах нет обращения к данной таблице!
Есть вот выводит правельное число которое есть в accounts
echo "$row4[account_name]

Спустя 6 минут, 44 секунды (11.05.2011 - 20:20) inpost написал(а):
gricenkom
Я тебя не понимаю, ты показываешь ошибку, которая не относится к данному коду, при этом жалуешься, что именно этот код не работаеТ! Ошибка то не относится сюда ВООБЩЕ!

Спустя 45 секунд (11.05.2011 - 20:21) quickxyan написал(а):
не те кавычки на логине.


$result5 = mysql_query("UPDATE `accounts` SET `accessLevel`= '-100' WHERE `login` = '".$row4["account_name"]."' ") or die("Invalid query: " .mysql_error());

Спустя 19 минут, 45 секунд (11.05.2011 - 20:41) gricenkom написал(а):
Вот переделал чуть информацию выводит правельно удаляет нормально а вот UPDATE не работает
$result = mysql_query ("SELECT `object_id` FROM `items` WHERE item_id = '6660'") or die(mysql_error() ."<br/>". $result);

while ($row = mysql_fetch_assoc($result)){

$result2 = mysql_query("SELECT `itemid` FROM `item_attributes` WHERE `itemid` = '".$row["object_id"]."' AND `elemType` > '-1'") or die("Invalid query: " .mysql_error());
while ($row2 = mysql_fetch_assoc($result2)){
if($row2["itemid"]){

$result3 = mysql_query("SELECT `owner_id` FROM `items` WHERE `object_id` = '".$row2["itemid"]."' ") or die("Invalid query: " .mysql_error());
while ($row3 = mysql_fetch_assoc($result3)){

$result4 = mysql_query("SELECT `account_name` FROM `characters` WHERE `charId` = '".$row3["owner_id"]."' ") or die("Invalid query: " .mysql_error());
while ($row4 = mysql_fetch_assoc($result4)){
echo "$row4[account_name]:<br/>";{
$result5 = mysql_query("SELECT `login` FROM `accounts` WHERE `login` = '".$row4["account_name"]."' ") or die("Invalid query: " .mysql_error());
while ($row5 = mysql_fetch_assoc($result5)){
if($row2["itemid"]){
$result6 = mysql_query("UPDATE `accounts` SET `accessLevel`= '-100' WHERE 'login' = '".$row5["login"]."' ") or die("Invalid query: " .mysql_error());

$result7 = mysql_query("DELETE FROM `item_attributes` WHERE `itemid` = '".$row2["itemid"]."'") or die("Invalid query: " .mysql_error());

Спустя 2 минуты, 18 секунд (11.05.2011 - 20:43) quickxyan написал(а):
gricenkom
не, ну едрён-батон ты же не читаешь ничего )
говорю в запросе неправильные кавычки на login. у тебя 'login', а надо `login`


$result6 = mysql_query("UPDATE `accounts` SET `accessLevel`= '-100' WHERE `login` = '".$row5["login"]."' ") or die("Invalid query: " .mysql_error());

Спустя 1 минута, 14 секунд (11.05.2011 - 20:44) gricenkom написал(а):
Сори написали одновремено я не видел
Всё заработало спасибо огромное и ещё где вставить echo если if($row2["itemid"])
не срабатывает чтоб писало типо запрос не дал результатов

Спустя 6 минут, 47 секунд (11.05.2011 - 20:51) quickxyan написал(а):
можно попробовать так, но не уверен, так как в том скрипте, что ты выложил нету закрывающейся кавычки if, я доставил на свое усмотрение :)

if($row2["itemid"]){
$result6 = mysql_query("UPDATE `accounts` SET `accessLevel`= '-100' WHERE 'login' = '". $row5["login"]."' ") or die("Invalid query: " .mysql_error());

$result7 = mysql_query("DELETE FROM `item_attributes` WHERE `itemid` = '".$row2["itemid"]."'") or die("Invalid query: " .mysql_error());
}
else
echo "ПОИСК НЕ ДАЛ РЕЗУЛЬТАТОВ";

Спустя 33 секунды (11.05.2011 - 20:51) quickxyan написал(а):
Цитата (quickxyan @ 11.05.2011 - 17:43)
Сори написали одновремено я не видел

да, все норм. я просто подумал, что проигнорировал )

Спустя 18 минут, 30 секунд (11.05.2011 - 21:10) Dezigo написал(а):
Моя критика.
Не слушай quickxyan.
1. В цикле запросы к БД. (Не когда так не делай)
2. Используй для привязки к id ( LEFT JOIN)
3. Весь цикл считывания из объекта загони в массив, и так все данные заноси в массив. Потом ,если надо сравнишь. - не в коем случае в цикле НЕ ДЕЛАТЬ запросы!
4. И вообще советы быдло кодера. Увидят такое засмеют.

Спустя 8 минут, 52 секунды (11.05.2011 - 21:19) gricenkom написал(а):
quickxyan ему спасибо всё работает отлично ещё бы в файл записывать всё что найдёт

Спустя 27 секунд (11.05.2011 - 21:19) quickxyan написал(а):
Dezigo
мм, вообще-то я только исправлял его ошибки, а сам код полностью автора

Спустя 3 минуты, 5 секунд (11.05.2011 - 21:22) Dezigo написал(а):
Цитата (quickxyan @ 11.05.2011 - 18:19)
Dezigo
мм, вообще-то я только исправлял его ошибки, а сам код полностью автора

Верно.
Ты ему помог.
Но реализация не правельна., blink.gif sad.gif

Спустя 2 минуты, 50 секунд (11.05.2011 - 21:25) quickxyan написал(а):
Dezigo
ну так ТС и не просил пересмотреть реализацию. дело было так.
тут не работает код, указали на ошибки вот и все.
впринципе каждый реализует как может или хочет.

да, я наверное еще тот быдло кодер, но может когда-то и перерасту в настоящего программиста)

Спустя 22 минуты, 4 секунды (11.05.2011 - 21:47) gricenkom написал(а):
А какая разница как написан главное что он работает так как нужно
Огромное спасибо за помощь

Спустя 14 минут, 6 секунд (11.05.2011 - 22:01) quickxyan написал(а):
надо стремится к оптимизации) просто у тебя тут куча запросов к БД которые будут снижать быстродействие. можно сделать так как было сказано выше через JOIN и меньше кода будет и оптимизирование как-то.

Спустя 2 минуты, 16 секунд (11.05.2011 - 22:04) Gradus написал(а):
gricenkom, это правильно зачем стрататься и делать по человечески если можно быстро через *опу.Дом из грязи сделал, стоит и самое главное.Упадёт сервачёк ну и ладно что-тут...

Спустя 1 минута, 9 секунд (11.05.2011 - 22:05) sharki написал(а):
Он походу еще не чувствовал настоящей головной боли, и отвращения к коду которое читает))

Спустя 7 часов, 29 минут, 48 секунд (12.05.2011 - 05:35) gricenkom написал(а):
Расскажите как по другому можно я php полный 0 я понял что через JOIN но я понятия не имею как это

Спустя 32 минуты, 31 секунда (12.05.2011 - 06:07) XCross написал(а):

SELECT * FROM `таблица1` LEFT JOIN `таблица 2` ON `столбец 1 табл ` = `столбецу 2 табл`;

Пример:


$query=mysql_query("SELECT * FROM `news` LEFT JOIN `categories` ON news.cat_id = categories.id") or die (mysql_error());

Спустя 18 минут, 59 секунд (12.05.2011 - 06:26) inpost написал(а):
Да как-то так, но не уверен, что получится, так как у тебя там какая-то странная связка идёт!
$query = "
SELECT c.`account_name`,d.`login`
FROM `items` a
LEFT JOIN `item_attributes` b ON b.`itemid` = a.`object_id`
LEFT JOIN `characters` c ON c.`charId` = a.`owner_id`
LEFT JOIN `accounts` d ON d.`login` = c.`account_name`
WHERE a.`item_id` = 6660
AND b.`elemType` > '-1'
"
;
$res = mysql_query($query);
$login = array();
while($row = mysql_fetch_assoc($res))
{
echo $row['accaunt_name'];
$login[] = $row['login'];
}
mysql_query("
UPDATE `accounts`
SET `accessLevel`= '-100'
WHERE `login` IN ("
.implode(',',$login).")
"
) or die("Invalid query: " .mysql_error());

А удалить так же, дописываешь выборку из первой таблицы, в while так же создаёшь отдельный массив, и удаляешь WHERE `row` IN (implode)

Спустя 19 минут, 2 секунды (12.05.2011 - 06:45) Xpund написал(а):
gricenkom
Используй такой вид:
$row4['account_name']
это раз

Если в таблицах будет много записей, то с такимИ циклом сервер зависнет)

ВОт тут:
$result6 = mysql_query("DELETE  FROM `item_attributes` WHERE `itemid` = '".$row2["itemid"]."'")


Лучше так: вдруг поможет:
$result6 = mysql_query("DELETE  FROM `item_attributes` WHERE `itemid` = ".$row2['itemid']." ")

Спустя 8 часов, 52 минуты, 33 секунды (12.05.2011 - 15:38) gricenkom написал(а):
Спасибо будем пробывать
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.