Pomoc s PHP vypisom MySQL databazy

Programovacie jazyky, rady, poradňa...
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Pomoc s PHP vypisom MySQL databazy

Príspevok od používateľa eMPiko »

Mam nasledujuci kod, ktory mi vypisuje data z databazy, ale ja by som potreboval, aby na prve miesto vypisal najnovsi riadok. Premenne rows, start, end mam zadeklarovane kvoli riadkovaniu, ktore je v dalsej casti skriptu

Kód: Vybrať všetko

mysql_connect("server", ucet, heslo) or die ("FAILED!!!");
mysql_select_db(databaza);
$vypis = mysql_query("SELECT * FROM tabulka");
$rows=10;
if (!isset($max))
{
$max=mysql_num_rows($vypis);
$start=0;
}

if (isset($start))
{
$end=$rows+$start;
if ($end>$max) {$end=$max;}
for ($i=$start ; $i<$end ; $i++)
{
$number = mysql_result($vypis, "$i","number");
$imageID = mysql_result($vypis, "$i","imageID");
$date = mysql_result($vypis, "$i","date");
$caption = mysql_result($vypis, "$i","caption");
echo "<tr>";
echo "<td width=20% align=left><font face=arial size=1>&nbsp;".mysql_result($vypis, "$i","number")."</td>";
echo "<td width=20% align=left><font face=arial size=1>&nbsp;".mysql_result($vypis, "$i","imageID")."</td>";
echo "<td width=20% align=left><font face=arial size=1>&nbsp;".mysql_result($vypis, "$i","date")."</td>";
echo "<td width=40% align=left><font face=arial size=1>&nbsp;".mysql_result($vypis, "$i","caption")."</td>";
echo "</tr>";
}
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

Kód: Vybrať všetko

$vypis = mysql_query("SELECT * FROM tabulka");  
zmeň na

Kód: Vybrať všetko

$vypis = mysql_query("SELECT * FROM tabulka order by number desc"); 
(teda ak je number tvoj primárny klúč pre túto tabulku.. ale domyslel som si že hej)
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Príspevok od používateľa eMPiko »

Dakujem,
este bonusova otazka za 5 bodov, keby som chcel dat link, v ktorom mi ukaze iba jeden konkretny riadok, ako by mal vyzerat?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

veď konkrétny riadok si vieš získať cez ten mysql_result ako to robíš, alebo ešte efektívnejšie priamo v sql pomocou limit

neviem aký link myslíš (hyperlinkový odkaz?). To si iba naformátuješ a vypíšeš ako potrebuješ, myslím že echo ti nemôže robiť problém.
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Príspevok od používateľa eMPiko »

Myslim ako hypertextovy odkaz, napriklad v tvare:

script.php?$nejaka_premenna=nieco&$ina_premenna=nieco

Neviem ci take cosi existuje, ale malo by sa to podla mna dat spravit, ak nie tak nic no.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Ten odkaz si môžeš urobiť aký chceš. Potom musíš správne zostaviť SQL query (takže by bolo ideálne, keby v tom url bol aj nejaký jedinečný identifikátor toho riadku).

Teda môžeš do url pridať napr. nieco=id a potom k tomu query pridáš WHERE stlpec=id (v tvojom prípade je ten identifikátor pravdepodobne v stĺpci number [ale to iba tipujem, kedže si to nenapísal]).
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

hej, a k tým linkom, vypadali by napríklad stranka.php?premenna1=hodnota1&premenna2=hodnota2

(oddelenie premenných od stránky pomocou otázniku, potom jednotlivé premenné oddeluješ pomocou &)

v php ich budeš mať v poli $_GET, takže k nim pristúpiš ako $_GET['premenna1'] a $_GET['premenna2']
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Príspevok od používateľa eMPiko »

Nechapem :) Zhrnte mi teda vsetko co musim urobit
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

eMPiko napísal:Nechapem :) Zhrnte mi teda vsetko co musim urobit
link na výber 10. riadku bude skript.php?riadok=10 a sql v php bude select * from tabulka where podmienka limit $_GET['riadok'],1
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Asi si si nepozrel ten jeho skript. ;) Buď ho bude musieť celý upraviť, alebo to bude musieť urobiť inak.
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Príspevok od používateľa eMPiko »

No tak ako, mam vobec skusat audiotrackove riesenie, alebo co?

//autoeditácia príspevku ( 11 May 2008, 11:11 )
A este jedna vec, takto sa vlastne nacita cela databaza, co by po case asi nevyhovovalo. Nevedeli by ste script upravit tak, aby sa nacitala len jedna stranka?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

veď cez limit:

Kód: Vybrať všetko

$vypis = mysql_query("SELECT * FROM tabulka order by number desc limit 10");
načíta 10 riadkov, takže tam iba hodíš to $max či ako si to tam pomenoval
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

eMPiko napísal:A este jedna vec, takto sa vlastne nacita cela databaza, co by po case asi nevyhovovalo. Nevedeli by ste script upravit tak, aby sa nacitala len jedna stranka?
Chcel som ti odporučiť, aby si to zmenil. Potom by sa tam ľahšie pridalo to zobrazenie jedného riadku. Čiže SELECT by si mierne upravil "SELECT * FROM `tabulka` LIMIT '$start','$rows'". Ak by si chcel len jeden riadok, doplnil by si tam ešte "WHERE `number`='$nieco'".
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Príspevok od používateľa eMPiko »

Kód: Vybrať všetko

<?php
echo "<table>"; 
$connect = mysql_connect("server", user, pass) or die ("FAILED!!!");
mysql_select_db(database, $connect);
$vypis = mysql_query("SELECT * FROM `obrazok_dna` WHERE number = ".$_GET['show']." ORDER BY number DESC LIMIT " . $start . "," . ($start+$rows), $connect);
mysql_error();
$rows=10;
if (!isset($max))
{
$max = mysql_num_rows($vypis);
$start = 0;
}

if (isset($start))
{
$end=$rows+$start;
if ($end>$max) {$end=$max;}
for ($i=$start ; $i<$end ; $i++)
{
$number = mysql_result($vypis, "$i","number");
$imageID = mysql_result($vypis, "$i","imageID");
$date = mysql_result($vypis, "$i","date");
$caption = mysql_result($vypis, "$i","caption");
echo "<tr>";
echo "<td width=20% align=left><font face=arial size=1>&nbsp;".mysql_result($vypis, "$i","number")."</td>";
echo "<td width=20% align=left><font face=arial size=1>&nbsp;".mysql_result($vypis, "$i","imageID")."</td>";
echo "<td width=20% align=left><font face=arial size=1>&nbsp;".mysql_result($vypis, "$i","date")."</td>";
echo "<td width=40% align=left><font face=arial size=1>&nbsp;".mysql_result($vypis, "$i","caption")."</td>";
echo "</tr>";
}

}
$num_buttons=intval($max/$rows);
if ($num_buttons < ($max/$rows)) { $num_buttons++; }

for ($i = 1; $i <= $num_buttons; $i++)
{ $y=($i*$rows)-$rows;
if ($y==$start){$button.= "<B>";}
$button.= "<font face=\"verdana\" size=\"1\">&nbsp;
<a href=\"?end=$end&max=$max&start=$y\">$i</a>&nbsp;</font>";
if ($y==$start){$button.= "</B>";}
}
echo "</table>"; 
echo "<br><br>";
echo "$button<br>"; 
?>
Prial som k tomu aj strankovanie a podla vasich rad som zmenil mysql_query. Avsak neustale mi mysql_error hadze chybu:

Kód: Vybrať všetko

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/free/ic.cz/r/ripteam/root/www/pod.php on line 5
Co vy na to?
Nadeo
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2202
Registrovaný: 04 nov 2006, 19:38
Bydlisko: BA/LV
Kontaktovať používateľa:

Príspevok od používateľa Nadeo »

Zmaz rychlo heslo a login do mysql
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

skus namiesto

Kód: Vybrať všetko

mysql_result($vypis, "$i","caption");
pouzit

Kód: Vybrať všetko

mysql_result($vypis, $i, "caption");
a to vo vsetkych kde mas tu premennu $i v uvodzovkach, aj ked pochybujem ze to bude ta chyba

// edit
a podla mna by si mal kontrolovat ci uz v tych premennych $_GET['show'], $start, $max, nieco je (ak je toto 5.ty riadok scriptu), lebo na prvykrat nie su tieto premenny inicializovane... resp. su prazdne

Kód: Vybrať všetko

$vypis = mysql_query("SELECT * FROM `obrazok_dna` WHERE number = $_GET['show'] ORDER BY number DESC LIMIT " . $start . "," . ($start+$rows), $connect);
skus to vlozit do toho prveho if(!isset($max))
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Príspevok od používateľa eMPiko »

Kód: Vybrať všetko

<?php
echo "<table>"; 
$connect = mysql_connect("server", user, heslo) or die ("FAILED!!!");
mysql_select_db(db, $connect);
$rows=10;
$start = 0;
$vypis = mysql_query("SELECT * FROM `obrazok_dna` WHERE number = ".$_GET['show']." ORDER BY number DESC LIMIT " . $start . "," . ($start+$rows), $connect);
mysql_error();
if (!isset($max))
{
$max = mysql_num_rows($vypis); 
}
Momentalne vrch vyzera takto, upravte ho pls podla vasich predstav. Pri takomto syntaxe hadze chybu:

Kód: Vybrať všetko

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/free/ic.cz/r/ripteam/root/www/pod.php on line 10
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

ta chyba prakticky znamena ze mas v premennej $vypis nejaku chybu... napr. ak bola $_GET['show'] prazdna tak si vykonaval prikaz

Kód: Vybrať všetko

SELECT * FROM `obrazok_dna` WHERE number = ORDER BY number DESC LIMIT 0,10
skus toto, je to osetrenie stavu kedy je get prazdne... ine premenne byt prazdne nemozu lebo ich nastavujes na 0 a 10

Kód: Vybrať všetko

<?php 
echo "<table>"; 
$connect = mysql_connect("server", user, heslo) or die ("FAILED!!!"); 
mysql_select_db(db, $connect); 
$rows=10; 
$start = 0;
if($_GET['show'])
  $vypis = mysql_query("SELECT * FROM `obrazok_dna` WHERE number = ".$_GET['show']." ORDER BY number DESC LIMIT " . $start . "," . ($start+$rows), $connect); 
else 
  $vypis = mysql_query("SELECT * FROM `obrazok_dna` WHERE number = 0 ORDER BY number DESC LIMIT " . $start . "," . ($start+$rows), $connect);
mysql_error(); 
if (!isset($max)) 
{ 
$max = mysql_num_rows($vypis); 
}
eMPiko
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3085
Registrovaný: 11 jan 2007, 16:40

Príspevok od používateľa eMPiko »

Nefunguje:

Kód: Vybrať všetko

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/free/ic.cz/r/ripteam/root/www/pod.php on line 13
beluský
Darca
Darca
Používateľov profilový obrázok
Príspevky: 317
Registrovaný: 21 sep 2006, 13:46

Príspevok od používateľa beluský »

Kód: Vybrať všetko

<?php
$rows=10;
$start = 0;

$sql = "SELECT * FROM `obrazok_dna` WHERE number = ".$_GET['show']." ORDER BY number DESC LIMIT " . $start . "," . ($start+$rows);
echo $sql; // daj si vypisat prikaz ktory vykonavas a hladaj syntakticku chybu, z tohoto pohladu nevyzera ze by tam nejaka bola... ale pre istotu

$vypis = mysql_query($sql, $connect);
Napísať odpoveď