PHP&MYSQL

artapp-ds

Новичок
Всем доброго времени суток!
В одном скрипте потребовалось при каждом его выполнении из таблицы по порядку выбирать по 1 строке, используя сессии. Дело в том что в таблице у каждой строки есть поле id и т.к. база постоянно изменяется, то даже у первой строки id может быть равен хоть 256 например, поэтому мой скрипт не работает как надо, как исправить это?
PHP:
<?php
	//..		
		$rs = mysql_query( "SELECT * FROM table WHERE id=".$_SESSION['id']);
		$row = mysql_fetch_array($rs);
		echo '<a href="'.$row["url"].'"><img src="'.$row["img"].'"/></a>';
		$_SESSION['id']++;
	//..
?>
 

artapp-ds

Новичок
Спасибо, но почему то из базы постоянно берется первая запись..
вот весь код:
PHP:
<?php
	define("config_0", "localhost");//хост
	define("config_1", "root");//юзер
	define("config_2", "vertrigo");//пароль
	define("config_3", "test");//база
	define("config_4", "banners");//таблица
	define("config_5", "banners/");//папка для баннеров
	define("config_6", "http://localhost");//сайт
	session_start();
	if (!isset($_SESSION['id'])){$_SESSION['id']=0;}
	mysql_connect(config_0,config_1,config_2) or $errors .="Error 0х1";
	mysql_select_db(config_3) or $errors .="Error 0х2";
	function show_banner() {
		$id = $_SESSION['id'];
		//echo " SELECT * FROM ".config_4." WHERE id > ".$id." LIMIT 1";
		$rs = mysql_query( " SELECT * FROM ".config_4." WHERE id > ".$id." LIMIT 1");
		$row = mysql_fetch_array($rs);
		echo '<a href="'.$row["url"].'"><img src="'.$row["img"].'"/></a>';
    }
	show_banner();
	$_SESSION['id']=$_SESSION['id']+1;
?>
 

artapp-ds

Новичок
О чем подумать? в течении выполнения скрипт возьмет из базы строку по текущему id, а в конце выполнения прибавит 1. может я чего то не понимаю :(
Сами сессии прекрасно справляются с своей задачей, если раскомментировать echo то это прекрасно видно. Тут сам запрос работает не так как хотелось..
 

Фанат

oncle terrible
Команда форума
об осмысленности данного оператора и его соответствии задаче
 

Фанат

oncle terrible
Команда форума
это-то как раз не страшно. со всеми случается.
надо только немного подумать.
расписать себе на пальцах, что ты хочешь получить. что хочешь, чтобы код делал.
 

artapp-ds

Новичок
кажется я понял:)
PHP:
$_SESSION['id']=$row["id"];
работает, но теперь как то надо добавить цикличность..
 

artapp-ds

Новичок
Вопрос закрыт:) вот код может кому понадобится:
PHP:
<?php
	define("config_0", "localhost");//хост
	define("config_1", "root");//юзер
	define("config_2", "vertrigo");//пароль
	define("config_3", "test");//база
	define("config_4", "banners");//таблица
	define("config_5", "banners/");//папка для баннеров
	define("config_6", "http://localhost");//сайт
	session_start();
	if (!isset($_SESSION['id'])){$_SESSION['id']=0;}
	if (!isset($_SESSION['count'])){$_SESSION['count']=0;}
	mysql_connect(config_0,config_1,config_2) or $errors .="Error 0х1";
	mysql_select_db(config_3) or $errors .="Error 0х2";
	function bd_count() {
		$sql='select SQL_CALC_FOUND_ROWS * from '.config_4;
		$res=mysql_query($sql);
		return mysql_num_rows($res)-1;
	}
	function show_banner() {
		$id = $_SESSION['id'];
		echo " SELECT * FROM ".config_4." WHERE id > ".$id." LIMIT 1";
		$rs = mysql_query( " SELECT * FROM ".config_4." WHERE id > ".$id." LIMIT 1");
		$row = mysql_fetch_array($rs);
		echo '<a href="'.$row["url"].'"><img src="'.$row["img"].'"/></a>';
		if ($_SESSION['count'] < bd_count())
		{
			$_SESSION['count']++;
			$_SESSION['id']=$row["id"];
		} else
		{
			$_SESSION['count']=0;
			$_SESSION['id']=0;
		}
    }
	show_banner();
?>
 

Фанат

oncle terrible
Команда форума
так вот как узнать кол-во строк в таблице?
охохох...
Если ты играешь на игральном автомате и достаёшь по 50 рублей из кармана - тебе точно нужно знать количество полтинников, которое было в кармане изначально, чтобы узнать, что денег больше не осталось?
 

artapp-ds

Новичок
PHP:
$i=0;
$sql='select name from `users`';
$res=mysql_mysql_query($sql);
while($row=mysql_fetch_assoc($res)){
        $i++;
}
echo 'В таблице '.$i.' пользователей';
Как по мне такое решение медленное
 

artapp-ds

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

Фанат

oncle terrible
Команда форума
очень хорошо.
а в коде зачем тебе отдельный счетчик тогда?
 

Фанат

oncle terrible
Команда форума
Вообще-то, мне кажется, что здесь нужна не оптимизация, а здравый смысл.
И назвать увеличение кода в два раза оптимизацией у меня тоже рука как-то не поднимается.
 

artapp-ds

Новичок
Я даже не знаю, опыта у меня очень мало, да и термины эти все особо не знаю.. Но я понял о чем вы, сейчас попытаюсь исправить..
 
Сверху