Keresés

Részletes keresés

Johny Bravo Creative Commons License 2003.01.13 0 0 1088
Ilyet csináltam:


mysql_query("CREATE TEMPORARY TABLE fercsike select * from $SQL_TOPIC_TABLE, $SQL_FORUM_TABLE where $SQL_TOPIC_TABLE.forum=$SQL_FORUM_TABLE.f_id && $SQL_TOPIC_TABLE.active>0 order by $SQL_FORUM_TABLE.$listByF,$SQL_TOPIC_TABLE.$listByT limit $honnan,$MCP");
$r=mysql_query("select fercsike.*, $SQL_FORUM_TABLE.forum_name from fercsike, $SQL_FORUM_TABLE where fercsike.forum=$SQL_TOPIC_TABLE.f_id order by $SQL_FORUM_TABLE.$listByF,$SQL_TOPIC_TABLE.$listByT");

És ezt a választ kaptam rá:


Warning: Supplied argument is not a valid MySQL result resource in /var/www/bandijanos/mucsinak/trefforum2/index.php on line 160

Ahol a 160-as sor a $r-re akar hivatkozni

while ( $sor=mysql_fetch_array($r) ){
Előzmény: Bandi-T (1087)
Bandi-T Creative Commons License 2003.01.13 0 0 1087
Hát a CREATE TABLE segítségével egy ugyanolyan táblát hozol létre, mint mondjuk a forums vagy topics tábla, amit ugyanúgy használhatod, mint bármelyik másik táblát: egy SELECT utasításban megnevezheted a FROM kitétel után, vagy INSERT utasításban az INTO után, stb.

A mysql_query("create ..."); eredményére legfeljebb csak hibaellenőrzéshez van szükséged.

Nem tudom, milyen template-re gondolsz.

Előzmény: Johny Bravo (1086)
Johny Bravo Creative Commons License 2003.01.13 0 0 1086
Ilyesmikkel próbálkoztam tegnap, de nem bírtam kitalálni,
1) hogyan kell php-ban kiadni a create parancsot (tehát így, hogy $r=mysql_query("create ....");, egyáltalán kell-e a $akármi= a mysql_query elé)
2) és hogyan tudok utána egy $r=mysql_query("select ...")-el hivatkozni erre? Itt vajon mire kell hivatkozni, a temptable nevére, vagy inkább a (ha kell egyáltalán a create-es query-t elnevezni valaminek) a $akármire?

Ezek elég homályosak...

Előzmény: Bandi-T (1084)
Bandi-T Creative Commons License 2003.01.13 0 0 1085
A legtöbb embernek, akivel eddig találkoztam, aki nem szereti a mysql-t, úgy véli, hogy a mysql kombinációs lehetőségei ma még viszonylag szerények, és ezért az adatbázist használó programozót sok kódolásra, az igazából egybetartozó műveletek apró darabokra lebontására kényszeríti. Ettől néha olyan élvezetes a használata, mintha felmosórongy helyett fogkefével kellene tisztára mosnod a folyosót. :)
Előzmény: Johny Bravo (1083)
Bandi-T Creative Commons License 2003.01.13 0 0 1084
Én nem értek a mysql-hez, úgyhogy csak a te kedvedért... :P

Először is kilistázzuk a legújabb x topicot:

CREATE TEMPORARY TABLE new_topics SELECT * FROM topics ORDER BY lastdate DESC LIMIT x;

Ezt kell majd beletennünk a második select-be:

SELECT new_topics.*, forums.forum_name FROM new_topics, forums WHERE new_topics.forum = forums.f_id ORDER BY forums.f_id, lastdate DESC;

Hát, egyelőre ez jutott eszembe, de lehet, hogy ez nem működik majd.

Előzmény: Johny Bravo (1077)
Johny Bravo Creative Commons License 2003.01.13 0 0 1083
4 tábla van, ha a forum.php-ra gondolsz, akkor az 100kilobájt.

Mi a baj vele? Épp kezdek ismerkedni vele, és máris váltsak?... :)

Előzmény: Bandi-T (1082)
Bandi-T Creative Commons License 2003.01.13 0 0 1082
Bocsánat, csúnya leszek: mekkora az egész rendszer és az adatbázis? hány tábla? hány sor a PHP-s adatbáziskezelő rész? szeretnélek rábeszélni ugyanis, és segíteni, hogy válts mysql-ről. minél hamarabb. szerintem te is és mi is jobban járunk.
Előzmény: Johny Bravo (1081)
Johny Bravo Creative Commons License 2003.01.13 0 0 1081
És tudsz segíteni, hogyan kell létrehozni ilyen temp táblát, és utána hogyan tudok a temp táblára hivatkozni?

Tegnap próbálkoztam vele hajnali kettő körül, de totál homály volt az egész... :)

Előzmény: crockl (1080)
crockl Creative Commons License 2003.01.13 0 0 1080
ha az sql mysql nalad akkor a subselect-et feletsd el, de a temp tablaval megoldhatod, vagy tobb query-vel php-bol es te allitod ossze az adatokat, nem csak 1, select * from mindenlegyenbenneugyahogyenakarom :)
Előzmény: Johny Bravo (1077)
crockl Creative Commons License 2003.01.13 0 0 1079
hm, azt nem neked irtam:) ("hulyesegnek nincs hatara..." cimu-t)
Előzmény: bmafte (1076)
Johny Bravo Creative Commons License 2003.01.13 0 0 1078
Ja, kifelejtettem még pár dolgot... :)

Szóval a forums és topics táblák között forum-mező (topics tábla) és az f_id-mező (forums tábla) teremt kapcsolatot (a topikok rendelkeznek egy fórum-azonosítóval, ami alapján vmelyik fórumhoz tartoznak).

Ezenkívül ugye több táblából egyszerre kell listázni, amivel kapcsolatban eddig jutottam:


$r=mysql_query("select * from $SQL_TOPIC_TABLE,
$SQL_FORUM_TABLE where $SQL_TOPIC_TABLE.forum=$SQL_FORUM_TABLE.f_id &&
$SQL_TOPIC_TABLE.active>0 order by
$SQL_FORUM_TABLE.$listByF,$SQL_TOPIC_TABLE.$listByT limit $honnan,$MCP");

(Ahol a listby-okat a felhasználok által beállítottak szerint állítom elő (ezek értéke lehet pl lastdate desc / lastuser stb), a $honnan és $mcp pedig az adott oldalszám és az user által beállított listázásmaximum/oldal segítségével áll elő.)

Ezzel ugye az a gond, hogy először sorrendbe rakja őket a fórumok szerint, és csak utána dátum szerint, ez pedig nem az, amit én szeretnék.

Előzmény: Johny Bravo (1077)
Johny Bravo Creative Commons License 2003.01.13 0 0 1077
Előre is köszi a segítséget!

A táblák struktúrája (négy van összesen):


#
# Table structure for table 'content'
#

CREATE TABLE content (
c_id bigint(20) unsigned NOT NULL,
t_id bigint(20) unsigned NOT NULL,
user_id varchar(4) NOT NULL,
content text NOT NULL,
date varchar(20) NOT NULL,
previous_id bigint(20) unsigned,
member int(1),
link text
);

#
# Table structure for table 'forums'
#

CREATE TABLE forums (
f_id bigint(10) unsigned NOT NULL auto_increment,
forum_name varchar(30) NOT NULL,
description varchar(100) NOT NULL,
lastdate varchar(20) NOT NULL,
active int(1),
lastuser varchar(16),
PRIMARY KEY (f_id)
);

#
# Table structure for table 'topics'
#

CREATE TABLE topics (
t_id bigint(20) unsigned NOT NULL auto_increment,
topic_name varchar(30) NOT NULL,
description varchar(100) NOT NULL,
lastdate varchar(20) NOT NULL,
active int(1),
prevdate varchar(20),
lastuser varchar(16),
creator varchar(16) NOT NULL,
forum char(3),
PRIMARY KEY (t_id)
);

És van még az users table.


Ezek a php-ban az alábbi módon vannak meghivatkozva:
$SQL_USERS_TABLE=users,
$SQL_CONTENT_TABLE=content,
$SQL_FORUM_TABLE=forums,
$SQL_TOPIC_TABLE=topics.

Az én problémám a következő:

Szeretnék úgy kilistázni topikokat a fórum kezdőoldalára, hogy a dátum szerinti (lastdate) legutolsó x db hozzászólást vegye listázza ki, de úgy, hogy ezeket (miután ugye kiszedte az adatbázisból a 10 legutsó topikot) először a hozzájuk tartozó fórum szerint rakja csoportba, és azon belül dátum szerint. (Illetve ez a két legutolsó szempont mindegy, mert ezt állíthatják az userek abc-sorrendre, akármire, a lényeg, hogy a legutolsó x db-on tudjak rendezést csinálni.)

Addig jutottam tegnap a netes kereséssel, hogy valami nested query-t, vagy subselect-et vagy temporary table-t kéne nekem csinálni ahhoz, hogy a dátum szerint kiszedett x-db topikot utána kedvem szerint rendezgessem. De megvalósítani nem tudtam.

Ja és mindezt php-ból meghívott sql-utasítással kéne megcsinálni.

Előzmény: Bandi-T (1075)
bmafte Creative Commons License 2003.01.13 0 0 1076
Csa!

Nem igazan vagyok hive en sem az effele dolgoknak, de egyelore nem akarom atirni az egesz sz?art, mert akkor mas alapokra kellene helyezni az egeszet! (Majd ha lesz ra keret meg elhatarozas.)

Amugy teljesen igazatok van, favagas helyett inkabb atirtam a jelenlegi cgi-t (ez egy sima c progi). Mukodik, bar en inkabb a php fele huznek.

Udv
BMaFTe

Előzmény: crockl (1073)
Bandi-T Creative Commons License 2003.01.13 0 0 1075
Kérlek tedd meg a kedvünkért, hogy ideírod a kérdéses tábláknak a struktúráját (mondjuk a létrehozásukhoz használt SQL utasításokat), utána pedig próbáljuk meg kisütni együtt a listázáshoz neked szükséges SQL utasítást, és utána abba helyezd be a változókat.
Előzmény: Johny Bravo (1074)
Johny Bravo Creative Commons License 2003.01.12 0 0 1074
Sziasztok!

Szeretnék listázni topikokat egy fórum kezdőlapjához. A topikok adatait $SQL_TOPIC_TABLE tábla tartalmazza, a helyzetet azonban bonyolítom azzal, hogy van egy $SQL_FORUM_TABLE is, amely egyfajta alfórumokat tartalmaz, azaz a topikok mindegyike valamelyik alfórumhoz tartozik (mint itt az indexen a Törzsasztal/Politika stb).

Na most én azt szeretném, hogy a legutolsó x db topikot listázza ki a fórum, de úgy megjelenítve, hogy ezeket alfórumonként csoportosítja...

Eddig erre jutottam, de ez csak az összes topik kilistázásakor működik, ha kevesebbet akarok, akkor nem.


$r=mysql_query("select * from $SQL_TOPIC_TABLE, $SQL_FORUM_TABLE where $SQL_TOPIC_TABLE.forum=$SQL_FORUM_TABLE.f_id && $SQL_TOPIC_TABLE.active>0 order by $SQL_FORUM_TABLE.$listByF,$SQL_TOPIC_TABLE.$listByT limit $honnan,$MCP");

(Itt az aktív topikokat listázom ki, elsődlegesen a fórumok szerint [$listbyf értéke itt date desc], másodlagosan a topikok dátuma [$listbyt] szerint.)

Hogyan tudnék úgy listázni, hogy a dátum szerinti legutolsó x db topikot (elsődleges szempont) fórumazonosítójuk szerint (másodlagos) válogassa szét, majd ezen belül alkalmazza újra a dátum szerinti sorrendet (harmadlagos)?

Lehet, hogy kicsit érthetetlen a dolog, de hátha valaki érti, mit zagyválok... :)

crockl Creative Commons License 2003.01.12 0 0 1073
loller, hulyesegnek nincs hatara :)), vagy meg nem talakoztam vele, mert mindenki atlepi?
Előzmény: Strong Bad (1072)
Strong Bad Creative Commons License 2003.01.12 0 0 1072
Ja ez mukszeni fog, de erzed bmafte ugye hogy mennyire favago megoldas?

Lassu, es nem biztonsagos. Nem kerulsz be a webdevelopment hall of fame-be az biztos. Ird meg inkabb PHP-ban ugyanazt amit a cgi csinalt, aztan torold le. Szar Perl.

crockl Creative Commons License 2003.01.12 0 0 1071
hat azert nem art:) egy: lala.cgi; rm -f / azert tud ütni ;)) vagy rm -f ./, hatha tudja torolni maga alatt a fat :) Olvasd doksi meglatod.
Előzmény: bmafte (1070)
bmafte Creative Commons License 2003.01.12 0 0 1070
Kosz, ez is rendben.

Kell-e vegul a kigeneralt parancson extra ellenorzeseket vegezni (bar cgi-hivassal kezdodik, ugyhogy valoszinuleg tok mindegy, mit ir be a felhasznalo, legfeljebb "sorry" lesz a vegeredmeny.)

BMaFTe

Előzmény: crockl (1069)
crockl Creative Commons License 2003.01.12 0 0 1069
Hat ugy ahogy a manual-ba is leirjak. exec("parancs",$visszatomb); -> $visszatomb-be soronkent a visszaterese a parancs-nak.
exec("ls -l",$tomb);
-> $tomb[0] = '.';
-> $tomb[1] = '..';
stb stb.
Előzmény: bmafte (1068)
bmafte Creative Commons License 2003.01.12 0 0 1068
Cso!

Konkretan kerdeznem, hogyan lehet meghivni egy cgi-t php-bol? Azaz az exec-t, vagy hasonlot gyakorlatban hogyan celszeru hasznalni?

A barkacsmunkat megoldom valahogy. (php lok egy formos oldalt + az eredmenyt azon belul, ez eddig is vilagos volt.)

BMaFTe

Előzmény: crockl (1067)
crockl Creative Commons License 2003.01.11 0 0 1067
Erthetoen csak te nem erted a mukodeset a dolgoknak :) Ahhoz hogy "ugyan oda" keruljon valami ahol a form volt a html-be ahhoz annak a cgi-nek, php-nak akinek a form-ot elkuldted kell kiirnia oda ahova szeretned. Gondolom ez ertheto. Tehat a php-nak kell kiadnia egy olyan oldalt ami ezt megvalositja kiirja azt a html es oda ahova neked kell kiirja erdmeny stb stb.
Masik megoldas esetleg, ha egy iframe-be van ez a form, ami lehet egy tablazatba is, es akkor az iframe-be levo form elkuldi a php-nak ami visszaadja az eredmeny, es visszairja a form-ot is kitoltve. Legegyszerubb ha ezt a ket muveletet 1 php vegzi. Tehat ha nincs get adat akkor kiir form uresen, ha van akkor kiir eredmeny es kitolt form.
Vagy nincs iframe-be a form de van 1 iframe-ed es a form target-jet beallitod eme iframe-re ahol mar csak a php kell hogy kiirja az eredmeny es akkor se a php-n se a html-en nem kell sokat valtoztatni. Egy hatrany, hogy regebbi bongeszok az iframe-t nem tamogatjak.
Előzmény: bmafte (1066)
bmafte Creative Commons License 2003.01.11 0 0 1066
Szevasztok!

Van egy mukodo cgi progi. Uj weboldal kerul fele. A meghivo form-nal method="get" + az action a regi cgi-re.

A formot (a regit) egy tablazaton belulre beraktam, igy mukodik ugye, csak a kimenet egy uj oldalon jon fel es teljes egeszeben ua, mint a regi (mi is lenne mas).

A celom, hogy abba a tablazatreszbe keruljon a regi cgi altal visszadobott eredmeny ahova most a formot raktam.

(A regi cgi progibol kiszedem a felesleges tag-eket, marad a csupasz eredmeny.)

A formot at szeretnem adni egy php-nek, ami visszaadja a weboldalt, ugy, hogy a form kitoltve + az eredmeny a fent emlitett tablazatba bekeruljon.

Hogyan lehet a regi cgi-t meghivni es az eredmenyet visszaadni php-vel.

Remelem erthetoen fogalmaztam

BMaFTe

crockl Creative Commons License 2003.01.09 0 0 1065
ja, direkt irtam ugy ;), kicsit elegem volt mar...
Előzmény: Bandi-T (1063)
Johny Bravo Creative Commons License 2003.01.09 0 0 1064
Nem tetszik a gyenge főnévi ragozás? :)
Előzmény: Bandi-T (1063)
Bandi-T Creative Commons License 2003.01.09 0 0 1063
Avagy a rendszeretés jegyében (konyha tisztántartása, register_globals off): $_SERVER['HTTP_REFERER'].

sha_dowe: jaj! :) kérlek használd vagy a 'fájlokat' vagy a 'file-okat' írásmódot.

Előzmény: crockl (1059)
Strong Bad Creative Commons License 2003.01.09 0 0 1062
talalt, sullyedt. De ne farasszuk a topikolokat. Majd irok valami okosat privibe :-)
Előzmény: gye (1061)
gye Creative Commons License 2003.01.09 0 0 1061
Hát kérlek szépen alássan, hartaiak jól vagyunk, amúgy meg a leckét rendesen feladtad, bár az én tippem Kanada :)
De ez csak egy nagyon gyenge próbálkozás :)

üdvagyé:)

Előzmény: Strong Bad (1053)
syxtus Creative Commons License 2003.01.09 0 0 1060
Köszi
Előzmény: crockl (1059)
crockl Creative Commons License 2003.01.09 0 0 1059
phpinfo(); a te baratod,amugy $HTTP_REFERER
Előzmény: syxtus (1058)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!