ugrás a tartalomhoz

A "Frissítési gond"-ok újra

Vadember · 2004. Dec. 25. (Szo), 12.34
Nemrég volt egy kérdésem, amire megkaptam a választ ("Frissítési gond" átirányítással). Ebből kifolyólag támadt még egy kérdésem:

azt szeretném, hogy leellenőrzöm az űrlapot, majd ha hibás akkor az űrlap fölé kiírom a hibákat ugyanazon az oldalon viszont ha nem hibás akkor átirányítom egy másik lapra, ami feldolgozza az adatokat, majd 'visszarak' az előző űrlapos oldalra.

tehát az a kérdésem, hogy létezik-e olyan függvény PHP-ben(!), amivel így el lehetne küldeni az adatokat.

nagyjából erre gondoltam:

<form action="<? print $PHP_SELF ?>?submit=i" method="post">
.
.
.
.
<input type="submit">
</form>

<?
if ($submit=="i")
{
if (van_hiba)
{
hibaüzenet;
}
else
{
átirányítás az adatfeldolgozó lapra
}
}

Arra gondoltam hogy elküldöm egy header ("location: adatfeldolgozo.php?elkuldendo=$adat")
csak mi van akkor, ha mondjuk több oldalas szöveget akarok elküldeni?tehát ez nem a legjobb megoldás.

Ha vki tud jobbat az szóljon!KÖSZI!
 
1

form feldolgozas.

ashnur · 2004. Dec. 25. (Szo), 13.24
szerintem foloslegesen komplikalod a dolgokat.
egy sima form mondjuk tartalmaz harom input type textet es egy submit gombot.adunk nekik neveket, pl: name, pass, email , submit.

ekkor beleirod php fileba a kovetkezot:

if(isset($_POST['submit'])){
 // es ide jon az ellenorzes feldolgozas.
}
en ezt ugy szoktam alapszinten(szoval ha nincs valami komolyabbrol szo) hogy letrehozok egy

$error_msg = ""; 
-t
majd sorban ellenorzom az osszes mezot, es ha gond van vele akkor $error_msg .= "a gond leirasa";

az ellenorzesek vegen pedig egyszeruen

if(empty($error_msg)){ 
  /* dejo, csinalunk valamit az adattal es 
header("Location ..stb., refresh, stb ellen */
}else{
/* francba, vmit elszurt megmutatjuk neki
 a formot megint,lehetoleg megaadva az 
altala beirt adatokat(pass kivetelevel)
 es kiirjuk az $error_msg -t */
}
noh. lehet tul bobeszedu voltam, de most ebredtem meg, nezzetek el legyszives ;)
2

Nem, nem voltál bőbeszédű

Vadember · 2004. Dec. 25. (Szo), 15.08
Nem, nem voltál bőbeszédű. Annak örülnék ha mki így állna a dologhoz és nem csak annyit mondana, hogy 'hülyegyerek keresd meg a google-ban'. Viszont sajnos nem működik a dolog. Bár ez valószínü, hogy az én hibám. Így próbáltam meg:

<html>

<head>
<title></title>
</head>

<body>
<form action="<? print $PHP_SELF ?>" method='post'>
<input type="text" name="adat1"><br>
<input type="text" name="adat2"><br>
<input type="submit" value="ellenörzés>
</form>

</body>

</html>


<?
$hiba_uzenet="";
if(isset($_POST['submit']))
{


if ($adat1=='')
{
$hiba_uzenet=$hiba_uzenet."Hiányzik az adat1<br>";
}

if ($adat2=='')
{
$hiba_uzenet=$hiba_uzenet."Hiányzik az adat2<br>";
}

if (empty($hiba_uzenet))
{
print 'oké! mehet az adatfeldolgozás!!';
}
else
{
print $hiba_uzenet;
}

}

?>

igazából ezt a sort nem értem : if(isset($_POST['submit']))

de nagyjából olyasmire gondoltam, hogy megnézi azt hogy van-e valamilyen elküldött adat és ha van akkor végrehajtja az utasításokat.

próbáltam úgy is, hogy külön oldalon volt a HTML kód és egy másikon a PHP, de így sem ment.

légyszíves segíts !
Kösz!
4

php meg html :}

ashnur · 2004. Dec. 25. (Szo), 16.06
ne haragudj, de mikor meglattam a kodod elsore nekem is ez jott, hogy menjel manualozni. nekem ugy tunik, nem nagyon erted ezt az egesz php es html kozti kapcsolatot . ez onmagaban meg nem baj, de jo volna ha akar segitek most akar nem elmennel es olvasgatnal par dolgot. mondjuk php.net -en.(oszinten remelem, hogy tudsz angolul)
eloszor is, nem tudom milyen nyelvekkel van ha van meg tapasztalatod de en dobom el az agyam mikor ilyet latok
<?
if ($adat1=='')
{
}
?>
minek az a sortores oda ? nem tudom ki talalta ki de nagyon sokat tudnam utni :). es a tagolas sem elhanyagolhato dolog szerintem. (tudod a tabok/spacek a sor elejerol.
hat nem szebb egy kod igy ?
<?
if ($akarmi1){
  if ($akarmi2){
    if ($akarmi3){
    }
  }
}
?>
mint igy ?
<?
if ($akarmi1)
{
if ($akarmi2)
{
if ($akarmi3)
{
}
}
}
?>
en ez utobbit nem tudom csak nehezen olvasni es az esetek tobbsegeben ilyen kodot latva nagyon gyorsan torlok.

es ezeket a BBCode jeloloket is megnezhetned. sajat erdekedben :)

nah de ha mar ennyit irtam , szoljak hozza a problemadhoz is valamit.

javaslom, hogy az olvasast itt kezd : Változók a PHP-n kívülről , es ne csak ezt az oldalt, hanem a benne levo kapcsolodo linkeket is nezd at.
ezek nagyon fontos dolgok, es ezek ismerete nelkul nem lehet php/html -t megfeleloen hasznalni
sokat segithetnek meg a felhasznaloi megjegyzesek az oldal aljan.

tehat az
<?
if(isset($_POST['submit'])){}
?>
azt jelenti, hogy az if blockban levo kodot akkor hajtja vegre a php ha elkuldted a formot( ez mondjuk nem 100% -ig igaz :) de segit abban , hogy megertsd )

ezt ugy vizsgalja meg, hogy a submit mezodnek van egy name="submit" adva, tehat ha elkuldod a formot akkor lesz egy $_POST['submit'] valtozod, aminek az erteke a submit mezo value -ja lesz. a te peldadban ez az "ellenörzés" lenne, ha adtal volna a submit mezonek name attributomot. de nem adtal ergo nem letezett ilyen key a $_POST tombben, tehat az if nem teljesult soha.

meg egy annyit, hogy ha ki akarsz irni valamit akkor az ugy szep, ha nem a <html></html> kodokon kivul teszed meg ezt. ha az a baj, hogy nem szeretsz sok nagy if blockot irni a html koze akkor talan ezt tobb kedved lesz hasznalni

<?=isset($ertek)?$ertek:'';?>
ez ha van $ertek valtozo akkor kiirja, es ha nincs akkor nem :)

ha meg van kerdesed, tedd fel... bar nem garantalom, hogy nem RTFM lesz a valasz. tekintsd karacsonyi ajandeknak az elobbieket ;)
3

esetleg ha van időd és kedv

Vadember · 2004. Dec. 25. (Szo), 15.16
esetleg ha van időd és kedved így karácsonykor, akkor mellékelhetnél egy egyszerű, de teljes forráskódot, hogy lássam mit rontottam el. vagy esetleg az enyémet kijavítva.
5

nem, teljes forraskodot soha :}

ashnur · 2004. Dec. 25. (Szo), 16.08
ajanlom figyelmedbe esti olvasmanykent:
Hogyan kérdezzünk okosan

ha megfogadot az itt leirt tanacsokat sokkal tobb olyan valaszt fogsz kapni amelyek segitenek is es nem csak elkuldenek googlezni.
6

Köszönöm a segítséget é

Vadember · 2004. Dec. 25. (Szo), 18.13
Köszönöm a segítséget és türelmedet. Most már értem a $_POST szerepét. Viszont az adatok eltárolását így másik PHP oldalon kell elvégezni, különben ha adatküldés után frissítem az oldalt, akkor újra eltárolódnak az adatok. Vagy van más megoldás is? Ha igen, akkor hol tudnék utánajárni?
7

Megoldás

Bártházi András · 2004. Dec. 25. (Szo), 19.09
Nem kell külön oldal. Ha submit gombot nyomott, és ha kitöltött mindent, akkor letárolod. Azaz két if-en belül lesz az adattárolásod. Ha pedig az adattárolás sikeres, akkor egy header("Location: /index.html"); exit; kiadása átdobja a felhasználót egy másik oldalra. Így ha ott frissíteni fogsz, akkor sem tudod újra elküldeni. Keress rá a location kifejezésre a keresőnkben! :)

-boogie-
8

így tényleg nem kell

Vadember · 2004. Dec. 25. (Szo), 21.31
így tényleg nem kell