Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Опять постраничный вывод


Автор: R.M. 24.9.2005, 00:38
Я видел тут много тем про постраничный вывод, но скока не пробовал не получается. Помогите организовать задачу.

Я сделал вывод картинки из БД (для каждой картинки своя страница), но немогу сделать чтобы под ней выводился список страниц типа [1][2][3] и т.д. и при нажатии на них переходилось на ?id=1, ?id=2, ?id=3 и т.д.

Автор: AntonioBanderaz 24.9.2005, 10:04
Вот тебе статья на эту тему...

Автор: -=Ustas=- 25.9.2005, 23:16
Приведи свой код, в котором у тебя не получается вывод.

Автор: R.M. 26.9.2005, 12:38
-=Ustas=-

я пытался через массив вывести из базы все id, я уже ево удалил т.к. там бред был я это и сам понял т.к. с массивами у меня мягко говоря плохо smile

Автор: -=Ustas=- 26.9.2005, 13:00
Ну если ты вывод делаешь из базы, то при чем здесь массив, когда надо в запросе LIMIT использовать!

Автор: R.M. 26.9.2005, 16:33
-=Ustas=-

О, спасибо за идею, буду пробывать. Плохо когда нет тебя на форуме, никто не помогает даже правильной идеей, тока и умеют минусы в репутацию ставить...

Автор: R.M. 26.9.2005, 16:47
-=Ustas=-

Спасибо огромное, всё получилось вот так

Код

$selp = mysql_query("SELECT * FROM $tn ORDER BY id LIMIT 0 , 100");
while($row = mysql_fetch_array($selp))
{
print "[<a href=index.php?id=".$row['id'].">".$row['id']."</a>]";
}


тока если мне все id-шники надо вывести LIMIT просто ненадо писать? ИЛИ если ево не писать он выдаст тока определённое кол-во?

Автор: -=Ustas=- 26.9.2005, 17:01
Куксикус, подожди... А если тебе надо вывести следующие 100 записей?! Ведь у тебя там вывод только на ПЕРВЫЕ 100 записей. Ты должен сделать еще полосу прокрутки постраничного вывода. Вот, почитай это и попробуй сделать, если будут вопросы, обращайся. - http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&target=main_panel&article=2364

Автор: R.M. 27.9.2005, 00:18
-=Ustas=-

Да мне даже и ненадо чтобы были "предыдущая" и "следущая", мне тока при нажатии на картинку надо чтобы был переход на следущую но это фигня, я заю как сделать.
Тока вот у меня другая проблема терь, у меня добавление картинки идёт по такому принципу:

Код

while($row = mysql_fetch_array($query))
{
$pid = $row['id']+1;
$name = "".$pid.".jpg";
}

$ins = "INSERT INTO $tn VALUES('id','$name','$path','$alt1')";

$qins = MYSQL_QUERY($ins);


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

Код

if ($row['code'] == "")
$pid = 1;


но неполучается, вобщем я непонимаю что мне сделать чтобы работало

Автор: -=Ustas=- 27.9.2005, 07:04
Делаешь проверку на пустой результат, типа:
Код

if (mysql_num_rows($query) == 0) {
    ... // здесь присваиваешь значения переменным по-умолчанию
    ...// типа $pid = 1;
    ...// $name = "".$pid.".jpg";
    ...// и т.д.
} else { // если же записи есть то так, как выше
    while($row = mysql_fetch_array($query)) {
        $pid = $row['id']+1;
        $name = "".$pid.".jpg";
    }
}
$ins = "INSERT INTO 
                ".$tn." 
            VALUES 
                 ('".$pid."', // тут я так понимаю должен быть $pid, а не id ?!
                 '".$name."',
                 '".$path."',
                 '".$alt1."')";

$qins = MYSQL_QUERY($ins);

Посмотри внимательно на свою ошибку. И еще, у тебя там наверняка идет выборка только одной записи, тогда нужно в запросе сделать сортировку ORDER BY id ASC и LIMIT 1, и обходится без цикла, где ты инкриментируешь значение id-ишника. Это будет правильнее.

Автор: PARROT 27.9.2005, 07:16
Поиск рулит: http://forum.vingrad.ru/index.php?showtopic=56748&hl=галерея

Автор: R.M. 27.9.2005, 07:34
PARROT

Я читал до того как создать тему, всётаки поиск не всегда рулит


-=Ustas=-

ок, буду пробывать, спасибо за помощь

Автор: R.M. 27.9.2005, 10:16
-=Ustas=-

да, понял я что бредово придумал с названиями имён, т.е. при добавлении нового файла читается предыдущий id к нему прибавляеца 1 и это получатеся .jpg, как бы мне переделать по правильнее?
Т.е. у меня есть скрипт который создаёт директорию, в ней индекстный файл и файл с конфигом мускула, и таблицу в базе. Как сделать чтобы при заливании файлов им давались нормальные имена и всё это нормально записывалось в базу? Подкинь идею smile

Автор: -=Ustas=- 27.9.2005, 10:21
Цитата
Т.е. у меня есть скрипт который создаёт директорию, в ней индекстный файл и файл с конфигом мускула, и таблицу в базе.

Это что, при добавлении новой записи, что ли ???!

Автор: R.M. 27.9.2005, 10:57
-=Ustas=-

Есть ссылка "добавить раздел" нажимая на неё выполняются действия которые ты в цитату выделил
Создаётся папка с заданным именем в ней (index.php и mysqk.php, который инклудит index.php)
Добавляется таблица в базу с имнем папки

При аплоаде картинке она заливается в указанную папку и запись добавляется в соответствующую таблицу, затем картинка переименовывается, а вот как её нормально переименовать чтобы были 001.jpg 002.jpg или хотябы 1.jpg 2.jpg и т.д. незнаю
Добавлено @ 10:58
тока чтобы номер картинки (даже лучше вида 1.jpg) соответствовали id-шнику в базе

Автор: -=Ustas=- 27.9.2005, 11:30
Ну так и делай, принцип такой:
Код

<?php

$sql = "SELECT
            id
        FROM
            ".$tn."
        ORDER BY
            id
        DESC";
$res = mysql_query($sql);
if (mysql_num_rows($res) == 0) {
    $name = "1.jpg"; // с этим именем заливать файл на сервак
    $number = 1;
} else {
    $obj    = mysql_fetch_object($res);
    $number = ((int)$obj->id + 1;
    $name   = $number.".jpg"; // с этим именем заливать файл на сервак
}

$sql = "INSERT INTO
            ".$tn."
        VALUES
            ('".$number."',
            '".$name."',
            '".$path."',
            '".$alt1."')";
if (mysql_query($sql)) {
    ...// если запрос выполнен,
    ...// здесь заливаешь файл на сервер
} else {
    echo mysql_error(); // иначе, смотришь ошибку
}

?>

И еще, я бы не советовал бы тебе заводить для каждого раздела отдельную таблицу - зачем? Если можно для разделов создать одну таблицу, а другую для данных и связать их.
Добавлено @ 11:32
Только поле id в таблице не должно быть auto_increment!

Автор: R.M. 27.9.2005, 12:21
-=Ustas=-

Спасибо, всё отлично работает

Цитата
зачем? Если можно для разделов создать одну таблицу, а другую для данных и связать их.

Незнаю, мне показалось что так удобнее, новый раздел - новая таблица, проще редактировать, удалять и т.д. (ИМХО). Если ты про "вес" базы, то сервак позволяет.

P.S. Щас попробую умудрица в этом тормозном инете тебе плюс влепить smile
Добавлено @ 12:23
Блин низя 2 раза повышать репутацию, ну завтра тогда smile

Автор: -=Ustas=- 27.9.2005, 12:39
Цитата
P.S. Щас попробую умудрица в этом тормозном инете тебе плюс влепить smile

smile

Автор: R.M. 27.9.2005, 14:10
-=Ustas=-

Ничего не предвещало беды smile
блин вот в этой строке
Код

$sql = "INSERT INTO '".$tn."' VALUES ('".$number."','".$name."','".$path."','".$alt1."')";


если $tn равна одному слову всё ок, если равна двум словаммежду которых пробел пишет ошибку
Цитата
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\new\images\addfiles.php on line 16

как я тока кавычки не ставил, и что тока с этой стрококй не творил - нехочет он два слова понимать smile

Автор: -=Ustas=- 27.9.2005, 14:18
Она два слова и не поймет. А откуда там у тебя два слова взялось?

Автор: R.M. 28.9.2005, 13:49
-=Ustas=-

Ну смотри например сайт типа фотографии знаменитостей и если галлерея будет называца скажем "Вася Пупкин" то как тогда быть ведь всегда на таких сайтах пишется имя и фамилия звезды, как тогда быть? Создавать не таблицу а записи в таблице с полем "Вася Пупкин" и выводить скажем index.php?type=Вася%20Пупкин&id=5 ? или другим способом както? Тогда id не будет соответствовать номеру картинки smile

Кстати если у тебя есть аська стукни мне, а то ты иногда есть в онлайне и не отвечаеш smile

Автор: -=Ustas=- 28.9.2005, 14:16
Вообще-то имена таблиц с русскими символами тоже не используй. А таблице можно давать имя как и id-ишнику.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)