Hirdetés
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- A Microsoft bedurvult, így a jövőben keményen odacsapnak a veszélyes drivereknek
- LCD, plazma és projektoros TV-k hibái
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Apple MacBook
- Milyen billentyűzetet vegyek?
- VR topik (Oculus Rift, stb.)
- Milyen belső merevlemezt vegyek?
- Milyen TV-t vegyek?
Aktív témák
-
faster
nagyúr
Eleve timestampet kell tárolni az adatbázisban, és akkor kiírásnál úgy formázod a dátumodat, azt a részét iratod ki, amelyikre szükséged van, nem kényszerülsz str_replace-es hackekre.
Vagy, ha datetime típusú a mező,. és mysql -ről van szó, akkor timestampként kell kiolvasni:
SELECT UNIX_TIMESTAMP(datum) AS datum FROM ...
[Szerkesztve] -
faster
nagyúr
A substr-vel az a gond,hogy a szó közepén is darabol. Én erre a szövegkivonatolásra ezt a függvény használom:
function truncate($content,$max) {
if(strlen($content)>$max) {
$content = substr($content,0,$max);
for($xx=strlen($content);$xx>0;$xx--) {
if(!ctype_space($content{$xx-1}) and !ctype_punct($content{$xx-1})) {
$content = substr($content,0,strlen($content)-1);
}
else {
$content .= '' ...'';
break;
}
}
}
return $content;
} -
faster
nagyúr
válasz
Briganti
#303
üzenetére
Header előtt nem lehet kiírás. Egyébként nem értem, miért így vizsgálod meg a password helyességét, azt ugyanúgy belerakhatod a select WHERE részébe.
$sel=mysql_query(''SELECT * FROM users WHERE username='$user' AND pasw='$pasw''');
if(mysql_num_rows($sel)) {
// beléphet
}
else {
// név vagy jelszó nem stimmel
}
[Szerkesztve] -
-
faster
nagyúr
list($hirek_szama) = mysql_fetch_row(mysql_query('SELECT count(*) FROM emberek'));
A hírek számának lekérdezése, ugyanazt írtam, amit Tyrael, csak egy sorba belesűrítettem az egészet.
if(!$page) $page = 1;
Ha nincs oldalszám, akkor az első oldal az aktuális.
echo '<table cellpadding=''3''><tr>';
...
echo '</tr></table>';
Ez egy HTML táblázat a táblázat celláiba kerülnek az oldalszámok.
for($i=1;$i<=ceil($hirek_szama/$darabperlap);$i++) {
Ez a ciklus írja ki az oldalak számait, egytől a maximális oldal számáig. A max. oldal száma attól függ, hány elem kerül egy oldalra ($darabperlap), és összesen hány elem van ($hirek_szama), ezt kell elosztani egymással, és felfelé kerekíteni, hogy ne törtszámot kapjunk (ceil).
if($i == $page) echo '<td><b>'.$i.'</b></td>';
Ha épp az aktuális oldal számát írjuk ki, akkor csak kiírjuk a számjegyet, jelen esetben bold formázással.
else echo '<td><a href='.$_SERVER['SCRIPT_NAME'].'?page='.$i.'>'.$i.'</a></td>';
Minden más oldalnál az oldal számát kattintható hivatkozásként írjuk ki, a hivatkozás linkjébe kerül a futtató program neve ($_SERVER['SCRIPT_NAME']), a page nevű paraméterbe kerül az aktuális oldal száma.
Röviden ennyi.
[Szerkesztve] -
faster
nagyúr
Arra a részre, ahova az oldalszámok mennek:
oldalak:
<?
list($hirek_szama) = mysql_fetch_row(mysql_query('SELECT count(*) FROM emberek'));
if(!$page) $page = 1;
echo '<table cellpadding=''3''><tr>';
for($i=1;$i<=ceil($hirek_szama/$darabperlap);$i++) {
if($i == $page) echo '<td><b>'.$i.'</b></td>';
else echo '<td><a href='.$_SERVER['SCRIPT_NAME'].'?page='.$i.'>'.$i.'</a></td>';
}
echo '</tr></table>';
?>
Remélem, nem gépeltem el semmit. -
faster
nagyúr
$hirek=mysql_query(''SELECT * FROM emberek ORDER BY nev DESC LIMIT $offset,$darabperlap'');
while ($sor = mysql_fetch_array($hirek))
{
$sorok[]=$sor;
}
$hirek=$sorok;
foreach ( $hirek as $sorok => $ertek )
{
print ''$sorok = $ertek<br>'';
}
Ezt a részt nem értem, nem oldalszámokat akarsz megjeleníteni?
-
faster
nagyúr
szal csak a sorokat tombbe pakolas a legjobb modszer szerintem a SELECT lekerdezes eredmenyenek tarolasara.
Szerintem meg teljesen felesleges select eredményét tárolni tömbben. Egy while(...fetch_assoc) sor semmivel sem bonyolultabb, mint egy foreach, viszont kevesebb memóriát eszik. -
faster
nagyúr
Háááát, nem tudom, egy adatbázis rekordjainak kilistázása még osztály nélkül sem olyan bonyolult (legfőbb hátrány, hogy adatbázisszerver függő)
$res = mysql_query(''SELECT id, cim,bevezeto FROM tablanev WHERE ...'');
while($row = mysql_fetch_assoc($res)) {
echo '<a href="hir.php?id='.$row['id'].'">'.$row['bevezeto'].'</a><br>';
} -
faster
nagyúr
Ahh, értem, háááát, szokatlan megoldás. :)
Én a saját db, db_res osztályomat használom, és az sem bonyolultabb, mint a tömbkezelés.
pl:
$query = ''SELECT id,leadpic,title,lead,UNIX_TIMESTAMP(public_date) AS public_date FROM news ''.$where.'' ORDER BY public_date DESC LIMIT ''.$f.'',''.PERPAGE;
$res = $db->query($query);
if($res->num_rows()) {
while($row = $res->fetch()) {
echo $row[''mezonev''];
}
}
else {
echo ''ez töküres'';
}
[Szerkesztve] -
-
-
faster
nagyúr
Ha nem tartalmaz titkos részeket, akkor próbáld meg beilleszteni a forrást, hátha kiderül. Az index.php és az includeoltat is.
Szerk: elméletben mindenképpen mködnie kellene, sőt a gyakorlatban is, mivel és is egy include fájlt használok a adatbázis kapcsolódáshoz, adatbázis kiválasztáshoz, de mivel csak egyetlen adatbázist használok egyetlen kapcsolattal, ezért a mysql connection linket nem rakom ki változóba, kábé így néz ki a dolog:
include.php:
mysql_connection(''localhost'',USER_NAME,PASSWORD);
mysql_select_db(DATABASE);
akarmi.php:
require_once(''include.php'');
...
$res = mysql_query(''SELECT * FROM kertitorpe ORDER BY magassag'');
...
[Szerkesztve] -
faster
nagyúr
Nekem az a gyanúm, hogy a cim fölösleges, ki lehet szedni.
Szerk: hozzaszolas.nick AS nick, mert a kapott result setben a PHP nyelvi sajátosságai miatt pont nem lehet (tehát nem tudod úgy elérni, hogy $row[''hozzaszolas.nick'' ]), ezért az AS-sal át kell nevezni.
[Szerkesztve] -
faster
nagyúr
Hu hu hú, de bonyolult.
Mindkét táblában van egy ''tema_id'' nevű mező, ezért helyette a ''táblaneve.tema_id'' jelölést kell használni.
select tema_id, cim, count(hozzaszolas_id) as hozzaszolas from tema left outer join hozzaszolas on tema.tema_id=hozzaszolas.tema_id group by tema_id,cim
helyett
SELECT hozzaszolas.tema_id AS tema_id, cim, count(hozzaszolas_id) AS hozzaszolas FROM tema LEFT OUTER JOIN hozzaszolas ON tema.tema_id=hozzaszolas.tema_id GROUP BY hozzaszolas.tema_id
Remélem, ez jó lesz. -
faster
nagyúr
-
faster
nagyúr
Valami ilyesmit kell, hogy kapjál a resultset-ben:
+----+---------------------------------+-------+
| id | cim | darab |
+----+---------------------------------+-------+
| 3 | egyéb | 0 |
| 1 | Az élet nagy kérdései | 2 |
| 2 | Az élet nem olyan nagy kérdései | 3 |
+----+---------------------------------+-------+
Szerk: Az oszlopok elcsúsztak, remélem, a lényeg azért látszik.
[Szerkesztve] -
faster
nagyúr
Aktív témák
- Spórolós topik
- Posta, csomagküldés
- GoodSpeed: Márkaváltás sok-sok év után
- Xiaomi Mi 9 - egy híján
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Fotók, videók mobillal
- A Microsoft bedurvult, így a jövőben keményen odacsapnak a veszélyes drivereknek
- LCD, plazma és projektoros TV-k hibái
- TP-LINK routerek
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- További aktív témák...
- Western Digital Blue SA510 500GB SATA3 - Új, bontatlan - Eladó!
- Új, Gamer félgép - ASUS B860M-A WIFI + Intel Ultra 5 245KF + Patriot Viper 2x16GB DDR5 6000MHz CL30
- ZBook Fury 16 G9 16" FHD+ IPS i7-12850HX RTX A3000 32GB 1TB NVMe ujjolv IR kam gar
- Apple Watch szíj eladó
- Samsung Galaxy s23+ 8/256 GB, 2026.05.14-ig Rejoy garis
- Asus ROG Strix G G531GT - 15,6"FHD IPS 144Hz - i5 9300H - 16GB - Win11 - GTX 1650 - MAGYAR
- HIBÁTLAN iPhone 15 Pro 128GB Black Titanium -1 ÉV GARANCIA -Kártyafüggetlen, 100% Akkumulátor
- GYÖNYÖRŰ iPhone 12 64GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3858, 100% Akkumulátor
- BESZÁMÍTÁS! MSI B760 i9 14900K 32GB DDR5 1TB SSD RX 9070 XT 16GB ASUS TUF Gaming GT501 CM 750W
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 16/32/64GB RAM RX 9060XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


)



