- Android alkalmazások - szoftver kibeszélő topik
- CMF Buds Pro 2 - feltekerheted a hangerőt
- iPhone topik
- Samsung Galaxy Watch7 - kötelező kör
- Megjelent a Poco F7, eurós ára is van már
- Telekom mobilszolgáltatások
- One mobilszolgáltatások
- Vivo X200 Pro - a kétszázát!
- Mobil flották
- Okosóra és okoskiegészítő topik
Új hozzászólás Aktív témák
-
Más jellegű kérdés. Számít az valahol is, hogy az SQL query-ben mikor használok \"$valtozo\"-t, vagy '$valtozo'-t vagy simán $valtozo-t, netán '".$valtozo."'-t? Úgy vettem észre, hogy többféleképpen is működik, szóval nem tudom, hogy melyik a helyes...vagy teljesen mindegy ez? Működjön, és kész?
-
-
válasz
PumpkinSeed #2264 üzenetére
Jogos, azt nem mondtam, hogy PHP-ben kellene megoldanom. Irány a PHP topic...
-
Üdv ismét!
SQL injection ellen mi (vagy mik) a legjobb függvények? Ezt találtam: mysql_real_escape_string(), és kérdeznélek benneteket, hogy ez elegendő, vagy küldjek rá még másik függvényeket is?
(Nem OOP a projekt, hanem az alap mysql_* függvényeket használom.)Más: eddig ha ' (aposztróf) karakter szerepelt a beszúrt mezőben, akkor mindig hibát dobott az SQL. Most, hogy lekezeltem minden beviteli mezőt mysql_real_escape_string() függvénnyel, már bekerülnek az '-os stringek is az adatbázisba. Ez így rendben van, vagy ezzel nyitottam egy biztonsági rést?
-
-
-
-
válasz
DNReNTi #2255 üzenetére
Igazából nem fontos, hogy nullázni tudjam, csak tesztelés fázisban vagyok az oldallal, aztán azt gondoltam, hogy én állítottam be valamit rosszul, és azért nem engedi törölni. Főleg azért gondoltam, hogy én szúrtam el, mert teljesen üres táblákon sem működik, de ezek szerint nem ott van a gond, hanem egyszerűen az adatbázis nem fogja sohasem engedni.
Marad a törlés, és újra létrehozás. Azzal nullázódnak az indexek, és végülis az a cél...
-
-
-
Üdv mindenkinek!
Szeretném üríteni a tábláimat, hogy az indexek visszaálljanak nullára, és teljesen üresek legyenek a táblák.
Szerintem nektek már ismerős lesz, ezt kapom: #1701 - Cannot truncate a table referenced in a foreign key constraint [...]
A táblákat úgy hoztam létre, hogy minden "FOREIGN KEY" után odaírtam az "ON DELETE CASCADE ON UPDATE CASCADE"-t, de ezzel sem javult a helyzet. Olvastam, hogy ha a "FOREIGN_KEY_CHECKS = 0"-t beállítjuk, majd ürítjük a táblát, és visszaállítjuk a "FOREIGN_KEY_CHECKS"-t, akkor működik az ürítés, de ez gondolom a favágó módszer...szóval nincs valami egyszerűbb megoldás?Ha újra kell tervezni hozzá az adatbázist, akkor tárgytalan, mert lehet, hogy sohasem fogom használni az ürítést, vagy ha mégis használom, akkor minden táblát ürítek, szóval akkor már inkább DROP-olom, és létrehozom újra...
-
-
-
Üdv mindenkinek!
Tudtok valami módot arra, hogy milyen módon lehet azt visszajeleztetni mysql-lel, ha egy táblában történt változás?
Úgy módosítok egy táblát, hogy feltételhez kötöm, hogy egy felhasználó módosíthassa a rekordokat, avagy sem. Ezt úgy érem el, hogy PHP alól a jogosultságnak megfelelően alakítom ki a lekérdezés szövegét. Le is fut, és jól is csinálja, amit csinál, viszont ha így akarom megtudni az eredményt:
if ( mysql_query( $query ) ) {
echo "siker";
}
akkor minden esetben "siker"-t kapok vissza, én pedig csak akkor szeretném ezt visszakapni, ha tényleg módosult valami a táblázat adott sorában - az előző állapothoz képest.Szóval ha lefutott a kifejezés, de nem változtatott semmit a táblán, akkor azt akarom visszakapni, hogy "nincs jogosultságod".
Nem tudom, mennyire volt érthető a problémám, de köszönöm a segítséget előre is!
-
-
válasz
bambano #2181 üzenetére
Akkor nem értem, nálam miért csak úgy fogadja el.
Pedig már közel állok az igazsághoz.
Illetve probléma még az is, ha a mezőben, amiben keresek, több szó van, szóközzel elválasztva. Akkor azt nem találja meg. Pl. a mező tartalma: "találj meg", és ha beírom a keresőmezőbe, hogy "találj meg", akkor nem ad találatot.
Összefűztem a CONCAT()-tal SQL-ben, és | jelek vannak a keresőkifejezésben. Hát nem tudom, mi lehet a baj.
Nem akad össze a | jel? Mert a CONCAT()-ban is azokat használom.Hogy értetted, hogy VAGY-gyal csináljak egy végső logikai kifejezést?
-
válasz
bambano #2178 üzenetére
Köszi a választ, félsiker már van.
Szűkíti a találati listát, viszont ahhoz, hogy eredményt kapjak, abban a sorrendben kell beírnom az adatokat, ahogy az összefűzésben szerepel.
Ezt írtam:
WHERE CONCAT(mezo1,'|',mezo2,'|',mezo3,'|',mezo4) LIKE \"%$keresokifejezes%\"A $keresokifejezes-ben így|szerepelnek|a|beírt|szavak.
Ezekből csináljak VAGY-gyal egy végső kifejezést, amiben az összes előforduló sorrend szerepel? Szóval lesz egy tekintélyes hosszúságú SQL lekérdezésem?
-
válasz
bambano #2175 üzenetére
Próbáltam több módon is a LIKE-al, DISTINCT-el, de vagy az van, hogy én mondtam rosszul, amit el akarok érni, vagy valamit rosszul írtam a PHP-ban, vagy te értelmezted rosszul...a fene se tudja, a lényeg, hogy nem sikerült összehozni.
Nem értem azt sem, hogy miért nem kell lefutnia többször a query-nek? Van 4 mezőm, amiben keresni akarok, és mindezt úgy, hogy minden egyes beírt szóra megnézem, hogy illeszkedik-e bármelyik mezőre is.
Szóval beírom, hogy "ezt akarom megkeresni", és ebből - értelmezésem szerint - mindhárom szót meg kell néznem mind a 4 mezőn. (Tehát annyiszor futtatom a query-t, ahány szót megadok neki.)Azt már elértem, hogy csináltam egy tömböt, amibe beletettem mindegyik keresőszót, és ezen végigmentem, majd lefuttatom a query-t mindegyik szóra. Vissza is adja, hogy melyik indexeket találta meg (és ráadásul jót ad vissza), de ott akad meg a dolog, hogy ezeknek nem tudom a metszetüket venni. 99% hogy ez így működne, ha tömbökbe tudnám tenni a keresések eredményeit, mert azoknak tudom metszetüket venni.
Ha van ennél egyszerűbb módszer, akkor szívesen meghallgatom azt is, de így most tanácstalan vagyok.
A lényeg ugye az lenne, hogy csak azt a sort (esetleg sorokat) adja vissza a legvégén, amelyikre az összes beírt kifejezés passzol, vagyis a metszetüket.
Tehát:
...WHERE
mezo1 LIKE '%$keresokifejezes%' OR
mezo2 LIKE '%$keresokifejezes%' OR
mezo3 LIKE '%$keresokifejezes%' OR
mezo4 LIKE '%$keresokifejezes%'
...és persze minden mezőt minden kifejezésre meg kellene vizsgálnom. -
-
-
Na, aludtam egyet a dologra. Jó lenne nekem a LIKE is, de azt kellene elérni (viszont ezt már PHP szinten), hogy ráküldöm a keresőkifejezést mindegyik (esetemben 4) rekordra pontosan annyiszor, ahány szót írt be a felhasználó.
Erre gondolok:
A kifejezés legyen: "most ezt szeretném megkeresni", és legyen 4 rekord, amiben keresni akarok.
1.) "most" -> keresi 1-2-3-4-ben -> visszaadja pl. 1-2-3-4-et
2.) "ezt" -> keresi 1-2-3-4-ben -> visszaadja pl. 1-2-4-et
3.) "szeretném" -> keresi 1-2-3-4-ben -> nem ad vissza semmit
4.) "megkeresni" -> keresi 1-2-3-4-ben -> visszaadja pl. 1-4-etEzután össze kéne gyűjtenem a találatok sorainak indexeit, de úgy, hogy a metszetüket venném, és akkor a végén csak azt adnám vissza, amelyik mindegyikre találatot adott, a példa szerint 1-es és 4-es lenne a találat.
Itt jön a kérdés, hogy PHP-ben ezt hogy tudom elérni...
MOD: hm, array_intersect(); ?
-
válasz
martonx #2167 üzenetére
Húha, lehet, hogy én mondtam rosszul, de nem értem, pontosan mire gondolsz.
Azért kellene a REGEXP, mert az ilyen formában várja a stringet: most|ezt|szeretném|megkeresni.
Ha LIKE-ot használok, az a szóközzel nem tud mit kezdeni. Viszont a REGEXP-nél meg tudom azt oldani, hogy a beírt stringben lecserélem a szóközöket | jelekre, és odaadom az SQL lekérdezésnek.De amit írtál, arra alszok egyet. Lehet, hogy az lesz a megoldás, hogy egymásba kell ágyazni az ÉS-eket és a VAGY-okat.
-
válasz
Apollo17hu #2166 üzenetére
Nem feltétlen 4 szót adhat meg, viszont 4 mezőben kellene keresnie.
A REGEXP-et itt a fórumon javasolták. A LIKE azért nem jó, mert azzal alapból nem tudok több kifejezést vizsgálni egyidőben. Illetve tudok, mert leprogramoztam PHP-vel, de elég bonyolult lett, és pazarol is az erőforrással. Ha több felhasználó is használja az oldalt, akkor szerintem szép kis SQL vihart csinálnának.
Szóval a REGEXP jó lenne, csak a feltételekkel vagyok bajban.
-
Üdv!
REGEXP segítségével keresek egy adatbázisban (a keresőkifejezésben a szóközöket |-re cseréltem), és azt szeretném elérni, hogy több beírt keresőszó esetén szűkítse a találati listát az SQL. 4 mezőben keresek, és ezeket OR köti össze, viszont így az a probléma, hogy minél több szót írok be, annál több találat lesz.
Nem tudom, mennyire érthető, mit akarok kinyökögni. Próbálom illusztrálni. Adott 2 sor a táblában:
1.) Danone - joghurt - epres - 125g
2.) Danone - joghurt - barackos - 125gHa beírom, hogy "epres", akkor csak az elsőt találja meg, de ha azt írom be, hogy epres joghurt, akkor megtalálja mindkettőt, és én azt szeretném, ha csak azt a sort találná meg, ahol mindkettőt rá tudja illeszteni.
Túl egyszerű lenne, ha AND kötné össze a REGEXP-eket, mert akkor ugye mind a 4-en rápróbálja, és ha akár egyik nem hoz eredményt, már nincs is eredménye a keresésnek. Ha mind a 4 mezőnél egyezést talál, akkor persze jót ad vissza, de minél több mezőt kell megadni, annál kisebb az esélye, hogy a felhasználó kap eredményt...
Szóval értitek, mi a problémám...? Van valami relatíve egyszerű megoldás erre?
-
Működik, frankó!
-
Köszi a választ mindkettőtöknek! Egyelőre nekem az a lényeg, hogy működjön. Nem probléma, ha nem hatékony az erőforrásokkal...stb.
A keresést illetően bőven elegendő, ha az "alma" kifejezésre megtalálja a szükséges sorokat.
-
Üdv mindenkinek!
Azt szeretném kérdezni tőletek, hogyan lehet variálni a rész-stringekkel SQL-ben?
Csak azokat a sorokat szeretném kiszedni a táblából, amire (vagy aminek egy részére) ráillik egy adott kifejezés. Pl. ilyen sorok vannak a táblában, hogy
almafa
körtefa
almabor
meggyleves
almalé
és én azt szeretném elérni, hogy minden olyan sort visszaadjon, amiben bárhogyan is szerepel, hogy "alma". Ha egy az egyben beírom a cella tartalmát, úgy megtalálja, de nem várhatom el a felhasználótól, hogy 100% pontossággal beírja a cella tartalmát mondjuk egy keresőmezőbe. Gondolom értitek, mit akarok itt kinyökögni...Mi erre a legegyszerűbb megoldás?
Köszi a segítséget előre is!
-
válasz
fordfairlane #2052 üzenetére
De, volt téma, pont én hoztam fel, de hiába olvasom a könyveket, én csak konkrét példa alapján tudom értelmezni ezeket.
Köszönöm, ez alapján már el tudok indulni!
Tudom, hogy ilyenekkel nem szép dolog offolni a fórumot, de nálam ez a leghatékonyabb módszer arra, hogy megértsem. Mármint, nem az offolás, hanem ez a konkrét-példás móka.
-
-
válasz
sztanozs #2048 üzenetére
Köszönöm, akkor legalább ezt már értem.
Oké, a kapcsolótáblán keresztül felbontom a több-a-többhöz kapcsolatot. Lekérdezésnél mindenképp JOIN kell, ha például azt akarom megtudni, hogy egy adott áruházban milyen termékeket vásárolhatok meg?
Mert - érzésem szerint - valahogy mindenképp bele kell venni a kapcsolótáblát is a lekérdezésbe, de hogy hogyan, az egyelőre nekem rejtély. -
Üdv mindenkinek!
Arra kérnélek benneteket, hogy illusztráljátok konkrét példával, vagy csak simán konyhanyelven, hogy a több-a-többhöz kapcsolat esetén mi szükség van a kapcsolótáblára? Az addig rendben van, hogy bele kerül mindkét elsődleges kulcs, de ebben mi a pláne?
Leírom a saját példámat, kérlek véleményezzétek, jól értem-e a dolgot. Az egyik egyed legyen "termék", a másik pedig "áruház". Egy áruházban megtalálható több termék is, és egy termék több áruházban is megtalálható.
Tehát készítek például egy "megtalálható" nevű kapcsolótáblát, ebbe kerül 2 elsődleges kulcs, ami mutatni fog a "termék" és az "áruház" tábla elsődleges kulcsaira. Ebből azt tudom majd megmondani, hogy egy adott termék mely áruházakban van, illetve fordítva, vagyis hogy egy adott áruházban milyen termékek vannak? Tehát ennyi lenne a kapcsolótábla szerepe?A másik, ami még érdekelne, hogy SQL szinten ezeket hogy lehet bepötyögni, hogy megértse az adatbázis-kezelő rendszer? Olvastam REFERENCES kulcsszót is, meg valami CASCADE-t is, de utóbbit nem igazán tudtam értelmezni, hogy mire jó.
Aztán van még jópár problémám, például hogy miként töltöm fel a kapcsolótáblát? Sima INSERT, ahogy egy "átlagos" táblába szúrnék be, vagy van valami speciális kapcsolója?
Az a problémám, hogy a neten fellelhető doksik többnyire angol nyelven vannak, és hiába értem meg magát az angolt, ha ott olyan szavakkal dobálóznak, amit amúgy magyarul sem értek...
Köszi a válaszokat előre is!
-
válasz
Apollo17hu #2035 üzenetére
Igen, lényegében a szabály alapján is így kell eljárnom, ha egy-a-többhöz kapcsolat lesz. De még lerajzolom párszor, meg átgondolom, aztán majd jelentkezem, hogy mire jutottam.
-
válasz
Apollo17hu #2033 üzenetére
Húh, lehet, hogy nem értjük egymást, bár szerintem én is körülményesen magyaráztam.
Amit mondasz, az lehet, sőt biztos, hogy működne, de az a probléma, hogy esetemben kezdésnek 0 felhasználó és 0 termék van, szóval nem kivitelezhető, hogy előre felvigyem őket.
Gondolkoztam, és lehet, hogy így nem is logikus, mert mi a fenéért vinné fel több felhasználó is ugyanazt a terméket?! Tehát annyiban módosítani kell majd az ábrát, hogy egy felhasználó több terméket is felvihet, viszont egy adott terméket csak egy felhasználó vihet fel. De ebben az esetben az időpont sem kell, mert teljesen mindegy, mikor vitte fel, nincs jelentősége...
Szóval akkor egy-a-többhöz lesz, és innen már más a helyzet. Na, ezt még át kell gondolnom...
-
Üdv mindenkinek!
Feltettem már a kérdésemet több topicban is, aztán martonx fórumtárs javaslatára idetévedtem, és megkérdezlek benneteket is a dologról.
Adott a következő részlet egy EK diagramból, ezt szeretném átírni relációs adatbázisba:
Elméleti szinten megy a dolog, viszont az SQL-lel bajban vagyok. Ami "biztos", hogy 3 táblám lesz. A felhasználó és a termék marad ugyanúgy, de kell készítenem egy kapcsolótáblát, legyen mondjuk feltöltötte, ami megkapja a felhasználó és a termék tábla elsődleges kulcsát, és ez a kettő együtt lesz az idegen kulcsa, valamint megkapja a kapcsolat tulajdonságát is.
Innentől van a gond, mert nem tudom, hogy miként tudom helyesen feltölteni az adatbázist...
Például olyan lekérdezésekre szeretnék választ kapni, hogy Józsi milyen termékeket töltött fel?, vagy hogy a Danone joghurtot ki töltötte fel?.
A kapcsolótábla teljesen megzavar, ezt hogy kell létrehozni SQL-ben, és aztán feltölteni bele?
-
-
Hm, ez igaz. A lényeg, hogy én úgy akarok felvenni minden alkatrészt, hogy megadom a felvételnél, hogy melyik autótípusokba lehet beépíteni. Itt jön a következő gond, hogy például ugyanazt a féktárcsát beépíthetem 8 féle autótípusba is, akkor azt a rekordot 8x kell felvennem, csak más autókkal?
-
-
Üdv!
Lenne egy alap kérdésem. Access-es beadandót csinálok, és egy alap dologgal nem vagyok tisztában.
Itt egy kép, amivel kapcsolatban kérdezni szeretnék:
Ez egy részlet egy ER modellből. Mivel ez egy több-a-többhöz kapcsolat, a relációs modellben megvalósítom az egyedeket külön külön, plusz csinálok egy kapcsolótáblát, amibe belerakom az elsődleges kulcsokat. Eddig ok. Amit viszont nem tudok, hogy az adatokat hova, melyik táblába kell felvinni?
Én úgy érzésre azt mondom, hogy ha fel akarok venni egy alkatrészt, akkor meg kell adnom a kapcsolótábla "típus_név" mezőjét is, és így jelölöm, hogy milyen autóba passzol? Jól látom, vagy teljesen butaság, amit beszélek?Köszi!
-
válasz
Apollo17hu #1441 üzenetére
Azám'! Szóval?
-
Üdv mindenkinek!
Előre elnézést kell kérnem, hogy ilyen nevetségesen egyszerű témában kérem a segítségeteket, de nem találtam alkalmasabb topicot. Szóval...
Meg kellene valósítanom egy komplett adatbázist, a nulláról indulva: specifikáció -> ER modell -> relációs modell -> Access-es megvalósítás. Sajnos nincs sok gyakorlatom a témában, ezért ötleteket várnék - ti mit és hogyan csinálnátok?Kiindulásnak annyi adott, hogy egy autóalkatrész-katalógust szeretnék megvalósítani. Vannak alkatrészek és gyártók (plusz amit még javasoltok). A cél az lenne, hogy egy on-line alkatrész-adatbázishoz hasonlót hozzak létre, ahol a felhasználó különféle szűrések szerint tud keresni a rekordok között.
Olyanra gondolok, hogy ha például ugyanaz az alkatrész jó Opel Astra-hoz, és mondjuk Suzuki Swift-hez, akkor ezt megtalálja a kereső...stb.Persze tetszőlegesen el lehet (kell) bonyolítani, mert az is kikötés, hogy azért ne faék egyszerűségű legyen a feladat.
A gondom az, hogy nem csináltam még ilyet, és nem is nagyon látom a végét. Merre lenne érdemes elindulnom? Minden ötlet/megoldás érdekel!
Köszi a segítséget előre is!
Új hozzászólás Aktív témák
Hirdetés
- Vezetékes FEJhallgatók
- Miskolc és környéke adok-veszek-beszélgetek
- Óvodások homokozója
- A nagy Szóda, Szódakészítés topic - legyen egy kis fröccs is! :-)
- Kecskemét és környéke adok-veszek-beszélgetek
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Revolut
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- 3D nyomtatás
- További aktív témák...
- DELL PowerEdge R630 rack szerver - 2xE5-2650v3 (20 mag / 40 szál, 2.3/3.0GHz), 32GB RAM, 55992Ft+ÁFA
- LG 27GR93U-B - 27" IPS - UHD 4K - 144Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDR 400
- BESZÁMÍTÁS! 4TB Samsung 870 EVO SATA SSD meghajtó garanciával hibátlan működéssel
- Újszerű Asus ExpertBook B1 B1500 - 15.6" FullHD IPS - i5-1235U - 16GB - 512GB SSD - Win11 - Garancia
- Beszámítás! Apple Mac Studio M2 MAX 2023 32GB 512GB SSD számítógép garanciával, hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged