Kefir Temat założony przez niniejszego użytkownika |
[PHP, CSS]Wyświetlanie wyników w osobnych divach. » 2012-08-05 18:36:41 Cześć, pisząc stronę internetową napotykam dosyć dużo problemów, większość się rozwiązuje po wpisaniu odpowiedniej frazy w googlach, jednak nie tym razem :( Mój kłopot polega na tym że nie potrafię wybrać dwóch rekordów z bazy i wyświetlić ich w osobnych divach. Samo pobranie i wyświetlenie to dla mnie żaden problem, jednakże przypisanie każdego z nich do osobnego diva już jest trudniejsze. Celowo nie podaję tutaj mojego kodu ponieważ chcę tylko wyjaśnienie ewentualnie przykład który potem sam sobie edytuję. Z góry dziękuję. |
|
xevuel |
» 2012-08-05 18:40:50 <?php
$conn = mysql_connect($host, $user, $pass, $db);
$query = "SELECT news FROM table ORDER BY ID DESC LIMIT 0, 2"; //zapytanie do bazy $result = mysql_query($query, $conn); //wykonanie zapytania
while($row = mysql_fetch_assoc($result)) //przetworzenie zapytania echo "<div class=\"news\">\n".$row["news"]."</div>\n"; //wyświetlenie każdego z wierszy w osobnym div'ie
?>
Coś w tym stylu? Nie bardzo rozumiem, co to za problem, skoro pobrać i wyświetlić dane potrafisz. Może jednak lepiej podaj swój kod i wyjaśnij co nie działa/jaki ma być efekt :) |
|
m4tx |
» 2012-08-05 18:46:07 Jakbym miał to zrobić na szybko to bym dał 2 zapytania do SQL-a :P
Ale generalnie tak to wytłumaczyłeś, że nie do końca wiadomo, w czym problem. |
|
Kefir Temat założony przez niniejszego użytkownika |
» 2012-08-05 18:56:57 To jest tak: -Mam stronę index.php na której są przeznaczone dwa div'y przeznaczone na wyświetlanie newsów. Chcę aby w każdym z div'ów znalazł się jeden news które pobieram wcześniej. index.php (fragment) <div class="index-14"> <?php a(); ?> </div>
Oraz funkcja: a $query = "SELECT COUNT(*) as all_posts FROM news"; $result = mysql_query($query) or die (mysql_error()); $row = mysql_fetch_array($result); extract($row); $query = "SELECT title, tresc, autor FROM news ORDER BY uid DESC LIMIT $limit, $onpage"; $result = mysql_query($query) or die (mysql_error()); while($row = mysql_fetch_assoc($result)){ echo '<div class="index-14">'.$row.'</div>'; }
Kod jest tak napisany aby potem łatwo było dorobić paginację. |
|
xevuel |
» 2012-08-05 19:23:19 I co Ci nie działa? Btw., or die (mysql_error()); nie jest zbyt dobrym pomysłem, lepszym jest np: if(mysql_errno() > 0) { if($debug) loguj_blad_do_pliku(mysql_errno().": ".mysql_error()); echo "Błąd zapytania<br />\n"; }
To raz. Dwa - $row to jest tablica, więc echo $row raczej nie wypisze tego, co zamierzałeś ;) |
|
Kefir Temat założony przez niniejszego użytkownika |
» 2012-08-05 19:57:10 Nie potrafię tego ubrać w słowa więc wysyłam obrazek: http://www.iv.pl/images/50310294804462530227.png Są dwie kartki, każda to inny div. Wybieram rekordy z bazy, potem sortuję według UID, wyświetlam dwa o najwyższym i chcę aby news o najwyższym UID znalazł się na div1 a drugi co do świeżości na div2. Problem polega na tym że wyświetla mi na obu divach news1. Teraz akurat nie bo funkcji którą napisałem użyłem tylko w div1. function a() { $host = 'localhost'; $user = 'root'; $pass = 'haslo'; $baza = 'news_pacio'; mysql_connect( $host, $user, $pass) or die("Blad podczas laczenia z baza danych!"); mysql_select_db($baza) or die ("Blad podczas wybierania bazy danych!"); $query = "SELECT COUNT(*) as all_posts FROM news"; $result = mysql_query($query) or die (mysql_error()); $row = mysql_fetch_array($result); extract($row); $onpage = 1; $navnum = 0; $allpages = ceil($all_posts/$onpage); if(!isset($_GET['page']) or $_GET['page'] > $allpages or !is_numeric($_GET['page']) or $_GET['page'] <= 0){ $page = 1; }else{ $page = $_GET['page']; } $limit = ($page - 1) * $onpage; $query = "SELECT title, tresc, autor FROM news ORDER BY uid DESC LIMIT $limit, $onpage"; $result = mysql_query($query) or die (mysql_error()); while($row = mysql_fetch_assoc($result)){ echo $row['title'].'<br />'.$row['tresc'].'<br />'.$row['autor'].'<br /></div>'; } }
To jest funkcja a którą następnie wywołuję w div'ie który na obrazku zaznaczony jest div1. <div class="index-14"> <?php a(); ?> </div>
|
|
xevuel |
» 2012-08-05 20:20:09 Co prawda nie rozumiem, czemu tworzysz to w ten sposób, ale chyba wiem już, jak pomóc. Zrezygnuj ze statycznego tworzenia divów, generuj je dynamicznie. Czyli: <?php function a() { //połącz //odpytaj while($row = mysql_fetch_assoc($result)) //przetworzenie zapytania echo "<div class=\"div".$row["ID"]."\">\n".$row["news"]."</div>\n"; //wyświetlenie każdego z wierszy w osobnym div'ie } ?> <html> <head> <title>To jest tytuł</title> </head> <body> <?php a(); ?> </body> </html>
A jeszcze lepszym rozwiązaniem zamiast echo jest użycie return. Wtedy masz jeszcze lepszą kontrolę, kiedy co chcesz wyświetlać ;) Btw, super grafika, jednak zwykle odplamienia nie są odbiciem lustrzanym. Sugerowałbym to poprawić ;) Sam tworzyłeś? :) //edit: @down: Nie potrzeba - chciałem tylko pogratulować :) |
|
Kefir Temat założony przez niniejszego użytkownika |
» 2012-08-05 20:32:04 Nie, tworzył ją mój kolega dla którego jest ta strona, jak chcesz mogę Cię z nim skontaktować :P Edit: Teraz to mi nic nie wyświetla. Poddaję się, prosiłbym kogoś o coś co będzie działać. Nie ważne jak grunt że działa. |
|
« 1 » 2 3 |