jorkata Posted October 11, 2004 Share Posted October 11, 2004 значи имам скрипт който ъплоадва картинки и добява детайли за тях в база данни.базата данни се състои от няколоко полета допълнителна информация,разни текстове,детайли за отделна снимка и името на файла на самата снимка. и всички тези данни (целият ред от таблицата) се изкарва като отделен "проект".текстове разни,въпросните снимки и описание към всяка снимка. но проблема идва от това,че аз съм сложил примерно 5 снимки лимит за всеки проект (тоест толкова колони в базата данни),и когато се изкарват на старницата със самия "проект" си има място за снимка 1,снимка 2 и т.н. и когато са 5 снимки (колкото е лимита) висчко е 6,но проблема е че не всеки проект ще има 5 снимки (примерно). ето част от кода,който изкарва снимките (да кажем че всяка снимка и описание са в отделна таблица) : <? mysql_connect("host","user","pass"); mysql_select_db("dbase"); $sql = "SELECT * FROM table WHERE id=".$_GET["id"]; $result = mysql_query($sql); while($r=mysql_fetch_array($result)) { $id = $r['id']; $title = $r['title']; $type = $r['type']; $content = $r['content']; $picture1 = $r['picture1']; $picture2 = $r['picture2']; $picture3 = $r['picture3']; $picture4 = $r['picture4']; $picture5 = $r['picture5']; $pic1desc = $r['pic1desc']; $pic2desc = $r['pic2desc']; $pic3desc = $r['pic3desc']; $pic4desc = $r['pic4desc']; $pic5desc = $r['pic5desc']; echo " <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td>$picture1</td> </tr> <tr> <td>$pic1desc</td> </tr> </table> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td>$picture2</td> </tr> <tr> <td>$pic2desc</td> </tr> </table> /** и така нататък ... **/ "; } ?> аз си мислех да се направи нещо от сорта на <? if (полето $picture1 е празно) echo "никакво html,празно поле" else (изкарва html-то на таблицата с картинката и описанието ..) ?> и така на свяка снимка да е със if-else и ако полето където трябва да пише името на файла няма нещо (празно) тогава нищо не вади,а ако е попълнено - си вади там html-то. опитах се да го направя,но не успях.не твърдя и че това е най-разубния начин или че въобще това е някакъв начин .. който има идея какво мога да направя,ще съм благодарен да ме просветли Link to comment Share on other sites More sharing options...
tedy Posted October 11, 2004 Share Posted October 11, 2004 Не разбрах какъв е точно проблемът, но мисля, че по-елегантно може да се реши като още в SQL заявката ограничиш върнатия резултат да включва само непразните полета за снимки, което пък предполага да отделиш в отделна таблица инфото за снимките за проектите, като по този начин се постига и по-добро разпределение на данните, също така лимитът за брой снимки за проект се премахва. Link to comment Share on other sites More sharing options...
s0rs Posted October 11, 2004 Share Posted October 11, 2004 Направи си цикъл да ти брои редовете/колоните/ в mysql... Незадавай конкретно имената на картинките... ("picture4") ами по скоро нещо такова ("picture".$i) където $i идва от някакво предварително преброяване... И съответно после таблиците които правиш в HTML, може да станат с пак с цикъл, според броя картинки да създаде нужния брой редове... echo "<table width=100% border=0 cellspacing=0 cellpadding=0>"; for ($i=0; $i<$result_count_pic; $i++){ echo " <tr> <td>picture".$i."</td> </tr> <tr> <td>pic".$i."desc</td> </tr>"; } echo "</table>"; нещо такова... ще е по-полезно да започваш да броиш от 0 вместо от 1... И аз не разбрах какъв е точния проблем... но проблема е че не всеки проект ще има 5 снимки taze: ако обясниш по-прецизно проблема и наблегнеш на момента: "желан резултат"---->"получен резултат" предполагам, че повече хора ще се опитат да ти покажат вярната посока. Link to comment Share on other sites More sharing options...
jorkata Posted October 12, 2004 Author Share Posted October 12, 2004 извинявайте че не ме разбрахте,аз и аз сам се угелпих като го четох това мое обяснение ами проблема е че не всеки проект ще има 5 снимки,а html кода е направен за 5 снимки,и искам да направя така че да вади html код само за броя снимки,които са в определния проект. разбрахте ли ме сега или пак да се пробвам да обясня Link to comment Share on other sites More sharing options...
tedy Posted October 12, 2004 Share Posted October 12, 2004 Аз те разбрах още първия път и моето мнение си остава същото. Отделяш инфото за снимките в отделна таблица и в SQL завката ще е по-лесно още в нея да филтрираш върнатите редове, и съответно с цикъл ще echo-неш таблицата, а не така както си го направил за всяка снимка отделно да пишеш хтмл. Казано по друг начин - отделяйки инфото в отделни таблици със съответните връзки между тях постигаш това, което се нарича 2-ра и 3-та нормална форма на базата данни. 3-та норм. форма е най-ефективна по отношение на гъвкавост, понеже няма никакво повторение на данни, но понякога за големи бази данни е по-подходящо данните да са във 2-ра нормална форма. В твоя случай обаче е почти задължително да нормализираш в 3-та форма (отделяне на данните в отделна таблица, от което следват нещата от предишния ми пост). Link to comment Share on other sites More sharing options...
jorkata Posted October 12, 2004 Author Share Posted October 12, 2004 tedy,интересна идея,и логична .. ще се пробвам да я реализирам .. някой друг все пак ако има идеи да не се срамува Link to comment Share on other sites More sharing options...
jorkata Posted October 12, 2004 Author Share Posted October 12, 2004 хм,срещнах проблем докато се опитвах да приложа решението на теди - значи предишния скрипт когато се ъплоадваха картиникте автоматично се преименуваха .. във формат $title 01.jpg,02.jpg и т.н.. но сега незнам как да направя във формата за ъплоад да се преименуват по този начин,май става по-сложно .. Link to comment Share on other sites More sharing options...
jorkata Posted October 12, 2004 Author Share Posted October 12, 2004 май успях да го направя,но сега има малко проблемче.искам имената на файловете които ъплоадвам да се качват на сървъра с име "$title xxx" където xxx е комбинация от произволни символи и цифри .. така няма да има нужда от номериране .. ето частта от скрипта за ъплоад на картинките където е въведена директорията за ъплоад и името на файла: $uppic_file = '/path/to/upload/'.$title.' 01.'.jpg; та въпроса ми е как да направя вместо номерация да е произволна комбинация от букви/цифри .. ? Link to comment Share on other sites More sharing options...
tedy Posted October 12, 2004 Share Posted October 12, 2004 Можеш да използваш например функцията rand() / mt_rand() и с един прост цикъл да генерираш уникални идентификатори за имена на файлове, но по-удачно ще стане ако генерираш псевдо-случайна стойност на базата на текущото време по UNIX стандарт (microtime()) и някаква измислена от теб проста формула. Има една функция uniqid(), но тя едва ли ще ти свърши работа, предвид за какво ти трябва. Link to comment Share on other sites More sharing options...
jorkata Posted October 12, 2004 Author Share Posted October 12, 2004 и това с произволните символи го направих .. брей почвам да се изненадвам от себе си за сега всичко изглежда ок,но може и да има още въпроси .. ако имам проблеми пак ще питам тук теди мерси много за помоща ЕДИТ:използвах rand функцията: $random1 = rand(1, 9999); Link to comment Share on other sites More sharing options...
tedy Posted October 12, 2004 Share Posted October 12, 2004 и това с произволните символи го направих .. брей почвам да се изненадвам от себе си за сега всичко изглежда ок,но може и да има още въпроси .. ако имам проблеми пак ще питам тук теди мерси много за помоща .... използвах rand функцията .... <{POST_SNAPBACK}> Хубаво си я използвал, но имай предвид, че тя може да генерира числа, които да се повторят с вече генерирани преди това и съответно да 'съчиниш' име на файл, който вече съществува. Затова на твое място бих използвал или проверка за съществуващ такъв файл преди преименуването (което става с цикъл до получаването на уникална стойност), или просто бих използвал втория начин с използването на текущото време и формула Ако има нещо друго неясно, питай, все някой ще ти отговори, ако не аз, друг. Link to comment Share on other sites More sharing options...
jorkata Posted October 12, 2004 Author Share Posted October 12, 2004 да,звам че може да се получи файл с едно и също име,но мисля че вероятноста е наистина малка.даже ще увелича броя на числата с няколко цифри .. така ще се намали вероятността ... една малка пречка ми изкочи току що,проблема е следния:значи във формата с която ъплоадвам файла и въвеждам информация в базата данни имам следният ред който въвежда въпросната ивформация в MySQL базата данни: $result=MYSQL_QUERY("INSERT INTO photos (pic_id,project_id,pic_file,pic_desc)". "VALUES ('NULL', '$project_id', '$title _ $random1.jpg', '$pic_desc')"); значи искам $pic_file да се въвежда във формата "$title_$random1.jpg" демек както ъплоадвам файла,но не мога да разбера какви знаци да сложа около "_" за да излиза слято .. както е в момента излиза "$title _ $random1.jpg" (с разстояния около _).дайте идея плз Link to comment Share on other sites More sharing options...
sasquatch Posted October 12, 2004 Share Posted October 12, 2004 да,звам че може да се получи файл с едно и също име,но мисля че вероятноста е наистина малка.даже ще увелича броя на числата с няколко цифри .. така ще се намали вероятността ...една малка пречка ми изкочи току що,проблема е следния:значи във формата с която ъплоадвам файла и въвеждам информация в базата данни имам следният ред който въвежда въпросната ивформация в MySQL базата данни: $result=MYSQL_QUERY("INSERT INTO photos (pic_id,project_id,pic_file,pic_desc)". "VALUES ('NULL', '$project_id', '$title _ $random1.jpg', '$pic_desc')"); значи искам $pic_file да се въвежда във формата "$title_$random1.jpg" демек както ъплоадвам файла,но не мога да разбера какви знаци да сложа около "_" за да излиза слято .. както е в момента излиза "$title _ $random1.jpg" (с разстояния около _).дайте идея плз <{POST_SNAPBACK}> kak taka izlizat razstoqniq ?Napisal si '$title _ $random1.jpg', to si ima razstoqniq vytre . Da ne iskash da kajesh $title.'_'.$random.'.jpg'? Inache az prilagam i edin drug metod - zapisvane na kartinkite v BLOB v BD ama se servira po-bavno. Link to comment Share on other sites More sharing options...
jorkata Posted October 12, 2004 Author Share Posted October 12, 2004 именно че излизат разстояния,аз искам да е слято .. да няма разстояния около "_" какви знаци трябва да сложа около "_" за да стане както искам? Link to comment Share on other sites More sharing options...
tedy Posted October 12, 2004 Share Posted October 12, 2004 Разбрах те. Ако махнеш разстоянията PHP няма да разбере че имаш предвид променливата $title, т.е. добре си се сетил за тази особеност Ще го направиш така: $result=MYSQL_QUERY("INSERT INTO photos (pic_id,project_id,pic_file,pic_desc)". "VALUES ('NULL', '$project_id', '".$title."_".$random1.".jpg', '$pic_desc')"); ...Inache az prilagam i edin drug metod - zapisvane na kartinkite v BLOB v BD ama se servira po-bavno. <{POST_SNAPBACK}> Вкарването на картинки в BLOB наистина е доста неефективно и почти никъде не съм срещал някой да го прави така. Link to comment Share on other sites More sharing options...
jorkata Posted October 12, 2004 Author Share Posted October 12, 2004 стана не съм се и съмнявал даже че няма да стане,мерси много теди .. ! аз викам стига за тази вечер,утре пак ще ви занимавам с моите приключения из PHP Link to comment Share on other sites More sharing options...
jorkata Posted October 13, 2004 Author Share Posted October 13, 2004 сега се сетих .. значи опитвах се да интегрирам във формата за ъплоад на снимката функция която да resize-ва самата картинка .. в нета има сумати туториали където се рисайзва вече ъществуваща картинка на сървъра,но не можах да нтегрирам нито едно от тях .. някаква помощ от някой .. ? ако трябва да ви покажа скрипта за да видите как да го интегрирате .. моля ви това вече е наистина важно Link to comment Share on other sites More sharing options...
tedy Posted October 13, 2004 Share Posted October 13, 2004 Твоята функция се казва: imagecopyresampled() Разбира се трябва на сървъра да е инсталирана GD library-то, повечето сървъри я имат инсталирана, също така последните версии PHP идват стандартно с нея. Успех! Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.