PHP-Script.hu
Kiemelt hirdetés:
2026. október 17. 01:48 szombat, ma Hedvig névnap van


grafika


Videóbázis


Kategória: PHP
Űrlapok feldolgozása PHP-ben
2007.03.30. 18:36

Manapság egy php alpú, motorú oldalon alapvető dolgok közé tartozik az űrlap feldolgozás. Az összes olyan oldalon ahol adatot küldünk el a szervernek (bejelentkező ablak, szavazás, keresés, cikk küldés) ott bizony találkozhatunk az űrlapfeldolgozással. Most ezt a műveletet fogom bemutatni egyszerűen.


Az adatot kétféleképpen küldhetjük el: POST (POSTDATA), és a GETsegítségével. Ezt a HTML tag-on belül a method-ba írhatjuk bele, tehát most a POSTDATA segítségével fogjuk továbbítani az adatot. A másik fontos dolog a HTML tag-on belül nekünk most az action, mellyel megmondhatjuk hogy hová küldje az adatokat, tehát lényegében a PHP űrlapfeldolgozó fájljára hivatkozunk itt például. Ám mielőtt ebbe belekezdenénk még tudnunk kéne milyen adatbázisba rakjuk be az adatokat, én most a legegyszerűbbet, legkezelhetőbbet választom, az SQL-t, ezen belül is a MySQL-t, mivel az ingyenes, és a legtöbb tárhelyen megtalálható.

MySQL-hez való kapcsolódás!

Ez egy viszonylag egyszerű feladat, szinte szó szerint csak pár sornyi kódot kell átmásolnunk a siker érdekében, de be is illesztem a szükséges kódot és utána elmagyarázom mi mit jelent, mi mire való.

MySQL kapcsolódás
1
2
$kapcsolat = mysql_connect("localhost","root","password");
$adatbazis = mysql_select_db("dbname",$kapcsolat);

A mysql_connect-el kapcsolódik a mysql szerverhez, 3 paramétere van a függvénynek:

  1.     A szerver címe, elérhetősége, általában localhost szokott lenni, de például extra.hu-nál felhasználónév.extra.sql .
  2.     Felhasználónév a MySQL szerverhez, ami sokszor egyenlő az oldaladhoz való felhasználneveddel.
  3.     Jelszó a MySQL szerverhez, itt is igaz az egyel fentibb állítás.

A mysql_select_db-nek két paramétere van: az első az adatbázis neve, ami sokszor ugyancsak megegyezik a felhasználónévvel, és a második paraméter pedig egy változó, aminek az értéke a mysql_connect rész, ahogy a fenti kódban látható. Általában érdemes lezárni a műveletek után a MySQL kapcsolódást, melyet a mysql_close függvény segítségével valósíthatunk meg.

MySQL kapcsolódás és lezárás
1
2
3
4
$kapcsolat = mysql_connect("localhost","root","password");
$adatbazis = mysql_select_db("dbname",$kapcsolat);
//ide jönnek majd az adatbázis műveletek
mysql_close($kapcsolat);

Ennyit gyorsban a MySQL kapcsolódásról.

Űrlap feldolgozása POST segítségével

Tehát akkor lesz elsőként egy olyan fájlunk, amit elküldünk az űrlapfeldolgozónak, legyen a neve például urlap.html

urlap.html
1
2
3
4
5
6
7
8
<form method="post" action="phpfeldolgozo.php"> Neved:<br>
<input type="text" name="nev"><br>
A cikk címe:<br>
<input type="text" name="cikkcim"><br>
A cikk tartalma:<br>
<textarea name="cikk"></textarea><br>
<input type="submit" value="Küldés">
</form>

Ebből következik az, hogy a feldolgozó fájlunk a phpfeldolgozo.php lesz, és ez egy kis egyszerűbb cikkküldő szerűségként szolgálhat a továbbiakban. Az egyes mezők értékeit jelen esetben a $_POST állandó tömb segítségével kaphatjuk meg, és a tömb dimenzióértékébe kell beírni a formban lévő input, vagy textarea nevét, tehát például $_POST['nev'] . Elsőként érdemes leellenőrizni, hogy nem üresek-e a mezők:

1
2
3
4
5
if ( !empty($_POST['nev']) and !empty($_POST['cikkcim']) and !empty($_POST['cikk']) )
{
//majd ide jön a feldolgozáshoz szükséges kódrészlet
}
else print "Az összes mezőt ki kell töltened!";

Ezzel sikeresen leellenőriztük az elküldött adatokat. Most jönne a feldolgozása az adatoknak. Ez lényegében már csak a MySQL feladata, ám nem árt sohasem átkonvertálnunk az elküldött adatokat, hogyha nem szeretnénk hogy mindenféle HTML kód működjön majd a kiíratáskor, ezt a BBcode nevű tutorialban találhatjátok meg ( itt ugyebár még számos lehetőség is megnyilvánul, tehát lehetőség nyílik szabványos bbcode használatára) . De azonban először sajnos fel kell építenünk a MySQL táblánk egyszerű szerkezetét.

MySQL adatbázis szerkezet
1
2
3
4
5
6
CREATE TABLE `cikk` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nev` varchar(255) NOT NULL DEFAULT '',
`cikkcim` varchar(255) NOT NULL DEFAULT '',
`cikk` text NOT NULL DEFAULT ''
) TYPE=MyISAM AUTO_INCREMENT=1 ;

És akkor most dolgozzuk fel végre adatainkat.

1
2
3
4
5
6
7
8
9
10
if ( !empty($_POST['nev']) and !empty($_POST['cikkcim']) and !empty($_POST['cikk']) ) {
 $kapcsolat = mysql_connect("localhost","root","password");
 $adatbazis = mysql_select_db("dbname",$kapcsolat);
 mysql_query("INSERT INTO cikk SET
 nev = '" . mysql_real_escape_string($_POST['nev']) . "',
 cikkcim = '" . mysql_real_escape_string($_POST['cikkcim']) . "',
 cikk = '" . mysql_real_escape_string($_POST['cikk']) . "'");
 print "Sikeresen hozzáadtad a cikket ".$_POST['nev']." !";
 mysql_close($kapcsolat);
} else print "Az összes mezőt ki kell töltened!";

Az adatbázisba adatbázisparancsokkal tudunk beilleszteni adatokat, melyet a szerver a mysql_query segítségével hajt végre. A végére kiírtuk kedvességből, hogy sikeresen elküldte a cikket, és a végére hozzáfűztük az illető által beírt nevet.

Űrlap feldolgozása GET segítségével

Itt már kicsit kevesebbet fogok magyarázni, mert nagyrésze hasonlít a POST-tal való feldolgozáshoz. A GET-et általában keresők működtetésére szokták használni, tehát akkor csináljunk egy keresőt a cikk táblánkhoz. A következő dokumentum neve legyen például kereses.html

1
2
3
4
<form method="get" action="kereseskuld.php">A keresett szó:
<input type="text" name="keres">
<input type="submit" value="Küldés">
</form>

Tehát akkor a feldolgozó fájl a kereskuld.php lesz, és a keresett szót pedig a POST-hoz hasonlóan $_GET['keres'] tömbbel tudjuk elérni. Itt sem árt leellenőriznünk, hogy beírt-e valamit a felhasználó. A következő kódrészletben, csak azt mutatom meg, hogy a mysql-ből hogyan érhetjük el az adatokat, a listázást, meg a többi részt már rátok bízom, kinek a for, kinek a while ciklus tetszik jobban.

1
2
3
4
5
6
7
if ( !empty($_GET['keres']) ) {
 $kapcsolat = mysql_connect("localhost","root","password");
 $adatbazis = mysql_select_db("dbname",$kapcsolat);
 $keresmuvelet=mysql_query("SELECT * FROM cikk WHERE cikkcim LIKE '%" . mysql_real_escape_string($_GET['keres']) . "%' OR cikk LIKE '%" . mysql_real_escape_string($_GET[keres]) . "%' ");
 // és ide fog jönni a listázás
 mysql_close($kapcsolat);
} else print "Nem írtál be semmit sem a keresés mezőbe.";

Ha esetleg nem tudod hogyan kellene a listázást véghezvinni nézz szét a PHP manual-ban. Egy fontos dolgot azonban még el kell mondanom a GET-ről, hogy az adatokat a böngésző URL-jében tárlolja, tehát például http://valami.hu/index.php?kapcsolo=ertek&kapcsolo2=ertek2 , tehát ha a kapcsolo2 értékét megszeretnéd tudni, az benne lesz a $_GET['kapcsolo2'] változóban. Ezzel a módszerrel küldi tovább a GET-et használó form.

Végszó

Most már tudunk adatokat küldeni egyik oldalról a másikra, illetve ezeket az adatokat feldolgozni, adatbázisba illeszteni,és a táblában lévő mezőkben is lehetőségünk nyílik keresni. Remélem érhető lett a cikk, és a benne leírt részletek.


 Szerző: userraczger Hozzászólások(2) Hozzászólások Megosztás az iWiW-en Megosztás az Facebook-on Megosztás a Google Reader-ben Megosztás az Twitter-en 

Listázás:  Idő szerint:
Webprogramozás arr Tutorialok info Űrlapok feldolgozása PHP-ben
(#2) Gabor válasza erre: (#1) Hemphta 2013.03.01. 10:06

Gabor
Gabor
Szerkesztő

1
$adatbazis = mysql_select_db("dbname",$kapcsolat);

Ez a sor hiányzik vagy rosszul gépelted be vagy valamiért nem sikerült végrehajtani. De egyébként ez a tutorial kicsit elavult hiszen a php az adatbázisok eléréséhez inkább két másik módszert javasol. Az egyik a PDO a másik pedig a mysqli. Ezeknek a régi függvényeknek a használata nem javasolt mert a jövőben el is távolítják majd őket a php-ból.

(#1) Hemphta 2013.02.27. 14:08

Hemphta
Hemphta
Kezdő

Helló, megcsináltam ezt a tutorialt, de olyan problémám van, hogy látszólag, minden jól működik (cím, user, password, adatbázisnév, táblanév helyesen van megadva), de amikor kiolvasnám az adatokat az adatbázis táblámból, semmi sincs benne. Nem kerül bele az adat amit a panelekbe írok. Hiba üzenetként azt írja ki, hogy az adatbázis, nincs kiválasztva. Van esetleg valami ötletetek, hogy mi lehet a hiba?


Utoljára szerkesztette: Hemphta 2013.02.27. 14:11
Listázás:  Idő szerint:


© 2006-2026 PHP-Script.hu, Minden jog fenntartva!
Design: Rácz Gergely, Oldalmotor: Rácz Gergely
Impresszum - Oldaltörténet - Oldalszabályzat