Jump to content
GSForum - Segélyvonal

PHP kérdésem van


Recommended Posts

whiteoperator
Posted

Kösz!

Eredmény itt, a fórum rész alatt.

Posted

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!

Posted

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.

Posted

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>

Posted
MYSQL-ből lehet kinyerni adatokat excel-be?

Igen: CSV.

Illetve MYSQL-en belül rendezni?

Igen.

Posted

Minden jó, és minden szép :D

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.

Posted

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.

Posted

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

Posted

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.

Posted

- 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.

:)

Posted
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!

Posted

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?

Posted

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.

Posted

@Doc: rettentően el vagyok havazva, de hétvégén lesz egy kis időm, ránézek a problémára.

Posted

É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. :hááát:

Posted

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.

IPB kép

 

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.

Posted

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.

 

 

 

Posted

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.

Posted

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 :S

Posted

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

Posted

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. :D

 

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. :Sír:

Posted

Unexpected = lehagytad a pontosvesszőt az előző sor végén! ;) És tényleg.

 

Ez az "Úristen! Hogy kerül ide egy switch?! :o 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."

Posted

Köszi!

 

Pár apróbb hibát még korrigáltam, de tökéletesen működik. :ötlet: 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... :hááát: 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... ;)

Posted

Sziasztok!

 

Légyszi világosítsatok fel erről a számomra nagy rejtélyről: :upsz:

 

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? :D:cumizik:

 

ui: Légyszi ne szidjatok le, ha butaságot kérdeztem és rossz helyen!

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...