ugrás a tartalomhoz

Utolsó sorok lekérdezése MySQL-ben

Anonymous · 2005. Ápr. 24. (V), 17.10
Lenne nekem egy kérdésem:
Egy adatbázisban van x adat, amit azzel a kóddal kérdezek le:

$eredmeny = mysql_query( "SELECT * FROM $adatbazis");
print "<table border=1>\n";
print "<tr>\n";
while ( $egy_sor = mysql_fetch_array( $eredmeny ) )
{
print "<td><center>".$egy_sor["cim"]."<br><img src='".$egy_sor["borito"]."'></center></td>\n";

}
print "</tr>\n";
print "</table>\n";

Hogy tudnám azt megoldani, hogy csak az utolsó x (mondjuk 7) rekordot kérdezzem le?
 
1

utolsok

gerzson · 2005. Ápr. 24. (V), 17.18
Ehhez meg kell először is adni, h. milyen rendezés szerint tekintve legutolsó? Erre való az ORDER BY klauzula. Bár eleinte ez nem tűnik fel - főleg egyszerű lekérdezések esetén -, az SQL lekérdezések végeredményében a rekordok sorrendje tetszőleges lehet, ha nem használunk rendezési feltételt.
Ha legutolsó 7-et akarod, akkor célszerű fordított sorrendben rendezni az adatokat (DESC kulcsszó a rendezés alapjául szolgáló mező neve után), és így a legelső 7-et lekérni:
SELECT * FROM tabla ORDER BY nev DESC LIMIT 7
testing can reveal the presence of errors, but never their absence. - Edsger Dijkstra
4

Te ez nagyon jó! Kösz

Anonymous · 2005. Ápr. 24. (V), 17.39
Te ez nagyon jó! Kösz szépen!

Lenne még1 kérdésem:
Amit elsőnek betettem kódot, az kilistázza szépen új cellába az adatokat, de több 1000 adatnál már ez nem fog működni. Hogy tudnám megcsinálni, hogy a ciklus 7 rekordonként új sor kezdjen a táblázatban?
5

Ez már PHP

gerzson · 2005. Ápr. 24. (V), 17.50
Ez már PHP:
<?php 
print "<tr>\n";
for ($sor = 1; $egy_sor = mysql_fetch_array($eredmeny); ++$sor){
  /* ide jon a te sorod ... */
  if ($sor % 7 == 0)
    print "</tr>\n<tr>\n";
}
testing can reveal the presence of errors, but never their absence. - Edsger Dijkstra
6

Örök hála.

Anonymous · 2005. Ápr. 24. (V), 18.03
Örök hála.
9

Megcsináltam ezzel, de így

Anonymous · 2005. Ápr. 24. (V), 19.46
Megcsináltam ezzel, de így az első rekordot nem írja ki.
Itt a kód:
<?php
$felhasznalo = "root";   //mySQL felhasználó
$jelszo = "";            //mySQL jelszó
$adatbazis = "video";    //mySQL adatbázis neve
$hoszt = "localhost";    //mySQL szerver
$kapcsolat = mysql_connect($hoszt, $felhasznalo, $jelszo );
if ( ! $kapcsolat )	die( "Nem lehet kapcsolódni a mySQL kiszolgálóhoz!" );
mysql_select_db( $adatbazis, $kapcsolat ) or die ( "Nem lehet megnyitni a(z) $adatbazis adatbázist: ".mysql_error() );
$eredmeny = mysql_query( "SELECT * FROM dvd");
$sorok_szama = mysql_num_rows( $eredmeny );
print "Jelenleg $sorok_szama DVD filmünk van<P>";
print "<table border=0 width='100%'>\n";
print "<tr>\n";
while ( $egy_sor = mysql_fetch_array( $eredmeny ) )
{
	for ($sor = 1; $egy_sor=mysql_fetch_array($eredmeny); ++$sor){
			print "<td><center>".$egy_sor["cim"]."<br><img src='".$egy_sor["borito"]."' border='2'></center></td>\n";
		if ($sor % 6 == 0)
		print "</tr>\n<tr>\n";
	}
}
	print "</tr>\n";
print "</table>\n";

mysql_close( $kapcsolat );
?>
10

A for ciklust a while ciklus

gerzson · 2005. Ápr. 24. (V), 19.55
A for ciklust a while ciklus helyett kell használni, tehát nem beágyazva!
testing can reveal the presence of errors, but never their absence. - Edsger Dijkstra
12

Aha. Köszi.

Anonymous · 2005. Ápr. 24. (V), 21.02
Aha. Köszi.
16

Üres sor

PiG · 2005. Ápr. 25. (H), 09.54
...
print "</tr>\n<tr>\n";
}
}
print "</tr>\n";
...

Nem próbáltam ki a kódot élesben, de sztem ezzel a megoldással előfordulhat, hogy a lekérdezés végén lesz egy üres <tr></tr> , ami mondjuk enni nem kér - de mégis... Aztán az is lehet, hogy tévedek...
P][G
30

nem megy :(

Abzu · 2007. Dec. 20. (Cs), 01.04
Próbáltam a limitet, de nem nem megy, mindig kiírja az összes sort, nekem az kéne hogy egy táblából egy mezőjének egyik adaját pl a 3-as sorban levőt írja ki
2

doksi

Őry Máté · 2005. Ápr. 24. (V), 17.19
Úgy, hogy megnézed a mysql hivatalos dokumentációjában (google első találat) a SELECT pontos paraméterezését. (LIMIT és ORDER BY részt olvasd figyelemmel)
Maat
3

Ez ilyen 1xű?Pedig már

Anonymous · 2005. Ápr. 24. (V), 17.34
Ez ilyen 1xű?
Pedig már írtam egy ilyen kódot:

$cim1_p = mysql_query("SELECT cim FROM $adatbazis WHERE azonosito = 1");
$cim1= mysql_fetch_row ($cim1_p);
$cim2_p = mysql_query("SELECT cim FROM $adatbazis WHERE azonosito = 2");
$cim2= mysql_fetch_row ($cim2_p);
$cim3_p = mysql_query("SELECT cim FROM $adatbazis WHERE azonosito = 3");
$cim3= mysql_fetch_row ($cim3_p);
$cim4_p = mysql_query("SELECT cim FROM $adatbazis WHERE azonosito = 4");
$cim4= mysql_fetch_row ($cim4_p);
$cim5_p = mysql_query("SELECT cim FROM $adatbazis WHERE azonosito = 5");
$cim5= mysql_fetch_row ($cim5_p);
foreach ( $cim1 as $mezo1 )
foreach ( $cim2 as $mezo2 )
foreach ( $cim3 as $mezo3 )
foreach ( $cim4 as $mezo4 )
foreach ( $cim5 as $mezo5 )
print "<table border=1>\n";
print "<tr>\n";
print "<td><center>$mezo1</center></td>\n";
print "<td><center>$mezo2</center></td>\n";
print "<td><center>$mezo3</center></td>\n";
print "<td><center>$mezo4</center></td>\n";
print "<td><center>$mezo5</center></td>\n";
print "</tr>\n";
print "</table>\n";
7

Még 1 kérdés:Minden php

Anonymous · 2005. Ápr. 24. (V), 18.42
Még 1 kérdés:
Minden php fájlban, amiben mysql-hez kapcsolódok, benne van a kövtkező pár sor:

$felhasznalo = "root"; //mySQL felhasználó
$jelszo = ""; //mySQL jelszó
$adatbazis = "video"; //mySQL adatbázis neve
$hoszt = "localhost"; //mySQL szerver

Ezt nem lehetne úgy megoldani, hogy egy egy külön - mondjuk sql.php - fájlba teszem, sé a többi helyen csak hivatkozok rá?
8

include

Anonymous · 2005. Ápr. 24. (V), 19.44
include('sql.php');

Egyébként ha ennyire nem vagy tisztában a php és a mysql legalapvetőbb kérdéseivel, akkor mindenképpen hasznos lenne a dokumentációkat forgatnod.

Gyulus
11

1 hete kezdtem. És amúgy

Anonymous · 2005. Ápr. 24. (V), 20.04
1 hete kezdtem. És amúgy olvasom a tanuljuk meg a php-t 24 óra alatt című könyvet. Gondoltam erre is, csak nem hittem, hogy ilyen 1xű.
Sorry, hogy kérdeztem
13

Sorry?

Anonymous · 2005. Ápr. 24. (V), 21.08
Kicsit úgy lehet érezni, mintha megsértődtél volna. Ne tedd, az, hogy olvasd a manuálokat és a dokumentációkat, nem sértés, hanem jó tanács. Mindenki úgy kezdi, hogy példaprogramokat nézeget, és manuált olvas. Kérdezni meg lehet bátran.
Az, hogy ilyesmi választ kapsz, azt jelenti, hogy olyasmit kérdeztél, amit csekély utánaolvasással magad is megválaszolhattál volna.

Gyulus
14

Olvason szépen sorban a

Anonymous · 2005. Ápr. 24. (V), 21.19
Olvason szépen sorban a manualokat, de közben csinálok is egy weboldalt, és hát tudod milyen az ember? Mindent rögtön akar.
15

hehe

PiG · 2005. Ápr. 25. (H), 09.45
hehe
P][G
17

Egy tábla x sorát ($id)

Anonymous · 2005. Ápr. 25. (H), 20.53
Egy tábla x sorát ($id) akarom frissíteni a köv. paranccsal:
mysql_query ("UPDATE dvd SET cim = '$cim', borito = '$borito', kategoria = '$kategoria', leiras = '$leiras'  WHERE azonosito = '$id' ")
A változókat egy űrlapból kapja a szkript, kivéve az id-t, azt az URL-ből (az id jelölné, hogy melyik sort akarom frissíteni)
18

POST, GET

tiku I tikaszvince · 2005. Ápr. 26. (K), 00.47
Mi a kérdés? De lehet, h. gondolatolvasó vagyok ...
Ha a 24 órás könyvet olvasod, akkor biztos hogy találkoznod kell lassan olyanokkal hogy $HTTP_POST_VARS, és $HTTP_GET_VARS (9. óra, 155p.)
Ezek helyett, mondjuk már $_POST, $_GET -et illik használni.

$command = "UPDATE dvd SET cim = '".$_POST['cim']."', ";
$command .= "borito = '".$_POST['borito']."', ";
$command .= "kategoria = '".$_POST['kategoria']."', ";
$command .= "leiras = '".$_POST['leiras']."' ";
$command .= "WHERE azonosito = '".$_GET['id']' ";
mysql_query ($command, $ide_meg_a_kapcsolat_azonosító);
19

POST egyszerűbben

PiG · 2005. Ápr. 26. (K), 11.18
Mivel elég körülményes a $_POST tömb tagjainak begépelgetése, ezért általában az extract parancsot szoktam használni:
Pl.:
extract($_POST, EXTR_PREFIX_ALL, "dvd");

Ha a $_POST elemei pl.: $_POST['cim'], $_POST['kategoria'],$_POST['leiras'], akkor a fenti parancs létrehozza a $dvd_cim, $dvd_kategoria, $dvd_leiras változókat, melyeket a későbbiekben valamivel egyszerűbb begépelgetni.
Pesze működik a $_GET illetve bármilyen tömb esetében.
Figyelem: az aláhúzás jelet (_) az extract függvény "magától" adja a változó nevéhez, ha vmilyen PREFIX-et használunk!
Bővebb info: http://hu.php.net/manual/en/function.extract.php

Sziasztok:
P][G
20

HTML Editor

Anonymous · 2005. Ápr. 26. (K), 15.30
Na, már csak egy kérdésem lenne. Tudtok valami jó HTML szerkesztőt? Nem olyat, amiben html oldalt kell szerkeszteni, hanem amit egy html oldalba kell beágyazni. Van egy textarea, és alatta mindenféle formázógombok.
(És akkor a textarea tartalmát kimenteném egy fájlba php-vel, és egy másik oldaon ki tudom majd listázni)
21

Tudunk :)

PAStheLoD · 2005. Jún. 6. (H), 19.02
TinyMCE Xinha FCKEditor ..satöbbi itt egy lista http://www.htmlarea.com/directory/WYSIWYG_Editors/index.html
22

Sziasztok!

yahoooo · 2005. Júl. 5. (K), 23.48
Sziasztok!
Hogyan lehet egy hosszab szövegből mondjuk csak az első 50 karaktert lekérdezni? Mert nem szeretném hogy az összes szöveg megjelenjen a cikkből, csak a továbbkattintás után.
23

substring

VBala · 2005. Júl. 6. (Sze), 12.01
SELECT SUBSTRING(mezo,0,50) FROM tabla
de jobb ha inkább egész szavakat irsz ki:
SELECT SUBSTRING_INDEX(mezo,' ',20) FROM tabla
és mégjobb ha mondatot :) (space helyett '.' legyen a második paraméter)
24

Ez mind szép és jó. Meg

yahoooo · 2005. Júl. 6. (Sze), 12.55
Ez mind szép és jó. Meg is találtam a mysql manualban,de nekem nem ad vissza semmit erre a lekérésre. Se a php scriptemből, se pedig a phpMyAdminon keresztül.
Így néz ki a kiválasztásom:
SELECT SUBSTRING( text , 0 , 50 ) FROM 'news'
25

megvan

VBala · 2005. Júl. 6. (Sze), 13.39
igazad van, most látom, hogy nem 0-tól kell kezdeni, hanem 1-től
26

Na így már működik.

yahoooo · 2005. Júl. 6. (Sze), 14.55
Na így már működik. Köszi a segítséget,majd még lehet jelentkezem! :D
27

Na jó, ezt már nem

yahoooo · 2005. Júl. 6. (Sze), 15.10
Na jó, ezt már nem értem. phpMyAdmin-ban simán működik,de a php scriptemben nem. Itt van a php kód:
echo '<table cellpadding="0" cellspacing="0">';
$tabla=mysql_query("SELECT n_id, title, time, SUBSTRING( text, 1, 50 ) FROM `news`");
while ($adat=mysql_fetch_object($tabla)) {
 echo('
  <tr>
   <td class="update">'.$adat->time.'</td>
   <td class="update">'.$adat->title.'</td>
   <td class="update">'.$adat->text.'...</td>
   <td class="update"><a href="/update.php?id='.$adat->n_id.'">Módosít</a></td>
  </tr>
 ');
}
echo '</table>';


A text mező tartalmát még mindig nem kapom vissza. Pedig elvileg már jól van megírva.
28

mo

Bártházi András · 2005. Júl. 6. (Sze), 15.13
SELECT n_id, title, time, SUBSTRING( text, 1, 50 ) as text FROM `news`
-boogie-
29

Na így már jó.

yahoooo · 2005. Júl. 6. (Sze), 15.18
Na így már jó. Köszönöm a gyors segítséget!
31

php mysql

pete21 · 2008. Okt. 14. (K), 17.13
hello. lenne egy olyan próblémám hogy azsql adatbázis keresésnél phpben nem igazán tetszik neki a where után ha változót írok be neki és a limittel együtt akarom használni
"select * from table where name='$name' LIMIT 0,1"

az első oldalt még ki is hozza de mihent lapozni akarok már nem érti a $name -t és elszáll.
ha valaki tudna segíteni írjon pls vagy itt vagy emailben peter.csanyi21[kukac]gmail
32

konkrétumok?

gex · 2008. Okt. 14. (K), 17.31
honnan jön a $name? mit jelent az, hogy nem érti? mit jelent az, hogy elszáll? ha kiírnád az sql parancsot mielőtt lefuttatod, te is hamar rájönnél a megoldásra.