whiteoperator Posted February 18, 2008 Posted February 18, 2008 Kösz! Eredmény itt, a fórum rész alatt.
Doc Posted February 20, 2008 Posted February 20, 2008 Hali! Egy olyan kérdéssel fordulok hozzátok, ami számomra túl nagy falat. Egy egyszámjáték (mindenki tippel egy számot, és az a nyerõ aki a legkisebb számot tippelte egyedül) játékot kéne megszerkeszteni, lehetõleg webes felületen, így az elsõ kérdésem, hogy tud-e valaki ilyen kész szkriptet? A második, ha megpróbálnám PHP-ben összehozni mysql nélkül (szorít az idõ) van-e rá mód, hogy sima TXT-be irányítsam a form adatait (pontosvesszõvel elválasztva), amit késõbb konvertálok excel-be? Mennyire bonyolult egy ilyen feldolgozó PHP szkript? Köszi!
Gereby Posted February 20, 2008 Posted February 20, 2008 Szerintem MySQL-lel könnyebb, de txt-vel se nehéz. TXT-nél arra vigyázz, hogy a szerveren amin futtatod a progit engedélyezve legyenek a file kezelő függvények.
Doc Posted February 21, 2008 Posted February 21, 2008 Félsiker. Megírtam a szkriptet, de 5-6 adat beírása után teleszórja null értékekkel a txt fájlt, és átteszi binárisba . Mitõl lehet? MYSQL-bõl lehet kinyerni adatokat excel-be? Illetve MYSQL-en belül rendezni? Itt a kód. <?php $fp = fopen ('szoveg.txt', 'a'); fwrite($fp, $_POST['nev'].'; '.$_POST['szoveg']."\r\n"); fclose($fp); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <form method="POST" action="index.php"> <input type="text" name="nev"> <input type="text" name="szoveg"> <input type="submit"> </form> <?php readfile('szoveg.txt'); ?> </body> </html>
Kiskalóz Posted February 21, 2008 Posted February 21, 2008 MYSQL-ből lehet kinyerni adatokat excel-be? Igen: CSV. Illetve MYSQL-en belül rendezni? Igen.
Doc Posted February 21, 2008 Posted February 21, 2008 Minden jó, és minden szép Egy fontos kérdés, amire viszont nem találtam választ sehol: A beviteli mezõkben benne marad az elõzõ szavazat, ami ugyebár tönkreteszi a játékot. Kérdés, hogy ezt lehet valahogy eltüntetni minden szavazás után szerver oldali szkriptel? Megvizsgáltam, de nem cookie-ban tárolja az adatokat.
molnid Posted February 21, 2008 Posted February 21, 2008 maximum a böngészõd automatikusan kitölti. szerintem elég lenne megadni a mezõknek, hogy value="" és üres maradna. amúgy meg kapásból írhatnál csv file-ba is, ha még mindig file-t használsz. annyi az egész, hogy ';' legyen az elválasztó és a file kiterjesztése 'csv'. ezután meg már csak arra kell figyelni, hogy ha a postolásnál valamelyik mezõbe nem írnak semmi, akkor az nem jön létre a POST tömbben, így mikor file-ba írnád, akkor nem jó csak foreach ($_POST as $k => $v) hanem inkább hozz létre egy tömböt az elején, amiben csak a mezõk nevét tárolod és azon kell végiglépni. $mezok = array('nev', 'szoveg'); foreach ($mezok as $m) { $ki = isset($_POST{$m}) ? $_POST{$m} : ''; fwrite($f, $ki . ';'); } így ha sok oszlop van megmaradnak üresen az üresek és a megfelelõ alá kerül a köv kitöltött érték is.
Gozo Posted February 21, 2008 Posted February 21, 2008 Sziasztok! A következõ problémába futottam bele: adott egy mysql adatbáziskezelõ ebben szeretném beállitani az újonnan regisztráló felhasználóknak regisztráláskor, hogy melyik adatbázis melyik táblájához milyen jogokkal férjen hozzá. Ehhez egy php függvényt hivok meg ami a megfelelõ felhasználó táblába bejegyzi az új felhasználó adatait és jogokat ad a megfelelõ adatbázis megfelelõ adattábláihoz. Itt van a problémám! A GRANT parancsba nem tudom beszurni a regisztrációs ürlapról POST-olt felhasználói nevet és jelszót. Itt a kód lényegi része: function urogzit($fnev,$jelszo) { $dbhost = "localhost"; $dbuser = "rootneve"; $dbpass = "rootjelszava"; $dbname = "mysql"; $kapcsolat = mysql_connect($dbhost,$dbuser,$dbpass); mysql_select_db($dbname,$kapcsolat) or die("Nem sikerült az adatbázisszervehez csatlakozni, MySQL hibaüzenet:" . mysql_error()); $sql="GRANT SELECT ON db1.userek TO $fnev@"%" IDENTIFIED BY $jelszo"; mysql_query($sql) or die("Nem sikerült az adatbázisszervehez csatlakozni, MySQL hibaüzenet:" . mysql_error()); mysql_close(); } Ha ezt a kódot használom ezt a hibaüzenetet kapom vissza: "Warning: Division by zero in D:\WEBDEV\websites\proba\ufel.php on line 23 Nem sikerült az adatbázisszervehez csatlakozni, MySQL hibaüzenet:Query was empty" Ha valaki esetleg megtudná mondani hol a hiba, nagyon megköszönném. (gyanum szerint a függvény paraméterként kapott változóit nem megfelelõen szurom be az sql GRANT utasításba) Köszi: Gozo
h.arpad Posted February 21, 2008 Posted February 21, 2008 De melyik a 23. sor nálad? 'someuser'@'somehost' a helyes használat, ha jogosultságot adsz valakinek: $sql="GRANT SELECT ON db1.userek TO '$fnev'@'host' ..." Kb. ez lenne a helyes nálad, ahol a 'host' a MySQL host neve (amit beállítottál, vagy a szolgáltató megadott.) A lekérdezést illik elõbb pl. phpMyAdmin-ban lefuttatni, és ha ott hibátlan, akkor beszúrni a kódba, ha nem vagy biztos a szintaktikában.
molnid Posted February 21, 2008 Posted February 21, 2008 - szerintem érdemes a connecthez egy külön függvényt használni. - "-jel simán megszakítja a PHP string értékadást. tehát a nyitó " után az elsõ " -nél vége. h.arpad már rávilágított a lényegre. saját megszokásom alapján én a változókat nem szoktam beletenni a stringbe, valamiért biztonságosabbnak érzem az összefûzést: "blabla " . $valtozo . " bla blabla". persze ez már csak az ízlések és pofonok rész.
Gozo Posted February 22, 2008 Posted February 22, 2008 De melyik a 23. sor nálad? 'someuser'@'somehost' a helyes használat, ha jogosultságot adsz valakinek: $sql="GRANT SELECT ON db1.userek TO '$fnev'@'host' ..." Kb. ez lenne a helyes nálad, ahol a 'host' a MySQL host neve (amit beállítottál, vagy a szolgáltató megadott.) A lekérdezést illik előbb pl. phpMyAdmin-ban lefuttatni, és ha ott hibátlan, akkor beszúrni a kódba, ha nem vagy biztos a szintaktikában. Szia! Köszönöm a segítséget. Egyébként kiszoktam elötte próbálni phpmyAdmin-ban csak itt ugye a függvény paramétereként kapott változók miatt nem tudtam ezt megtenni. Vagy erre is van mód? Egyébként a hiba ott volt, hogy amikor sima aposztroffal próbáltam (mert próbáltam ugyis mielőtt segitséget kértem volna) a host helyén szereplő százalék jel körül maradt a dupla idézőjel: '$fnev'@ "%" Ezt reklamálta. Köszi, hogy rávezettél a megoldásra. Gozo Molnid! Köszönöm Neked is!
Doc Posted February 22, 2008 Posted February 22, 2008 Köszi! Azóta letettem a fájlról, gyorsan elsajátítottam a MYSQL alapjait, és már CSV-be is tudok exportálni. Viszont az automatikus kiegészítés probléma továbbra is probléma. Egyértelmûen a böngészõ automatikus kiegészítés funkciója okozza a problémát, és a value="" sem segít. Találtam pár java scriptet, de ezek mind a value értéket nullázzák kiválasztásnál. Elképzelhetõ, hogy valahogy blokkoljam szerver oldalon a tárolást? Vagy milyen megoldás lehetne, hogy ne dobja fel a korábbi adatokat? Létezhet olyan script ami a böngészõ ezen funkcióját kikapcsolja?
molnid Posted February 22, 2008 Posted February 22, 2008 Bevallom õszintén, én még nem találkoztam ilyennel. Elvileg a valu="" -nek hatásosnak kléne lennie. Ezek szerint az oldal legenerálása után veszi elõ a böngészõ a formhoz tartozó megjegyzett szövegeket és töltiki. Sajnos azok a scriptek amik a böngészõ mûködését, beállításait befolyásolhatná, teljesen böngészõfüggõ. Ráadásul ehhez is engedély kell, hogy lefuthasson, én ilyennel nem próbálkoznék. Akkor már inkább egy javascriptet raknék a végére, ami végigmegy a form elemein és kiüríti azok értékeit. Persze ehhez is eleve engedélyezni kell a JS-t, de az ma már szerintem elég alap.
payskin Posted February 22, 2008 Posted February 22, 2008 @Doc: rettentően el vagyok havazva, de hétvégén lesz egy kis időm, ránézek a problémára.
molnid Posted February 22, 2008 Posted February 22, 2008 Én kipróbáltam egy egyszerû teszt révén, de nekem sehogy nem sikerült elérni, hogy automatikusan legyen kitöltve a form. Sem FF sem IE-ben nem sikerült. Elérhetõ, amit csináltál? Most már kiváncsi lettem.
Doc Posted February 24, 2008 Posted February 24, 2008 A form nincs kitöltve automatikusan, csak amikor rámegyek a mezõre, és beütök egy betût, akkor az automatikus kiegészítés beadja a korábbi beírt értéket. Természetesen elérhetõ a teszt példány kipróbálható itt: Link A jelszó: egyszám Végül SQL-ben tárolja az adatokat, és a tippek végén sql-ben szûröm az eredményt, mert statisztikát is kell csinálni (hányszor tippeltek egy adott számra), amit valószínûleg ugyan így kiíratok php-val.
molnid Posted February 24, 2008 Posted February 24, 2008 Ahham. Teljesen másképp értettem, azt hittem eleve kitölti. Ezt szerintem a böngészõ a mezõ elnevezése alapján jegyzi meg. Ki lehetne játszani úgy, hogy az elején generálsz mondjuk 4 karakter hosszú neveket és azok lesznek a form elemek nevei. mondjuk nev2101 és szoveg8712 ezután a $_POST tömbben csak foreach és akár tudod azonosítani is a neve alapján mert tudod mivel kezdõdik. Ha 8-10 karaktert generálsz, akkor nem valószínú, hogy ismétlõdik. Talán így nem fogja kitölteni automatikusan.
h.arpad Posted February 24, 2008 Posted February 24, 2008 Való igaz, a böngészők a form neve alapján töltenek ki valamit automatikusan. Le kell generáltatni egy véletlenszámot, vagy betűkből és számokból álló kombinációt form nevéhez. Itt írtam rá példát (én a jelszavak megjegyzésének elkerüléséhez használom.) A főoldalon, a Bejelentkezés cím alatt láthatod hogy működik (a Jelszó mezőt kell nézni). Amit fontos észrevenni: egy session (azaz munkamenet) indítása szükséges.
Doc Posted February 25, 2008 Posted February 25, 2008 A probléma csak az, hogy a mysql-be a nevek alapján írom be az értékeket: <?php $host='*'; $user='*'; $pass='*'; $dbase='*'; $kapcsolat=mysql_connect($host, $user, $pass); if (! $kapcsolat) die ('Nem lehet csatlakozni'); mysql_select_db($dbase) or die ('Nem lehet megnyitni az adatbázist:'.mysql_error() ); $nev = $_POST['nev']; $szam = $_POST['szam']; $oszt = $_POST['oszt']; ?> <?php $rogzit=mysql_query("INSERT INTO egyszam (oszt, nev, szam) VALUES ('$oszt', '$nev','$szam')") ?> Szavazatodat tároltuk!<br /> Ha a name mezõ változó, azt azonosítani tudja így? $nev = $_POST['<?php print $_SESSION['passwf']; ?>']; Kipróbálni még nem tudtam
payskin Posted February 25, 2008 Posted February 25, 2008 Ha, mondjuk a form felépítésénél mindegyikhez hozzáraksz egy 4 karakteres kódot, akkor a feldolgozásnál csak annyit kell csinálni, hogy futtatsz egy ciklust a $_POST tömbre, lekapod minden mezőnévnek az utolsó 4 karakterét, és megnézed, hogy ami marad, az név, szam vagy oszt, és ugyanígy berámolod őket a változókba, aztán írhatod is ki az adatbázisba. foreach ($_POST as $mezo => $ertek) { $akarmi = $mezo az utolsó négy karaktere nélkül switch ($akarmi) { case 'nev' : $nev = $ertek; break; stb. } } kiír mysql, örül
Doc Posted February 25, 2008 Posted February 25, 2008 Köszi! Kezdem kapizsgálni, csak időm nincs, hogy processzoridőt fordítsak a feldolgozásra, egyenlőre tárolom a memóriában, de remélem délután már tudok foglalkozni vele. Na belenéztem, de lassan kitépem a maradék hajam. A hibaüzenet: Parse error: syntax error, unexpected T_SWITCH in /nfs/extra/g/gr/grasimatek/wwwroot/egyszam.php on line 13 A kérdéses sor meg a switch: foreach ($_POST as $mezo => $ertek) { $akarmi = substr("$mezo", 3) switch ($akarmi) { case 'szam': $szam = $ertek; break; } } a form-ban szam$rand-al generáltam, ahol a $rand 0-9999 ig mehet. Mi lehet? Az én szakavatatlan szemem nem fedezi fel a hibát. ír:
payskin Posted February 25, 2008 Posted February 25, 2008 Unexpected = lehagytad a pontosvesszőt az előző sor végén! És tényleg. Ez az "Úristen! Hogy kerül ide egy switch?! Fusson, ki merre lát!!! " jellegű hiba a PHP értelmezőtől, aztán később: "Ja, csak egy pontosvessző kellett? Akkor jó, mehetünk tovább."
Doc Posted February 26, 2008 Posted February 26, 2008 Köszi! Pár apróbb hibát még korrigáltam, de tökéletesen működik. Mondjuk ha nem mentőztem volna suli mellett 24 és 12 órás műszakban, akkor lehet, hogy kevesebbszer aludtam volna el programozás órán... Sebaj, pedálozok, hogy felhozzam magam. Tele vagyok ötletekkel, már csak a megvalósításukat kell valahogy kitalálnom. Valószínűleg jövök még tanácsért...
Csaba_1 Posted February 29, 2008 Posted February 29, 2008 Sziasztok! Légyszi világosítsatok fel erről a számomra nagy rejtélyről: Nemrég kezdtem el tanulni a PHP-t meg a MySQL-t és feltűnt, hogy ugye a PHP a forráskódban tárolja az SQL-nek kellő jelszót. Az lenne a kérdésem, hogy hogyan oldódik meg ennek a jelszónak a titkosítása, mert mi van ha valaki egy letöltéskezelővel letölti ezt a file-t. Szerintem tuti van rá valami egyszerű megoldás, de mi az? ui: Légyszi ne szidjatok le, ha butaságot kérdeztem és rossz helyen!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now