Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   PHP (http://www.flasher.ru/forum/forumdisplay.php?f=20)
-   -   PHP photo album (http://www.flasher.ru/forum/showthread.php?t=38627)

Tagore 19.10.2002 14:28

PHP photo album
 
<?php
$items = "16";
$image_path = "photo/thumbJPG/";
mysql_connect('localhost', 'gmarik', 'Photoshop7');
mysql_select_db('art110_appl');
$sql = "SELECT * FROM ab_photo WHERE Cat='$cat' LIMIT 0,$items";
$result = mysql_query($sql);
?>
<html>
<head>
<title><?php echo $siteName . " :: " . $siteURL; ?></title>
<meta name="keywords" value="<?php echo $siteKeywords; ?>">
<meta name="description" value="<?php echo $siteDescription; ?>">
<link rel="stylesheet" type="text/css" href="ab_style.css">
</head>
<body>
<?php
if($items==16){
echo "<table><tr><td>table1</td></tr></table>"
}
else{
echo "<table><tr><td>table2</td></tr></table>"
};?>
</body>
</html>

Как написать, чтобы юзер мог, нажав на ссылку (или еще как-то) изменить значение $items==9 на $items==16, и от того бы он получил одну из этих таблиц. Это типа foto.php?cat=iSes&mode=16 (don't know actually!!) and foto.php?cat=iSes&mode=9 или все намного проше? Ром, ты же поможешь вот только с этим,а то в на мальенком мониторе плохо, когда много фоток, а на большом - надо именно 16.

ihorko 20.10.2002 04:36

нихрена не понял... четче формулируй задачу!!!

я увидел 2 разные проблемы:

1. тебе надо, чтоб на большом разрешении у юзера показывалось 16 фото, а если на маленьком - 9.
2. тебе надо дать юзеру возможность нажатием кнопочки выбрать, удобнее ему 16 или 9 картинок.

выходы:

1. при загрузке вызывай яваскрипт, который определит разрешение клиента, и соответственно перепишет (напишет :)) фрагмент пхп-кода.
2. тупо ставь кнопку или селект, по нажатию отправляй данные на ту же страницу, но вставляя необходимое значение куда надо. метод передачи значения не имеет особого значение - GET или POST, решать тебе, как будет удобнее. можешь эти данные даже в сессию записать, чтоб потом, в процессе прохода по страницам, не передавать повторно :D :D :D

если все-таки я не так понял и не то сморозил - читай первую строчку поста.

и еще одно: еще раз пришлешь приватом такое сообщение - настучу :D модераторам. и сделают тебе такой же плюсик, как у мення. потому что то, что ты сделал называется СПАМОМ!!! и терпеть спам на нашем любимом форуме мы не намерены!!! :D :D :D

Tagore 20.10.2002 14:31

so
 
taken from

Все работало, когда таблица состояла от читсого HTML, но после строчки, где картинка вызивается из БД, php код сривается и не хочет пахать. Поэтому я поставил echo в начале каждой строчки, но это не помогло.

if($items==16){
echo "<table align="center" cellpadding="0" cellspacing="0" width="790" height="400">";
echo "<tr>";
echo "<td width="537" valign="top" height="39" colspan="2"> <p> </p></td>";
echo "<td width="345" height="39"> <p> </p></td>";
echo "</tr>";
echo "<tr>";
echo "<td width="525" valign="top" height="361" rowspan="3"> <table cellpadding="0" cellspacing="0" width="507">";
echo "<tr>";
echo "<td width="139"> <table class="box" cellpadding="0" cellspacing="0" width="96" height="96">";
echo "<tr>";
echo "<td width="1250"> <p align="center"> ";
echo "<? $row = mysql_fetch_array($result) ?>";
echo "<a href="zoom.php?id=<? echo $row['id'] ?>">
<img alt="<? echo $row['date' ] ?> - <? echo $row['author' ] ?>" border="0" src="<? echo $image_path . $row['url'] ?>" /> </a><br>";
// Виновата именно эта строчка, только как ее обмануть, чтобы заработала? Пробовал тремя способами, все некак.
echo "<? echo $row['source'] ?> </p></td>";
echo "</tr>";
echo "</table>";
echo "</td>";

Теперь, если можете, укажите на ошибку. Также нужна пагинация, в зависимости от значения $items==16. В Dreamweaveer MX и множ прочитанных туториалов по этому поводу мольчали, там все попроше и вот потому у меня не крутится. Тогда, получается, это должно виглядеть вот так: foto.php?cat=iSes&mode=16&page=1 ?

<?php
$page = @$_GET["page"];
$start = @$_GET["start"];
if(!is_numeric($page) || $page < 1)
$page = 1;

if($page == 1)
$start = 0;
else
$start = ($page * $itemsPerPage) - $itemsPerPage;
$numRows = mysql_num_rows(mysql_query("select id from ab_photo"));
?>

<?php
if($page > 1)
$nav .= "<a href='foto.php?cat=$cat&mode=16&page=" . ($page-1) . "'><u>« Назад</u></a> | ";

for($i = 1; $i <= ceil($numRows / $itemsPerPage); $i++)
if($i == $page)
$nav .= "<a href='foto.php?cat=$cat&mode=16&page=$i'><b>$i</b></a> | ";
else
$nav .= "<a href='foto.php?cat=$cat&mode=16&page=$i'>$i</a> | ";

if(($start+$newsPerPage) < $numRows && $numRows > 0)
$nav .= "<a href='foto.php?cat=$cat&mode=16&page=" . ($page+1) . "'><u>Дальше »</u></a>";

if(substr(strrev($nav), 0, 2) == " |")
$nav = substr($nav, 0, strlen($nav)-2);
echo $nav . "<br> ";
?>

Про яваскрипт я уже сам додумал, но как то у мня яваскрипт с пхп в голове плохо вместе живут. А про то, что инфо надо держать в сессии, а сам выбор делать через select = это очень даже не слабо. Но чо то неподскажешь, где бы я нашел инфо, про то как напсать этот <option> который отсилает в session эту инфо про разрешение?

Tagore 20.10.2002 19:21

sos
 
Cессии не передаются и из за того, теперь нет ничего. Л. - почему нужна index.php страница, ведь можно без, или нет. Помоему теперь виновата именно она. Хотя я уже запутался, трудно понять все ошибки, но их все уже перечислил выше.

index.php
<?
session_start();
if (isset($_POST['items']))
{
if ($_POST['items'] == 16 || $_POST['items'] == 9 )
{
$_SESSION['items'] = $_POST['items'];
}
header("Location: " . $_SERVER['PHP_SELF'] . "");
}
?>
<form name="form" method="post" action="">
Select Items:
<select name="items" title="Photo" onChange="this.form.submit()">
<option selected></option>
<option>9</option>
<option>16</option>
</select>


preview.php
$items = $_SESSION['items'];
$cat = $_GET['cat'];
$page = $_GET['page'];

а эти строчки нужни в этом файле?
<?
session_start();
if (isset($_POST['items']))
{
if ($_POST['items'] == 16 || $_POST['items'] == 9 )
{
$_SESSION['items'] = $_POST['items'];
}
header("Location: " . $_SERVER['PHP_SELF'] . "");
}
?>

это как бы остволяю, но толко всеравно нет, ничего не происходит.
<form name="form" method="post" action="">
Select Items:
<select name="items" title="Photo" onChange="this.form.submit()">
<option selected></option>
<option>9</option>
<option>16</option>
</select>
</form>
[РАЗМЕРОМ=4]S.O.S.[/РАЗМЕРОМ]

Кусок кода из одной фото галереи, может тут че и есть, незнаю, может все никчему. Братци, что же вы молчите, это же форум, не диалог ... монолог... с коментариями с моей стороны.
* Construct a selection menu based on an array passed to the method
*
* @param array $multiple
*/
function select_gallery($multiple=array() ) {
global $HTTP_GET_VARS;

// reset page-index to page 1
$HTTP_GET_VARS[$this->page] = 0;

// construct selection-form
$str .= "\n<form name=\"navigator\" method=\"get\">\n";
$str .= "<select name=navMenu style=\"font:9pt\" onChange=\"return go_menu(navigator.navMenu);\" size=\"1\">\n";
$str .= "<option>select ...</option>\n";

for($i=1; $size=count($multiple), $i<=$size; $i++) {

$str .= sprintf("<option value=\"?%s\" %s>%s</option>\n",
$this->url($this->gallery, "$this->gallery=$i" ),
($HTTP_GET_VARS[$this->gallery] == $i ? "selected" : ""),
$multiple[$i][3]
);
}
$str .= "</select>\n";
$str .= "</form>\n\n";

return $str;
}

ihorko 21.10.2002 05:38

уууууу... какой ты :)
так много кода боюсь читать однако, для мозгов напряжно :rolleyes:

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

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

kompadre 22.10.2002 14:22

Цитата:

3.14здец, я вот иногда думаю, то ли он издевается, то ли действительно тупой, то ли ... на этом мысль останавливается (с)Масяня

ihorko 22.10.2002 14:56

2 kompadre - :D :D :D


Часовой пояс GMT +4, время: 16:40.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.