Skocz do zawartości
azyl

php mysql wyswietlanie kolejnego rekordu

Rekomendowane odpowiedzi

Witam

 

Mam takie pytanie : jak w php zrobic zeby po nacisnieciu na przycisk/link na stronie wyswietlal sie kolejny rekord bazy ? Czyli wyswietla sie rekord z id=10 klikam na przycisk i wyswietla sie rekord z id=11 ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A jak robisz, że w ogóle wyświetla się rekord bazy?

Widzę, że porywasz się z motyką na słońce.

 

Zakładając, że Twój skrypt upchany jest w pliku rekordy.php i domyślnie wyświetla 1 rekord bazy, to trzeba zrobić tak:

 

1. Pobrać (na początku skryptu) numer rekordu do wyświetlenia:

$nr_rekordu = $_GET['id'];

2. Zmodyfikować kod (zapytanie), aby wyświetlał konkretny rekord:

$query = "SELECT * FROM `tabela` WHERE `id`='".$nr_rekordu."';";

3. Generować linki do poprzedniego i następnego rekordu:

echo '<a href="rekord.php?id='.($nr_rekordu-1).'">poprzedni rekord</a> | <a href="rekord.php?id='.($nr_rekordu+1).'">następny rekord</a>';

Przy czym dobrze by było zabezpieczyć się przy pomocy:

if (is_numeric($_GET['id'])) $nr_rekordu = $_GET['id'];

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Strona nie jest zapisana w trybie <form> tylko normalnie przez php, czy w tym wypadku ten sposob

tez zadziala ?

 

Ogolnie wyglada to tak : na stronie na srodku w oknie wyswietla sie tekst pobrany z bazy, skrypt pobiera tekst i

id, po obu stronach sa przyciski, w prawo i lewo, ten w prawo ma wyswietlac kolejny rekord z bazy a ten w lewo

poprzedni.

 

Jak przeslac informacje o aktualnym id do strony wyswietlajacej kolejny rekord ? Gdyby to byl formularz to nie byloby

problemu ale tutaj to dziala inaczej.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Pisząc tego posta wyżej bałem się, że ktoś mnie uprzedzi ;]

 

Można jeszcze zmodyfikować zabezpieczenie łącząc go wyświetlaniem pierwszego rekordu:

if ((is_numeric($_GET['id'])) && ($_GET['id']>1)) $nr_rekordu = $_GET['id'];else $nr_rekordu = 1;

 

A jak wchodzisz na stronę? Przez jaki link? Powyższy kod powinien rozwiązać sprawę.

 

Do wyświetlania [następny] i [poprzedni] można dolepić kod, aby [poprzedni] był nie aktywny, gdy wyświetlamy pierwszy element. Natomiast [następny], gdy dochodzimy do ostatniego rekordu. To jednak wymaga sprawdzenia ilości wszystkich rekordów w bazie, czyli dalszych modyfikacji kodu.

 

Rzuć kod tej strony wyświetlania (nie zapomnij wykasować kawałka kodu z logowaniem do bazy - nie chcesz chyba, aby ktoś inny się tam logował).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Strona narazie jest u mnie na dysku, jeszcze jej nie ma na serwerze

kod strony :

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><link href="style.css" rel="stylesheet" type="text/css"></head><body><table width="100%" border="0" cellspacing="0" cellpadding="0">  <tr>    <td width="50%" class="bg1"> </td>    <td width="697" valign="top">		<table width="697" border="0" cellspacing="0" cellpadding="0">		  <tr>			<td class="bg1" valign="top">					<table width="697" border="0" cellspacing="0" cellpadding="0">					  <tr>						<td valign="top" width="141" style="padding-top:158px; ">																										<td valign="top" width="413">						<div style="position:absolute;top:1px;left:1px;height:0px;width:0px;overflow:hidden"><a href="http://www.freetemplatesonline.com"><h1>free templates</h1></a><a href="http://www.webdesign.org"><h1>web design</h1></a></div>						<img src="images/about2.jpg" alt=""><br />									<table width="413" border="0" cellspacing="0" cellpadding="0">									  <tr>										<td valign="top" height="338"><img src="images/1.jpg" alt=""><br />																	<a href="#"><img src="images/b1.jpg" alt=""></a><br />																	<img src="images/2.jpg" alt=""></td>										<td valign="top" width="352" class="bg_c">										<div class="text1"><div class="text2"><?php										$id = 1;										$select2 ="where id = ".$id;										$sql_conn = mysql_connect('localhost','root','');mysql_select_db('piekarnia');										$wynik = mysql_query("select * from fam_quotes ".$select2)or die('blad zapytania');echo "<div id=\"cytat\" style=\" background-color: transparency \"  >";if(mysql_num_rows($wynik)>0){while($r = mysql_fetch_assoc($wynik)) {echo "<b><span style=\"color:white\">".$r['author'].$r['id']."</span></b";$numer = $r['id'];echo "<br>";echo "<br>";echo "<span style=\"color:white\">".$r['quote']."</span>";echo "<br>";}}echo "</div>";										?>										</div><br /><br /><br /><img src="images/h_l.jpg" alt=""><br />										</td>										<td valign="top"><img src="images/3.jpg" alt=""><br />														<a href="#"><img src="images/b2.jpg" alt=""></a><br />														<img src="images/4.jpg" alt=""></td>									  </tr>									  <tr>										<td colspan="3" valign="top"><img src="images/bottom.jpg" alt=""></td>																			  </tr>									  <tr>										<td colspan="3" style="padding-left:13px; ">										<a href="hjk.php"><img src="images/m1.jpg" alt=""></a><a href="index3.php"><img src="images/m2.jpg" alt=""></a><a href="index3.php"><img src="images/m3.jpg" alt=""></a>										</td>																			  </tr>									</table>						</td>						<td valign="top" width="143"  style="padding-top:158px; ">						</td>					  </tr>					</table>			</td>		  </tr>		  <tr>			<td><div class="copy">© 2005 | <a href="#">Privacy Policy</a><br /><a href="http://www.webdesign.org" class="fto1">Web Design</a> by <a href="http://www.freetemplatesonline.com" class="fto1">Free Templates</a> Online</div></td>		  		  </tr>		</table>	</td>    <td width="50%" class="bg1"> </td>  </tr> </table></body></html>

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jak przeslac informacje o aktualnym id do strony wyswietlajacej kolejny rekord ? Gdyby to byl formularz to nie byloby

problemu ale tutaj to dziala inaczej.

 

Parametrem. Np. www.adres.pl/skrypt.php?ids=10

GETem pobierasz wartość parametru i wyświetlasz wynik zapytania. A przyciski i resztę masz wyżej..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przejscie do nastepnej strony odbywa sie przez przycisk a nie przez normalny link i jest poza kodem php.

czy da sie jakos przekazac ten id w adresie linku jesli link jest zapisany w normalnym html ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

1. Takiego stylu rysowania stron (tabela w tabeli) nie używa się od paru lat. Wywal ten template i znajdź normalny - oparty na DIV.

2. Jakie ISO? Obecnie tylko UTF8.

3. Ponieważ reszta strony jest do kosza, to zajmijmy się kodem PHP. Mamy:

// 1$id = 1;$select2 ="where id = ".$id;// 2$sql_conn = mysql_connect('localhost','root','');mysql_select_db('piekarnia');$wynik = mysql_query("select * from fam_quotes ".$select2) or die('blad zapytania');// 3echo "<div id=\"cytat\" style=\" background-color: transparency \"  >";if(mysql_num_rows($wynik)>0){while($r = mysql_fetch_assoc($wynik)) {// 4echo "<b><span style=\"color:white\">".$r['author'].$r['id']."</span></b";$numer = $r['id'];echo "<br>";echo "<br>";echo "<span style=\"color:white\">".$r['quote']."</span>";echo "<br>";}}echo "</div>";

1. Ustawiasz ID na sztywno i bez żadnego zabezpieczenia dopisujesz do zapytania. Aby nie było na sztywno i było bezpiecznie, trzeba dorzucić sprawdzanie jak w moim kodzie wyżej. W przeciwnym wypadku mogę (w dużym uproszeniu) zrobić tak:

twojastrona.pl/skrypt.php?id=;drop `piekarnia`;
i nie ma bazy.

 

 

2. OR DIE? Dobre do debugowania, ale w finalnym projekcie problem z bazą zatrzyma ładowanie strony. Lepiej zrobić tak:

If($wynik = mysql_query("select * from fam_quotes ".$select2)){tutaj kod wyświetlania wyników}else echo 'Zapytanie zwróciło 0 wyników.';
Najlepiej natomiast sprawdzać, czy udało się połączyć z bazą. Jeśli tak, to wyszukujesz dane, jeśli nie to wywalasz błąd, że wystąpił problem z bazą i trzeba to zgłosić do administratora (czyli do Ciebie).

 

3. Jak wyświetlasz czysty HTML (bez zmiennych PHP), to używaj pojedynczych cudzysłowów, a style umieść w pliku styli:

echo '<div id="cytat">';
W plikach styli:

#cytat {background-color: transparency}
Nie wspomnę już nawet, że poprawna wartość to transparent

 

4. SPAN? B? BR i do tego w oddzielnych liniach?? No i błędy w kodzie... Bardziej poprawny zapis:

echo '<p class="autor">'.$r[author].'('.$r[id].')</p>';echo '<p class="cytat">'.$r[quote].'</p>';
Ustawienia klas w stylach:

.autor {font-weight: bold; color: white}.cytat {color: white}

Przycisk powodujący przejście do następnej strony? Toż to bezpodstawne użycie JS.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dzieki wielkie za pomoc, zrobilem te przyciski w php i przechodzi normalnie miedzy stronami

Co do stylu kodowania - zgadzam sie, ze to co napisalem nie jest poprawne, ale ja sie ogolnie nie zajmuje php,

Ta strona byla pisana "na szybko", stad te bledy. PHP i HTML To nie moja specjalizacja ;)

Wiecej sie chyba nie biore za kodowanie stron ...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Tutaj nie chodzi o poddawanie sie, mam inne sprawy na glowie i

php nie jest priorytetem. Tym projektem juz sie nie zajmuje

i wole czas przeznaczyc na pilniejsze sprawy ( chocby inzynierka w C# )

 

Niemniej dzieki za porady :) Byly bardzo pomocne :)

Edytowane przez azyl

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...