Sziasztok!
Csak a szokásos segítségért vagyok itt. :) Oldalra kell egy halál egyszerű 1 soros kereső menü ami a már kitárgyalt SQL lekérdezést letudja futtatni karakter behelyettesítéssel.
Nézegettem a searc formok de vagy túl van nekem bonyolítva vagy nem is értem. Próbáltam hozzá valami segédlet félét keresni (ugy a gugli a barátom) de nem nagyon volt találat.
Naív módon gondoltam, hogy majd egy egyszerű php kereső milyen jó lesz nekem és megjelenít mindent. Befürödtem vele :)
Esetleg tudtok ehhez valamiféle Drupal search form for tök dummies -t?
Üdv!
Drupal verzió:
Fórum:
pl
nekem volt egy saját kis keresőm, ami személy nevek alapján keres saját táblában
van egy textfield mező ahol bekérem a nevet, keresés, és mégse gomb
mini
pár dolog
Drupal 6-ban nincs submit hook -> http://drupal.org/node/114774#hook_submit
a sessionos részen teljesen belekeveredtem, hogy végül is mit csinálsz :)
tudom javasolni még a jó paraméterezéseket: api.drupal.org
de amúgy *gondolom* jó
*----*----*
$node ? 'alma' : 'bor'
*----*----*
nekem működik
nekem működik a session rész azért van, ha lenyomom h mégse akkor a textfield-be beírt rész ill. a keresés eredménye törlődik...
sajnálom h nem segítettem....
mini
mégse
ezt a mégse-dolgot önmagában nem értem...
Mármint: ha mégse akar keresni, akkor nem fog rányomni a "Keress" gombra nem? :)
*----*----*
$node ? 'alma' : 'bor'
*----*----*
hook_submit
a hook_submit-ban igazad van, a session részbe most ne menjünk bele :)
ez kezdeti szárnypróbálgatás volt, és az illető egyszerű példát kért, én azt hittem egyszerű :(
mini
:)
ne szomorkodj, eljön a nap amikor én is egyszerűnek fogom mondani, csak előtte jó lenne tudni, hogy mi mit csinál és mi miért és mit csinál :D
fel van adva a feladat. és még egyszer köszönöm!
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
hihi :)
Kérlek félre ne értsd, nem és NEM akartam leszólni a kódodat. Csak nem értettem ^^
Másrészt:
Sörcsavar: csinálsz egy formot, a form submitjába beleillesztesz egy callbacket, ott feldolgozod az adatokat, majd az eredménnyel visszatérsz
form api jó olvasmány
a gugli a barátod
a wiki meg a barátnőd
:D
*----*----*
$node ? 'alma' : 'bor'
*----*----*
ááá
a wikikkel sosem jöttem ki jól, de gugli még nem okozott csalódást. :)
akkor most form api meg callback és meglátjuk mi lesz. amúgy a baj sokszor nem azzal van, hogy az ember nem tud keresni, hanem, hogy nem tudja, hogy mit kell keresnie ;)
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
hűűűű
amúgy nagyon kedves tőled, hogy megosztottad, de nem tudom... valahogy ez nekem nagyon úgy tűnik, hogy túl van bonyolítva drupalon. vagy ez csak azért van mert ránéztem és elborzadtam?:)
bár most, hogy valaki anonymként nekem ajándékozta "bibliát" kezd kirajzolódni, hogy mi a francot művel ez a cucc
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
Nem beszólni akarok...
...de jobban tennéd, ha követnéd a drupal kódolási szabványait:
http://drupal.org/coding-standards
Az egyforma kódolási stílus nagyban megkönnyíti a programozók összedolgozását, ezért van kódolási szabványa a drupalnak is. Lehet, hogy egyelőre önállóan dolgozol, de bármikor eljöhet az idő, mikor ez változik, érdemes emiatt mielőbb ráállni. Biztos mi is jobban értenénk a kódjaid, ha rendesen lennének formázva (és a kezdőknek sem mutatsz így jó példát...).
Segítség lehet a Coder modul, ami leellenőrzi a kódod formázásának helyességét:
http://drupal.org/project/coder
Köszi a figyelmet!
--
Csonka Gergely
http://cheppers.com
az én kódomra érted ugye?
ha az én kódomra érted az útmutatást, akkor köszi!
mini
amúgy hook_search??
amúgy hook_search nem jó, az könnyebb szerintem, mint ez, de ha külön kell a kereső mező akkor .....
mini
végülis
a dolog úgy néz ki. van egy oldal amin rajta lesz ez a kereső mező, és keresés után ugyan ezen az oldalon a mező alatt megjelenik a találat ami nem sok, 1-1 sor.
de ha jól értem a form api dolgát, és a helyzetet. létre hozom a formot, és a submit gombnak adok egy 'page callback' => 'meghivando_funkciot' utasítást. és akkor elvileg ugyan azon az oldalon kapom meg az értéket is.
javítsatok ki kérlek, ha tévedek! :)
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
igen
igen ahogy leírta a srác is...
mini
tudom hogy
én vagyok a hülye, de ez miért nem tudom megnyitni?
http://www.cim/om_kereso --- oldal válasza: Az oldal nem található
vagy ennyire félre értelmeztem volna valamit?
"$items['om_kereso'] = array..." ez az útvonal, nem?
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
válasz
/admin/build/modules
/admin/build/menu
Ezeket az oldalakat látogasd meg és menni fog :)
*----*----*
$node ? 'alma' : 'bor'
*----*----*
nem
modulok közt engedélyezve van ha meg menüként hozzá akarom adni az om_kereso elérést akkor beszól: A 'om_kereso' útvonal vagy érvénytelen, vagy nincs megfelelő jogosultság az eléréséhez.
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
jah igen
most vettem csak észre:
menu type: CALLBACK? :)
Tessék figyelmesen elolvasni, hogy menüt hogyan építgetünk
(a helyes egyébként: MENU_CALLBACK)
kapcsolódó oldal: http://api.drupal.org/api/function/hook_menu/6
ha javítottad, akkor a fenti két oldalt látogasd meg újra és működni fog
*----*----*
$node ? 'alma' : 'bor'
*----*----*
bocsi
csak itt volt elírva, a feltöltött fájlban helyesen szerepel.
tehát akkor ahogy most kinéz és produkálja a hibát:
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
re
És ez nem jelenik meg a navigációdnál? O.O Ha rebuildeled a menüdet akkor sem?
*----*----*
$node ? 'alma' : 'bor'
*----*----*
ha a
rebíld alatt azt érted, hogy sminkeknél újra elmentem a dolgot akkor meg volt. kess ürítést meg volt.
esetlegesen rosszul hivatkozom rá?
http://www.valami.hu/om_kereso
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
rebuild alatt
szóóval: látogass el az admin/build/modules oldalra, mert ez újraépíti a menüt *menurebuild*
utánna keresd a menüdet a navigációs blockban
*----*----*
$node ? 'alma' : 'bor'
*----*----*
nincs
kipróbáltam másik oldalon is, ugyan ez történt.
kérdésem a következő. mivel a menu path ot végülis magától generálja, az én gondolat menetem szerint a a callback menüt és ő generálja ki, a kapott adatból. ha tévedek akkor az a hiba. remélem
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
WÁÁÁRGH
Én hülye...
Azér nem látod, mert ezt egy MENU_CALLBACK
Kell írnod a menübe egy menu_normal_item-et ...
hülye hülye hülye én ^^
*----*----*
$node ? 'alma' : 'bor'
*----*----*
hogy az a mindent
******
hülyeséget kérdeztem :)
de figyi, tudom, hogy mindened tele van a hülyeségeimmel. így se megy :D
most elvileg ha nem is jelenik meg magától feltudnám venni menü elemnek és boldogan élne míg le nem törlöm. de nem :))))))))
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
a teljes cucc egy lélegzetvétellel
Mivel mi mind mind nagyon akkurátus emberek vagyunk, ezért a legfaszább megoldást csináljuk ok?
A menu callbacket felejtsd el, arra *jelen esetben* akkor lenne szükséged, ha autocomplete keresőt szeretnél csinálni.
//attól függően, hogy milyen módon szeretnéd a keresődet:
Csinálsz egy menu hookot, benne egy menu normal itemmel *ez akkor jó, ha külön oldalra akarod a keresődet és csak azon az egy oldalon használod
VAGY
csinálsz egy hook_blockot és ott hívod meg a formodat *a submitján pedig feldolgozod*
*----*----*
$node ? 'alma' : 'bor'
*----*----*
juhúúú
1 adott oldalra lesz a kereső ez tuttkerály. de most megint mondtál valami újat, aminek utána kell lesnem. menu_hook. :))
ááááááááááááá csak én vagyok ilyen bonyolult/suta vagy ez egy átlag ember számára az elején télleg ilyen hárdkór?!
ha jól értem akkor a változás kb ennyi:
function hook_menu()
ehelyett
function om_search()
vagy ezzel most leírtam ugyan azt?... :)
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
...
ember... most kapcsolatam
...
ha menu-t szeretnél, akkor modulnev_menu() funkciót kell használnod :)
ami függvény neked kell:
ok_search_menu() {
// ide kerül az ok_search függvényed tartalma
}
*----*----*
$node ? 'alma' : 'bor'
*----*----*
feldolgozás
és hogy van a kód többi része, mikor a keresést feldolgozod, engem ez érdekelne majd a későbbiekben köszike
mini
hát
először jelenjen meg végre a form :)))) én most már télleg nem tudom hogy mit és hol hibázok, végig néztem az api leírásokat, néztem példákat, tutorialok, ugyan ezt írták mindenhol én csak átírtam a saját menümre a neveket és semmi. nekik meg simán :) berosok. pedig biztos én mulasztok! :)
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
ha
tudsz várni estig, akkor elkészítem neked és ide felrakom oks?
*----*----*
$node ? 'alma' : 'bor'
*----*----*
ha
gondolod átküldöm neked ami eddig meg van. van még alja is :D:D:D
amúgy persze jó estére. majd valahogy meghálálom neked. meghívlak alkalom adtán egy sörre :)
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
küld
küldjed :)
*----*----*
$node ? 'alma' : 'bor'
*----*----*
mél
ment a címedre. a válasz címedre elküldöm :)
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
ha megvan a hiba
ha megvan a hiba akkor én is kíváncsi lennék a kódra, lécci rakd fel ill rakjátok fel a keresés feldolgozást is
már nagyon várom
mini
ha megvan a hiba
ha megvan a hiba akkor én is kíváncsi lennék a kódra, lécci rakd fel ill rakjátok fel a keresés feldolgozást is
már nagyon várom
mini
nekem így működik
a Te kódodból először is hiányzott egy ( jel a $items['om_kereso'] = array kódsorod végén,
nekem így működik csak egy kicsit más a modulom neve de az ne zavarjon téged
mini
itt valami
gebasz van. most egy az egyben bepakoltam a tiedet. de arra is az oldal nem található hiba jön elő.
esetlegesen mik lehetnek még a hiba források?
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
figy
nekem a modul nevem nem ugyanaz, mint amit te használtál!!!!
vagyis ügyelj a fvényneveimre!!!! írd át a tiedre, de a kódrészlet ugye az maradhat úgy ahogy van
cache-t ürítettél, bár anno írták mások is
mini
jejejejejejeeee
király, volt egy kisebb elírás ami... a lényeg, hogy nem vettem észre. :)
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
de
de ha sikerül a keresés is megvalósítanod remélem leközlöd:)
én nagyon akarom látni
mini
ha egyszer
összejön akkor nagyon szívesen :D márpedig sikerülni fog most már akkor is!!! :D
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
Ígértem
Nah, hali megint mindenkinek
Sir_Csavar ígértem, elkészítettem ^^ használd egészséggel
Még annyi megjegyzés, hogy beletettem egy autocomplete-et is :)
*----*----*
$node ? 'alma' : 'bor'
*----*----*
mindenképpen
hatalmas respectel tartozom! hálám a sír után is üldözni fog!
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
^^
Jössz egy sörrel :D
*----*----*
$node ? 'alma' : 'bor'
*----*----*
nem ijedek
meg ilyen könnyen ;) postán kéred vagy személyesen? :D
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
pár megjegyzés
Sziasztok!
Kérlek olvassátok el a drupal coding standard-ot valamint a "hogyan írjunk biztonságos kódot" című részt!
Ez a két javítás elengedhetetlen a kód biztonságos működéséhez!
Pár javaslat:
Javasolt a {} burkoló használata a táblanevek körül.
Én az autocomplet függvényben a $node helyett valami beszédesebb változónevet használnék (pl. $szotoredek) mivel a $node változó általában egy egész nodeot tartalmaz.
Ezt a fajta megoldást csak kis, pár ezres node darabszámnál használnám. Felette valami optimálisabb megoldásra lesz szükségetek.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
hm
ismerem a coding standard-ot, csak a feladat egyszerűsége és alacsony adatmennyisége miatt tulajdonképpen feleslegesnek éreztem.
*----*----*
$node ? 'alma' : 'bor'
*----*----*
Most valamit nagyon nem értek...
Alaptézis, hogy a felhasználótól jövő adatot ellenőrzés nélkül nem használjuk fel sehol. Biztos ami biztos (vagyis coding standard) mindig a megfelelő formulát kell használni, mert nem tudhatod, hogy később nem fog-e az adat a felhasználótól érkezni. A legpraktikusabb az a szemlélet, hogy a függvényen kívülről érkező adatokat (paraméter, adatbázis lekérdezés) mindig a felhasználótól jövő adatnak tekintünk. Mint írtam azonban a függvényen belülről jövő adatnál is mindig a megfelelő biztonságos formulát használom, mert ha még most jó is egy későbbi átíráskor nagy gubanc lehet. Ez az amire mondhatod azt egy hetes fejlesztői tapasztalattal, hogy felesleges. Egy hónap múlva már biztos nem mondasz ilyen ormótlan nagy butaságot erre se. Tudni fogod, hogy ez egyáltalán nem felesleges.
Ebben az esetben viszont Te egyértelműen a felhasználótól jövő adatot tolod bele a lekérdezésbe. Tehát biztosan csináltál egy lyukat a rendszereden, nem csak elméletben és nem csak később lesz ezzel problémád, hanem azonnal. A fent írt kód egy lyuk a rendszereden, nem egy lehetséges támadási felület, hanem annál jóval több, egy nyitva tátongó hatalmas kapu!
Tehát itt nem szépészeti problémáról van szó, hanem egy alapvetően hibás kódról. Itt Te a minimálisan elvárható biztonságra sem ügyelsz. Az ilyen hozzáállást én nagyon sürgősen elfelejteném és a saját érdekemben megváltoztatnám a kódolási szokásaimat. Lehet hihetetlen, de akkor leírom: Ne csak olvasd el, hanem tartsd is be, azokat a szabályokat.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
...
yeah, wathever....
holnap kijavítva berakom ide
*----*----*
$node ? 'alma' : 'bor'
*----*----*
köszi
a segítséget! az mitől függ, hogy mennyi '%' jel kell?
végülis, ha egy string karaktersorozatot várok akkor nem elég csak '%s'?
a másik kérdés, {} azon kívül, hogy ellátja prefixummal a táblát jó még valamire, vagy csak a coding standard része?
--
A jó ember az ő szívének jó kincséből hoz elő jót; és a gonosz ember az ő szívének gonosz kincséből hoz elő gonoszt: mert a szívnek teljességéből szól az ő szája. (Lukács 6:45)
Mit akarsz attól függ
az mitől függ, hogy mennyi '%' jel kell?
Attól mit akarsz. Ha azt akarod, hogy '%alma' akkor az alma helyett kell %s és a % helyett kell %%.
végül is, ha egy string karaktersorozatot várok akkor nem elég csak '%s'?
Akkor igen, de Te itt az sql mondatban is használsz % jelet. (nézz utána az SQL kézikönyv LIKE-ról szóló fejezeténél)
a másik kérdés, {} azon kívül, hogy ellátja prefixummal a táblát jó még valamire, vagy csak a coding standard része?
Első közelítésben igen, de nem mernék rá megesküdni, hogy később valaki valamiért nem fogja kihasználni azt, hogy ezt mindig kötelezően ki kell tenni. Pl. bizonyos funkciók nem mennek, ha nem nagy betűvel írod az SQL kulcsszavakat. Szóval ez nem csak olyan "nézzen ki szépen a kód" hóbort.
Nem szabad továbbá elfelejteni, hogy a szabad szoftver az mindig egy közös alkotás színtere, ezért érdemes a közösség által kitalált játékszabályok szerint játszani. Még akkor is, hogyha most úgy tűnik a kódodat nem fogod megosztani... mert mint látjuk már meg is osztottad. ;)
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Végleges
Üdv megint,
Kijavítottam a hibákat, használjátok egészséggel
Nyah, örvendtem
*----*----*
$node ? 'alma' : 'bor'
*----*----*