Jump to content
BulForum.com

проблем с PHP скрипт


jorkata

Recommended Posts

значи имам следния проблем .. направих си един скрипт,галерийка за снимки,обаче имам малък проблем .. когато ми изкарва thumnails-ите,се подреждат един под друг,а аз искам да са един до друг .. някой има ли представа как да направя това?

мерси предварително ...

Link to comment
Share on other sites

значи имам следния проблем .. направих си един скрипт,галерийка за снимки,обаче имам малък проблем .. когато ми изкарва thumnails-ите,се подреждат един под друг,а аз искам да са един до друг .. някой има ли представа как да направя това?

мерси предварително ...

дай да видим....предполагам, че ще е нещо в html който се изплюва на края ;)

Link to comment
Share on other sites

предполагам, че ще е нещо в html който се изплюва на края
сигурен съм че е това,но просто си блъсках главата доста и не мога да разбера кое точно ще да е ... начи ето го скрипта .. имам си БД със разни детайли за снимката,самото име на снимката и на thumbnail-а ...

<?php

if(!isset($start)) $start = 0;

$query = "SELECT * FROM photos LIMIT " . $start . ", 2"; 

mysql_connect("***","***","***"); 
mysql_select_db("***"); 

$result = mysql_query($query);

while($r=mysql_fetch_array($result))
{	
  $id=$r["id"];
  $file=$r["file"];
  $writer=$r["writer"];
  $crew=$r["crew"];
  $cat=$r["cat"];
  $date=$r["date"];
  
  echo "<table width=\"100\"  border=\"0\" cellpadding=\"0\" cellspacing=\"5\">
 <tr>
   <td><a href=\"view.php?id=$id\"><img src=\"thumbs/$file\" width=\"100\" height=\"100\" border=\"0\"></a></td>
   <td width=\"20\"></td>
 </tr>
 <tr>
   <td><div align=\"center\">$writer ($crew)</div></td>
   <td width=\"20\"></td>
 </tr>
</table>";}

$query = "SELECT count(*) as count FROM photos"; 
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$numrows = $row['count'];
if($start > 0) 
  echo "<a href=\"" . $PHP_SELF . "?start=" . ($start - 2) .
       "\">Previous</a><BR> // ";
if($numrows > ($start + 2))  
  echo "<a href=\"" . $PHP_SELF . "?start=" . ($start + 2) .
       "\">Next</a><BR>\n";
?>

ако има нещо дет не е ясно,питайте,ще обяснявам ... иначе сичко си бачка ОК,просто тва ми е проблема (поне засега :woot )

 

ЕДИТ:

@Veli - аз първо за това се сетих,ама не става :( мерси все пак

Link to comment
Share on other sites

Абе нещо не ме кефи скриптът ти :) Ти в цикъла постоянно създаваш таблица и редове и т.н. я пробвай така

 

echo "<table width=\"100\"  border=\"0\" cellpadding=\"0\" cellspacing=\"5\">
<tr>";

while($r=mysql_fetch_array($result))
{ 
 $id=$r["id"];
 $file=$r["file"];
 $writer=$r["writer"];
 $crew=$r["crew"];
 $cat=$r["cat"];
 $date=$r["date"];

 echo "<td><a href=\"view.php?id=$id\"><img src=\"thumbs/$file\" width=\"100\" height=\"100\" border=\"0\"></a></td>
  <td width=\"20\"></td>";
}
echo " </tr>
</table>";

И за да не получиш "безкраен" ред, можеш да сложиш някакъв брояч в цикъла, който да ти прави нов ред

 

EDIT А омотах се :)

 <tr>
  <td><div align=\"center\">$writer ($crew)</div></td>
  <td width=\"20\"></td>
</tr>

това остана излишно и предполагам, че искаш то да се появява под снимката, за сега ти дадох идея ;) след малко ще измисля как точно да стане това, излишното да го вмъкнем по най-добрия начин

Link to comment
Share on other sites

абе начинаещ съм още,гледам да се уча :woot

иначе мерси много Jorkis,в момента много много е разбрах кво искаш да ми кажеш,ама вечерта ще седна и ще го обмисля по-подробно ... а с това решава ли се всъщност проблема ми?

Link to comment
Share on other sites

Знаеш ли какъв е проблемът според мен :) (аз също не съм много напреднал с HTML ама с PHP сякаш съм малко по-добре от колкото с HTML). Та както и да е, проблемът е, че в цикъла ти правиш постоянно нова таблица и за всеки файл се създава нова таблица. За това така както, ти го написах, всякак картинка ще бъде до другата в същия ред, докато ти свършат картинките, и за да не стане пак казвам безкраен ред с картинки, слагаш някакъв брояч, който при 10 или 15 да кажем ще прави нов ред, обаче с тези надписи става малко хамалогия според мен, ама то няма и как. И за това ще си помисля малко как най-добре да се вмъкнат за да не се правят 1000 цикъла ако имаш много снимки, но със сигурност си мисля, че ще трябва още някой цикъл, просто няма как да се избегне

 

ЕДИТ: Ами това, за което се сещам в момента е следното, малко глупаво може би, но какво да се прави ;), утре може по-добра идея да ми дойде в главата: използвай брояч, и го увеличавай постоянно с 1 и като стигне някаква стойност, го нулирай, като междувременно с този брояч (служещ ти за индекс) си правиш два масива от стойностите на writer и crew. Когато нулираш брояча(това ще стане в някакъв if), правиш нов ред, в този момент трябва да отвориш нов цикъл (това вътре в самия while и в if-a), в който изписваш клетките на новия ред, по следния начин

echo"<td><div align=\"center\">$writer ($crew)</div></td>
 <td width=\"20\"></td>";

като на мястото на $writer ($crew) слагаш съответното обръщение към масивите. Прекъсването на цикъла ще стане пак чрез въпросния брояч, и преди да затвориш if конструкцията слагаш тагове или за нов ред или за нова таблица, както решиш, че ще изглежда по-добре, тоест правиш това

</tr><tr>

или

</tr></table><table><tr>

 

Успех, нямам време сега да ти напиша целия код, но дано да се справиш с това, което ти предложих!

 

ЕДИТ 2 Ако не успееш да се справиш, аз ще се опитам да ти го напиша това, което го мисля, но няма да е днес, може би утре вечер, но ти се помъчи, може и по-добро решение да измислиш

Link to comment
Share on other sites

хм,Jorkis,определено сега схванах твоята идея,обаче аз съм си мързелив човек и накрая си намерих мързеливото решение - style="float:left".така всичко си е както трябва,а пък също и намерих много интересна статия от ALA точно,ама точно за този проблем и решаването му чрез CSS (линк).

все пак мерси за обяснението :woot

Link to comment
Share on other sites

Браво на теб, верно те домързява :P (шегувам се) Но аз намерих по-добро решение от това, което ти предложих. Става въпрос за използването на една функция mysql_data_seek. Ако все още проявяваш интерес ще ти напиша как според мен би трябвало да изглежда скрипта и сякаш ще е доста по-разбираем B) :D

Link to comment
Share on other sites

Браво на теб, верно те домързява :P (шегувам се) Но аз намерих по-добро решение от това, което ти предложих. Става въпрос за използването на една функция mysql_data_seek. Ако все още проявяваш интерес ще ти напиша как според мен би трябвало да изглежда скрипта и сякаш ще е доста по-разбираем  B)  :D

Ami aide pra6tai da vidim kakvo si izmislil.

Link to comment
Share on other sites

CSS е решение, само дето преди това направи справка дали това се визуализира правилно при всички браузери ;)

 

Иначе, най-удачно е решението на Jorkis - слагаш една променлива, дето да ти брои и на определен брой слагаш нов <tr>, че иначе така слагаш постоянно нова таблица, което е кофти :tongue

 

Ето ти пример:

 

$counter = "1";
echo "<tr>";
while($rows = mysql_fetch_array($query))
{
 echo "<td>blah blah</td>";
 if($counter=="4")
  {
  echo "</tr><tr>";
  $counter = "1";
  }
 else
  {
  $counter++;
  }
}

Link to comment
Share on other sites

боже,тва с counter-a не го разбирам въобще кво прави ..както и да е,изкочи друг проблем дето ма хвърли направо в тъча ... ситуацията е следната .. значи аз си имам едно view.php дето кат му дадеш примерно view.php?id=2 и ти изкарва снимката с id=2,обаче сега като искам да си направя една друга страница дето да ми вади примерно page.php?writer=alabala вика "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/taze/public_html/detail.php on line 5" ... ето частта от кода,която е проблемна ...

 

<?
mysql_connect("***","***","***"); 
mysql_select_db("taze_db"); 
$result = mysql_query("SELECT * FROM photos WHERE id= ".$_GET["id"]);
while($r=mysql_fetch_array($result))
....

 

хвърля ме в тъча факта,че когато е с id става,а като го промена примерно на

<?
mysql_connect("***","***","***"); 
mysql_select_db("taze_db"); 
$result = mysql_query("SELECT * FROM photos WHERE writer = ".$_GET["writer"]);
while($r=mysql_fetch_array($result))
....

ми дава грешката дето я написах горе .. ебаси от кво е тва чесно не мога да разбера ... моля помагайте ...

 

@Jorkis,ще съм любопитен да видя твоето решение,прати ми го на ЛС или направо тук ..

 

мерси предварително :woot

Link to comment
Share on other sites

ОК започвам да го пиша :), след малко ще има 'едит'

 

EDIT

 

$counter=0;
$col_limiter=15;//тази променлива ще е ограничител, колко снимки да има на ред
$flag=0;
echo "<table width=\"100\"  border=\"0\" cellpadding=\"0\" cellspacing=\"5\">
<tr>";
do
{
 if ($r=mysql_fetch_array($result))
{ 
  $id=$r["id"];
  $file=$r["file"];
 
  echo "<td><a href=\"view.php?id=$id\"><img src=\"thumbs/$file\" width=\"100\" height=\"100\" border=\"0\"></a></td>
  <td width=\"20\"></td>"
 $counter++;
 if($counter%$col_limiter==0)
 {
  echo "</tr><tr>";
  $difference=$counter-$col_limiter;
  mysql_data_seek($result,$difference);
  while ($r=mysql_fetch_array($result))
  {
   $writer=$r["writer"];
   $crew=$r["crew"];
   echo"<td><div align=\"center\">$writer ($crew)</div></td>
   <td width=\"20\"></td>";
   $difference++;
   if($difference==$counter)
   {
    echo "</tr><tr>";
    break;
   }
  }
 }
}
else //if ($r=mysql_fetch_array($result))
 {
  if($counter&&$counter%$col_limiter)
  { 
   if($counter<$col_limiter)
    $difference=0;
   //else е излишен, тъй като difference вече ще има присвоена стойност от горния цикъл
  mysql_data_seek($result,$difference);
  echo "</tr><tr>";
  while ($r=mysql_fetch_array($result))
  {
   $writer=$r["writer"];
   $crew=$r["crew"];
   echo"<td><div align=\"center\">$writer ($crew)</div></td>
   <td width=\"20\"></td>";
  }
  $flag=1;
  }
  else break;/*има грешка при заявката или условието на заявката не е изпълнено, или снимките са кратни на $col_limiter */
 }
}
while($flag==0);
echo "</tr></table>";

 

Пфу :) то стана доста дълго, след малко и обяснения ще има!

П.С. Според един редактор на PHP не би трябвало да има пропуснати скоба или ';', но все пак може да проверите

Link to comment
Share on other sites

Според мен грешката идва от настройки на PHP, промени си register_golbals в php.ini на on, тъй като преполагам това id го задаваш ръчно, а writer би трябвало да се вземе от формата която попълваш ;) Ако е така пробвай, това което ти казвам (в случай че вече не е on), но мисля, че това трябва да е проблема, а за горният скрипт, който написах, обяснението ще дам сутринта, че вече доста късно стана :zzz

Link to comment
Share on other sites

Мне, той каза, че го извиква view.php?id=3 примерно ...

 

А имаш ли някакво if да проверява дали е сложено id или writer? Да не ти пуска куерита и на двете, че може това да е пречката... макар, че не би трябвало да е проблем :blink:

Link to comment
Share on other sites

не може да бъде,много се шашнах ... значи последвах съвета на insomnium (мерси ;) ) и кво стана,вика ми "Unknown column 'taze' in 'where clause'" ако съм задал примерно ?writer=taze ... а само го променям на id в кода и сичко е ок ... моля ви хора тва е много важно,понеже ми трябва и за други скриптове ... давайте идеи ..

мерси предварително на всички :woot

Link to comment
Share on other sites

точно и тва си мисла,че кода е супер супер прост,как може да дава такива грешки .... пфуу ..

<?
mysql_connect("***","***","***"); 
mysql_select_db("***"); 
$result = mysql_query("SELECT * FROM photos WHERE writer = ".$_GET["writer"]) or die(mysql_error());
while($r=mysql_fetch_array($result))
{	
  $id=$r["id"];
  $file=$r["file"];
  $writer=$r["writer"];
  $crew=$r["crew"];
  $cat=$r["cat"];
  $date=$r["date"];
  echo "<table width=\"100\"  border=\"0\" cellspacing=\"10\" cellpadding=\"0\">
 <tr>
   <td><img src=\"thumbs/$file\" width=\"100\" height=\"100\"></td>
 </tr>
 <tr>
   <td><div align=\"center\">$writer ($crew) </div></td>
 </tr>
</table>";
}
?>

Link to comment
Share on other sites

Името на колоната ти да не е с Голяма буква, я провери как си ги написал при създаването

 

Не не би трябвало да е това, щом когато пробваш с id всичко е наред

Ами като пишеш ?writer=taze, сложи " на taze

 

И това май не е, защото тези кавички не са задължителни, те даже не се и използват.

 

Не можеш ли да дадеш линк към тази страница да я видим как изглежда, как се въвеждат данните и т.н.

 

И като написа това

$result = mysql_query("SELECT * FROM photos WHERE writer = ".$_GET["writer"]) or die(mysql_error());

и във формата написа за писател 'taze', ти даде грешка, че няма такава колона (taze не writer), така ли???

Link to comment
Share on other sites

ами начи за големи букви и грешки .. сичко е както трябва .. аз лично разбирам error-а,

и във формата написа за писател 'taze', ти даде грешка, че няма такава колона (taze не writer), така ли???
- именно!и закво прави така да му се невиди ... а пък с id работи ... хм ...

Jorkis,знам че ставам малко нагъл,ама вместо да си блъскаме главата над моите глупави творения,можеш ли да ме светнеш как да се напише скрипт дето да върши тая работа дет на мен ми трябва ... :blink:,щото явно аз няма да мога :angry:

Link to comment
Share on other sites

Е не е нагло спокойно :) Това, което бих ти предложил е следното. Предаваш аргументите от формата чрез POST а не чрез GET, тъкмо няма да се виждат огромни линкове в address bar-a и запитването ти към базата ще бъде нещо такова

$result = mysql_query("SELECT * FROM photos WHERE writer =$writer ") or die(mysql_error());

, където предполагам се сещаш, че $writer ще дойде от полето на формата, в което си написал писателя.

 

Тоест трябва да имаш нещо такова

<FORM ACTION="list.php" METHOD="POST">
<INPUT TYPE="text" SIZE=15 NAME="writer">
......
.....

А в този list.php ще направиш и ще си обработиш запитването към базата и ще си изведеш това, което ти трябва. Така си мисля, че ще е по-лесно и по-разбираемо. Знам ли :)

А между другото, ти пробва ли скрипта, който написах по-горе, защото ми е интересно дали би работил. Ако не съм нагъл ;) бих те помолил да го пробваш, за да кажеш дали работи, защото в момента аз няма на какво да го пробвам, тоест нямам такава база и файлове и т.н., а пък искам да разбера дали напразно си блъсках главата :) или все пак става нещо от онова 'творение' :rolleyes:

Link to comment
Share on other sites

ами виж на мен точно ми трябва в адрес-бара да се пише това,а не чрез форма на отделна страница ... то иначе ще стане като сърч,а мен ми трябва лист да направи. ..

иначе не ми остана много време да пробвам твойто творение,но с удоволствие вечерта ще го пробвам,щото днеска цул ден права други неща ... мерси все пак :woot

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...