Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[PHP, CSS]Wyświetlanie wyników w osobnych divach.

Ostatnio zmodyfikowano 2012-08-06 12:20
Autor Wiadomość
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ę.
P-61800
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 :)
P-61801
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.
P-61802
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ę.
P-61803
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ś ;)
P-61808
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>

P-61810
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ć :)
P-61811
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.
P-61812
« 1 » 2 3
  Strona 1 z 3 Następna strona