Не работает, вроде как правильный, SQL-запрос (Решено)

  • Автор темы Автор темы dzds
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
Фанат, передергивают в другом месте, а я просто согласился с тобой, в чем проблемы?=)
 
Фанат, передергивают в другом месте, а я просто согласился с тобой, в чем проблемы?=)
Ну, это я малость нагнал саспенсу. В надежде что ты не будешь воспринимать очень всерьёз :)
Там ключевая фраза последняя, а не первая.
Реально же, проблема его основная не в этой несчастной функции.
 
Фанат, ну ничего не поделать, SafeMysql он не осилит сразу. Да и мануалы везде в инете с досточтимой mysql_query, и только с ней, и любой Вася, который только начал писать на php, считает своей прямой задачей сделать сайт, где подробно будет учить таких же начинающих писать на php =) Замкнуый круг в общем.
 
Фанат, ну ничего не поделать, SafeMysql он не осилит сразу. Да и мануалы везде в инете с досточтимой mysql_query, и только с ней, и любой Вася, который только начал писать на php, считает своей прямой задачей сделать сайт, где подробно будет учить таких же начинающих писать на php =) Замкнуый круг в общем.
Да ну, я ее уже и не продвигаю. И даже ПДО не панацея.
Надо их всех на ормы сажать.

И вот в этом смысле, кстати, имеет смысл все нубье, приходящее сюда, сразу гнать пинками в кохану или йии, как наиболее коммьюнити-френдли.
 
Кохана вроде как екнулась, я бы в Yii не гнал, там черт ногу сломит =(
 
Фанат, ну ничего не поделать, SafeMysql он не осилит сразу. .
Да почему не осилит-то? Что за нежное отношение к новичкам? Программирование без понимания - это сложно, очень сложно. Если хочется научиться - пусть садится и разбирается в 50 строках кода, с помощью которых реализован safemysql, или любая другая подобная либа.
Нафига советовать делать n+1 запрос, там где нужно 2, обосновывая это тем, что новичек возможно не поймет, или зачем выяснять где же не правильно в sql вставляются данные, когда это делается не через плейсхолдеры? Дайте ему ссылку на PDO, статью о PDO, или любую обертку с плейсхолдерами.
Почему для любого отвечающего передавать данные отдельно от запроса - естественно, а под новичка нужно подстроиться и решать проблему на пустом месте?
 
hell0w0rd, мне хочется, чтобы человек двигался постепенно, а не рывками. Не усвоив основы, начинать уже разбираться в фреймворках рановато. Это как в спортзале, пока не начнешь жать с груди 60, 80 ты не осилишь, нельзя сразу перепрыгивать к значительным весам, если ты новичок.

А тут просто человек смотрел на вывод var_dump()'a не в режиме исходника, а в режиме обычной страницы - то есть нарушил основополагающее правило отладки.
В любом случае @Фанат ему правильно все посоветовал.
 
Проблема решена!
А ошибка моя была не только в htmlspecialchars, я вообще переписал (ужо сам, своими мозгами) почти весь цикл foreach в котором это всё крутилось, код приводить думаю нет смысла, исходя из обсуждения, таким уже давно не пользуются.

Спасибо Всем кто пытались мне помочь.
 
да пожалуйста! если бы ты не игнорировал то, что тебе пишут, было бы проще. не понимаю таких людей — приходят за помощью, а потом упорно отбиваются от нее.
 
- ручная сборка запроса
это только при условие криворукости. можно хоть скока хвалить QB, но это не означает что все должны их использовать и уж тем более не говорит от их привосходстве.
 
Я не игнорировал, просто я только учусь, причём самостоятельно, т.е. не в ВУЗе, поэтому, вероятно не всё понимал.
Если можете пришлите ссылочки чтобы это мне почитать/выучить чтоб стать такими же крутыми спецами как Вы
 
vasinsky, что зачем? Я не совсем понял суть вопроса. Просто есть фанаты QB, а есть любители строить на половину все руками и почему-то примирить их, нереально.
 
c0dex, не, я имею виду -зачем тут-то холиварить, когда есть свежая тема по этому поводу - от тебя.
точно так же не примерить процедурщиков и оопэшников, mysqli и PDO
 
Здравствуйте, я только, только начал изучать скул и столкнулся с проблемой, помогите, будьте добры.
В общем к php в MySQL Navicat сделал запрос, но что то я не правильно сделал...
DROP TABLE IF EXISTS `news`;
CREATE TABLE IF NOT EXISTS `news` (
`id_news` int(10) NOT NULL,
`title` bigint(10) NOT NULL,
`date` int(10) NOT NULL,
`content` int(10) NOT NULL,
PRIMARY KEY (`object_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
<?php

$connect = mysql_connect("$dbhost", "$dbuser", "$dbpassword");
mysql_select_db("$dbnews");
mysql_query("SET NAMES 'utf8'");
$query = "SELECT `id_news`,`title`,`date`,`content` FROM `news`";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
$id_news = $row['id_news'];
$title = $row['title'];
$date = $row['date'];
$content = $row['content'];
}


if ( !isset( $_GET["action"] ) ) $_GET["action"] = "showlist";
switch ( $_GET["action"] ) {
// Вывод всех новостей
case "showlist":
echo '<div class="top">';
require "top10.php";
echo '</div>';
show_list(); break;

// Форма для добавления новостей
case "addnews":
if (isset($_SESSION['id']) AND $_SESSION['access_level'] >= "$access_level") {
get_add_item_form(); break;
}
else {echo "Ошибка";}

// Добавить новость
case "add":
if (isset($_SESSION['id']) AND $_SESSION['access_level'] >= "$access_level") {
add_item(); break;
}
else return;

// Вывод отдельной новости
case "get_news":
get_news(); break;

// Форма для редактирования новости
case "editform":
if (isset($_SESSION['id']) AND $_SESSION['access_level'] >= "$access_level") {
get_edit_item_form();
}
else {echo "Ошибка";}
break;

// Обновить новость
case "update":
if (isset($_SESSION['id']) AND $_SESSION['access_level'] >= "$access_level") {
update_item(); break;
}
else {echo "Ошибка";}

// Удалить новость
case "delete":
if (isset($_SESSION['id']) AND $_SESSION['access_level'] >= "$access_level") {
delete_item(); break;
}
else return;

// По умолчанию - вывод всех новостей
default:
show_list();
}


// Функция выводит список всех записей в таблице БД
function show_list() {
global $news_amt;
global $access_level;

if (isset($_GET['page'])) {
$page = intval($_GET['page']);
}
else {
$page = 1;
}

$select = "SELECT COUNT(*) AS `counter` FROM `news`";
$query = mysql_query($select);
$row = mysql_fetch_assoc($query);
$elements = $row['counter'];
$pages = ceil($elements/$news_amt);

if ($page < 1) {
$page = 1;
}
elseif ($page > $pages) {
$page = $pages;
}
$start = ($page-1)*$news_amt;
if ($start < 0) $start = 0;

$select = "SELECT * FROM news ORDER BY id_news DESC LIMIT {$start}, {$news_amt}";
$query = mysql_query($select) or die(mysql_error());

while ($item = mysql_fetch_assoc($query)) {
$id_news = $item['id_news'];

echo '<div class="news">';
echo '<div class="news-title"><a href="'.$_SERVER['PHP_SELF'].'?action=get_news&id_news='.$item['id_news'].'">'.$item['title'].'</a></div>';
echo '<div class="news-date">'.$item['date'].'</div>';
echo '<div class="news-text">'.$item['content'].'</div>';
if (isset($_SESSION['id']) AND $_SESSION['access_level'] >="$access_level") {
echo '<a href="'.$_SERVER['PHP_SELF'].'?action=editform&id_news='.$item['id_news'].'"><div class="button-edit border shadow">Редактировать</div></a>';
}
echo '<div class="clear"></div>';
echo '</div>';
}

echo '<div class="pages">';
echo '<div class="paginator" id="paginator3"></div>';
echo '<script type="text/javascript"> pag3 = new Paginator(\'paginator3\', '.$pages.', 5, '.$page.', ""); </script>';
echo '</div>';
//return
}

// Вывод новости по отдельности
function get_news() {
global $access_level;
$id_news = intval($_GET['id_news']);
$query = "SELECT * FROM `news` WHERE `id_news` = ".$id_news;
$result = mysql_query($query);
while ($item = mysql_fetch_assoc($result)) {
$title = $item['title'];
$date = $item['date'];
$content = $item['content'];

echo '<div class="news">';
echo '<div class="news-title">'.$title.'</div>';
echo '<div class="news-date">'.$date.'</div>';
echo '<div class="news-text">'.$content.'</div>';
if (isset($_SESSION['id']) AND $_SESSION['access_level'] >= "$access_level") {
echo '<a href="'.$_SERVER['PHP_SELF'].'?action=editform&id_news='.$item['id_news'].'"><div class="button-edit border shadow">Редактировать</div></a>';
}
echo '<div class="clear"></div>';
echo '</div>';
}
}

// Функция формирует форму для добавления записи в таблице БД
function get_add_item_form() {
$date=date("d M Y, H:i");

echo '<div class="news">';
echo '<div class="news-title">Добавить новость</div>';
echo '<div>
<form name="addnews" action="'.$_SERVER['PHP_SELF'].'?action=add" method="POST">';
echo '<div class="mb10"><b>Заголовок:</b> <input type="text" class="field" name="title"></div>';
echo '<div class="mb10"><b>Дата:</b> '.$date.'</div>';
echo '<div><textarea type="text" id="input" name="content"></textarea></div>';
echo '<div align="center"><input type="submit" class="button-submit dark-shadow" name="button" value="Добавить"/> <button type="button" class="button-submit dark-shadow" onClick="history.back();">Отменить</button></div>';
echo '</form>';
echo '</div>';
if(!empty($add_error)) echo '<center><div class="error">'.$add_error.'</div>';
if(!empty($add_success)) echo '<div class="accept">'.$add_success.'</center></div>';
echo '</div>';
echo '<div class="clear"></div>';
//return
}

// Функция добавляет новую запись в таблицу БД
function add_item() {
$date=date("d M Y, H:i");
$title = mysql_escape_string( $_POST['title'] );
$content = mysql_escape_string( $_POST['content'] );
$query = "INSERT INTO news (title, date, content) VALUES ('".$title."', '".$date."', '".$content."');";
mysql_query ( $query );
//header( 'Location: '.$_SERVER['PHP_SELF'] );
echo "<script language='JavaScript'>window.location.href = 'index.php'; </script>";
die();
//return
}

// Функция формирует форму для редактирования записи в таблице БД
function get_edit_item_form() {
$date=date("d M Y, H:i");
$query = 'SELECT id_news, title, content FROM news WHERE id_news='.$_GET['id_news'];
$result = mysql_query( $query );
$item = mysql_fetch_array( $result );

echo '<div class="news">';
echo '<div class="news-title">Редактировать новость</div>';
echo '<div>
<form name="editform" action="'.$_SERVER['PHP_SELF'].'?action=update&id_news='.$_GET['id_news'].'" method="POST">';
echo '<div class="mb10"><b>Заголовок:</b> <input type="text" class="field" name="title" value="'.$item['title'].'"></div>';
echo '<div class="mb10"><b>Дата:</b> '.$date.'</div>';
echo '<div><textarea type="text" id="input" name="content">'.$item['content'].'</textarea></div>';
echo '<div align="center">
<input type="submit" class="button-submit dark-shadow" name="button" value="Сохранить"/>
<button type="button" class="button-submit dark-shadow" onClick="history.back();">Отменить</button>
<button type="button" class="button-submit dark-shadow" ONCLICK="stat()">Удалить</button>
<script>function stat(){location.href="'.$_SERVER['PHP_SELF'].'?action=delete&id_news='.$item['id_news'].'";}</script>
</div>';
echo '</form>';
echo '</div>';
if(!empty($add_error)) echo '<center><div class="error">'.$add_error.'</div>';
if(!empty($add_success)) echo '<div class="accept">'.$add_success.'</center></div>';
echo '</div>';
echo '<div class="clear"></div>';
//return
}

// Функция обновляет запись в таблице БД
function update_item() {
$title = mysql_escape_string( $_POST['title'] );
$content = mysql_escape_string( $_POST['content'] );
$query = "UPDATE news SET title='".$title."', content='".$content."'
WHERE id_news=".$_GET['id_news'];
mysql_query ( $query );
//header( 'Location: '.$_SERVER['PHP_SELF'] );
echo "<script language='JavaScript'>window.location.href = 'index.php'; </script>";
die();
//return
}

// Функция удаляет запись в таблице БД
function delete_item() {
$query = "DELETE FROM news WHERE id_news=".$_GET['id_news'];
mysql_query ( $query );
//header( 'Location: '.$_SERVER['PHP_SELF'] );
echo "<script language='JavaScript'>window.location.href = 'index.php'; </script>";
die();
//return
}
 
@StiG, будь добр создать свой тред. Закрыто.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху