Kezdőoldal » Számítástechnika » Weblapkészítés » Php űrlapfeldolgozásba, lehet...

Php űrlapfeldolgozásba, lehet olyat hogy?

Figyelt kérdés
Szóval az űrlap feldolgozás e-mailbe jön nekem, hogy lehet olyat csinálni, hogy csak azt jelenítse meg az e-mail amit rendeltek (és ne sorolja fel az összes többit is, hogy abból nincs adat) vagy hogy amiből van adat akkor azt legalább színessel vagy félkövérrel kiemelje?

#php #űrlapfedolgoázás
2012. jún. 12. 19:00
 1/6 2xSü ***** válasza:

Ha az űrlapot egy php script dolgozza fel és az küldi az emailt, akkor a scriptet kell úgy megírni, hogy az a kért adatokat küldje el. (Logikus.)


Ha az űrlapot a form action paraméterénél megadott mailto:email@cimem.hu formátum alapján a kliens oldal küldi el, akkor ez több szempontból is problémás. A formot érdemes egy php scriptnek küldeni, ami normálisan feldolgozza azt.


A kérdésből ennyi választ lehet írni csak. Látni kellene a formot ill. az azt feldolgozó php scriptet..

2012. jún. 12. 19:12
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

köszi a választ:) itt a feldolgozó php-m, hátha így jobban tudsz segíteni, hogy mit írjak át? most tanulgatom még csak a php használatát, ezt is minta alapján sikerült összehoznom


<?php

}


$EmailTo = "valami@valami.hu"; // Ide küldi az emailt


$email=$_POST["emailcím"];

$ip = $_SERVER["REMOTE_ADDR"];

$ido = date('Y-m-d H:i:s');


headr(); // A fejléc kirakása

$hibas_kitoltes = false;

if (!preg_match("/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/", $email)) {

echo "<h4>Nem megfelelő az emailcím formátuma!</h4>";

echo "<a href='javascript:history.back(1);'>Back</a>";

$hibas_kitoltes = true;

}


$subject='Tárgy';


$uzenet = ''; // Ez kerül a levélbe az üzenethez

$uzenet .= 'Email cím:' . $_POST["emailcím"] . "\n"; // Az emailcím bekerül a levél közé


// kötelező kitölteni --- változóneve: Nev

if (empty($_POST["Nev"])) {

// ez egy textfield

echo "<h4>Nincs Név megadva!</h4>";

echo "<a href='javascript:history.back(1);'>Vissza</a>";

$hibas_kitoltes = true;

} else

$uzenet .= "Név: ".strips($_POST["Nev"])."\n";



// kötelező kitölteni --- változóneve: Telefonszam

if (empty($_POST["Telefonszam"])) {

// ez egy textfield azaz sima beviteli mező

echo "<h4>Nincs Telefonszám megadva!</h4>";

echo "<a href='javascript:history.back(1);'>Vissza</a>";

$hibas_kitoltes = true;

} else

$uzenet .= "Telefonszám: ".strips($_POST["Telefonszam"])."\n";



// kötelező kitölteni --- változóneve: cim

if (empty($_POST["cim"])) {

// ez egy textfield azaz sima beviteli mező

echo "<h4>Nincs Szállítási cím megadva!</h4>";

echo "<a href='javascript:history.back(1);'>Vissza</a>";

$hibas_kitoltes = true;

} else

$uzenet .= "Szállítási cím: ".strips($_POST["cim"])."\n";



// nem kötelező kitölteni --- változóneve: 1. Pizza Sonkás kicsi (20cm)(db)

if (!empty($_POST["1. Pizza Sonkás kicsi (20cm) (db)"])) {

// ez egy textfield

echo "<h4>Nincs 1. Pizza Sonkás kicsi (20cm) 315.- Ft (db) megadva!</h4>";

echo "<a href='javascript:history.back(1);'>Vissza</a>";

$hibas_kitoltes = true;

$uzenet .= "1. Pizza Sonkás kicsi (20cm) (db): " . strips($_POST["1. Pizza Sonkás kicsi (20cm) (db)"])."\n";

} else

$uzenet .= "1. Pizza Sonkás kicsi (20cm (db): ".strips($_POST["sonkas1"])."\n";

// nem kötelező kitölteni --- változóneve: 1. Pizza Sonkás normál(30cm)(db):

if (!empty($_POST["1. Pizza Sonkás normál(30cm)(db):"])) {

// ez egy textfield

echo "<h4>Nincs 1. Pizza Sonkás normál(30cm) (db): megadva!</h4>";

echo "<a href='javascript:history.back(1);'>Vissza</a>";

$hibas_kitoltes = true;

$uzenet .= "1. Pizza Sonkás normál(30cm)(db): " . strips($_POST["1. Pizza Sonkás normál(30cm) (db):"])."\n";

} else

$uzenet .= "1. Pizza Sonkás normál(30cm)(db):: ".strips($_POST["sonkas2"])."\n";



na és így lenne még több pizzával, amiket nem kötelező kitölteni, és az emailbe nem is jön róla adat, de felsorolja a több 10-20 pizzát is, és így átlátni, hogy melyik mellé írtak számot hogy melyik kell kicsit nehéz, ezért kérném a segítséget

2012. jún. 12. 19:24
 3/6 2xSü ***** válasza:

1. Könyörgöm, mond azt, hogy ez valami házi dolgozat, és nem élesbe fog menni!


2. Tömbről, foreach-ről hallottál már? Érdemes lenne alkalmazni.


* * *


Még mielőtt továbbmennénk, a form forrását is elküldenéd?

2012. jún. 12. 19:50
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:

Igen csak "házi feladat" semmi élesről nincs szó.

Nem hallottam még azokról. Itt a form is:

<form action="subscribe.php" method="post">

Név:

<input type="text" name="Nev"> 

<br>

Telefonszám:

<input type="text" name="Telefonszam"> 

<br>

Szállítási cím:

<input type="text" name="cim"> 

<br>

1. Pizza Sonkás kicsi (20cm) (db):

<input type="text" name="sonkas1" size="2"> 

<br>

1. Pizza Sonkás normál(30cm) (db):

<input type="text" name="sonkas2" size="2"> 

<br>

<input type="submit" value="Mehet!"><br/>

</form>

2012. jún. 12. 19:59
 5/6 2xSü ***** válasza:

Ha csak kétféle pizza van, akkor oké a dolog, de ha harmincféle, akkor ez így már elég problémás.


1. A form-ban az input tagnél a névhez sonkas1 illetve sonkas2 van írva. Így ezzel a névvel lehet ugye hivatkozni rá. Tehát ez a sor:

if (!empty($_POST["1. Pizza Sonkás kicsi (20cm) (db)"])) {

így lenne helyes:

if (!empty($_POST["sonkas1"])) {


Ez viszont így azt ellenőrzi, hogy a sonkas1 nevű input üres-e.


Nézzük tovább…


* * * * * *


if (!empty($_POST["1. Pizza Sonkás kicsi (20cm) (db)"])) {

// ez egy textfield

echo "<h4>Nincs 1. Pizza Sonkás kicsi (20cm) 315.- Ft (db) megadva!</h4>";

echo "<a href='javascript:history.back(1);'>Vissza</a>";

$hibas_kitoltes = true;

$uzenet .= "1. Pizza Sonkás kicsi (20cm) (db): " . strips($_POST["1. Pizza Sonkás kicsi (20cm) (db)"])."\n";

} else

$uzenet .= "1. Pizza Sonkás kicsi (20cm (db): ".strips($_POST["sonkas1"])."\n";


Mit csinál ez? Egyrészt semmi jót. :-) Merthogy itt is mindenhol $_POST['sonkas1']-et kellene használni.

Másrészt:


Ha nem üres az adott szövegmező, akkor:

- Kiírja, hogy nem adta meg az adott mezőt. (Pedig de.)

- Kitesz egy vissza linket.

- Az üzenetbe beleteszi, hogy x.y. pizza: # darab.

Ha viszont üres az adott mező, akkor:

- Az üzenetbe beleteszi, hogy x.y. pizza: # darab. (Csakhogy # éppen üres, tehát feleslegesen teszi.)


* * * * *


Logikailag így kellene működnie józan paraszti ésszel:


- Ha valaki egy bizonyos pizzánál nem adott meg semmit, akkor az önmagában nem gond, lehet hogy más pizzánál írt darabszámot. Tehát ezt nem kell kiírni. Magyarán ha nem írt be darabszámot, akkor nem kell tennie semmit a scriptnek.

- Ellenőrizni kellene, hogy valamelyik pizzánál azért írt oda darabszámot.


Első nekifutásra:


$voltrendeles=false;


if (!empty($_POST['sonkas1'])) {

$voltrendeles=true;

$uzenet.="1. Pizza Sonkás kicsi (20cm) (db): ".$_POST['sonkas1'];

}


if (!empty($_POST['sonkas2'])) {

$voltrendeles=true;

$uzenet.="1. Pizza Sonkás normál (30cm) (db): ".$_POST['sonkas2'];

}



if (!$voltrendeles) {

echo "Egyik pizzához sem írt darabszámot!";

$hibas_kitoltes=true;

}



(Lehetne optimalizálni a dolgot, de remélem így érthető.)


A stript függvény nem tudom mit csinál, de a példánál elhagytam, mert önmagában nem elég a boldogsághoz.


* * * * *


Viszont így akármit ír be az üzenetmezőbe, az működni fog. Pl. ha -3 -at ír be, ha :) szmájlit ír be, akkor is átmegy a rendszeren, hiszen az ellenőrzés kizárólag arról szól, hogy üres-e a mező.


Továbbá ha van vagy 30 féle pizza, akkor elég nagy gond van, hiszen 30-szor kellene beírni az adott kódot. Ha változtatni kell a kódon – mint ahogy most is –, akkor 30 helyen kell. Nem célszerű.

2012. jún. 12. 20:35
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:
Igen így már kezdem értegetni a dolgot. Köszönöm a segítséget :)
2012. jún. 12. 21:18

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!