ugrás a tartalomhoz

hibásan kitöltött űrlap esetén: hibaüzenet

ceops · 2005. Szep. 20. (K), 12.32
kicsit már nagyon hülyének érzem magam, h minden kis aprósággal hozzátok fordulok... de eccerűen nem megy...
szal vettem ugyan egy "PHP 24 óra alatt" c. könyvet, de ami benne van... hát az eléggé... ööö nem igazán úgy tűnik, hogy azt tartalmazza, amire tényleg szükség van :(
persze lehet h tényleg még mindig én vok a béna, hogy nem tudom máshogy értelmezni a dolgokat @_@

a gond tehát a következő: van egy űrlap:

sign.php

<form action="upload.php" method="post">
   
  <input name="name" size="30" style="font-family: tahoma; font-size: 7pt; background-color: #CDC4AD; color: #3C2900; border: 0">&nbsp;<b>name</b>
  <br>

  <input name="mail" size="30" style="font-family: tahoma; font-size: 7pt; background-color: #CDC4AD; color: #3C2900; border: 0">&nbsp;<b>e-mail</b>
  <br>

  <input name="url" size="30" value="http://" style="font-family: tahoma; font-size: 7pt; background-color: #CDC4AD; color: #3C2900; border: 0">&nbsp;<b>URL</b>
  <br>

  <textarea name="sign" rows="3" cols="29" style="font-family: tahoma; font-size: 7pt; background-color: #CDC4AD; color: #3C2900; border: 0"></textarea>&nbsp;<b>sign here</b>
  <br>

  <input name="date" size="30" type="hidden" value="<? print strftime("%Y-%m-%d        %H:%M:%S"); ?>">
  <BR>
  <input type="submit" value="okay!" style="font-family: tahoma; font-size: 7pt; font-weight: bold; background-color: #CDC4AD; color: #3C2900; border: 0"> 
<input type="reset" value="oops...!" style="font-family: tahoma; font-size: 7pt; background-color: #CDC4AD; color: #3C2900; border: 0">
</form>
és van egy feldolgozó upload.php

$parancs = "INSERT INTO try (name,mail,url,sign,date) VALUES ('$name','$mail','$url','$sign','$date')";
mysql_query($parancs);

//print "ok";


header("location: sign.php");
ez így tökre jó... működik is: http://tenou.uw.hu/sign.php
csakhogy többen szóltak, h jó lenne úgy megcsinálni, h ne lehessen elküldeni az űrlapot név nélkül, e-mail nélkül, meg üzenet nélkül... próbálkoztam én már mindennel, amit csak találtam itt a weblaboron, (és máshol is) csak egyik sem akar működni... odáig már eljutottam, h if elágazást kell írnom... de hova? oda ahol az űrlap van, vagy a feldolgozó php-ra? bármit írtam bárhova...; az adatokat ígyis-úgyis elküldte... hogy lehet ezt megakadályozni, h kitöltetlen mező esetén visszatérjen az űrlapos oldalra, és ott írjon ki egy figyelmeztető szöveget, h mi nincs kitöltve?
köszi előre is a segítséget...
lesz majd még egy pár ehhez hasonló szerencsétlen kérdésem... számítsatok rá =D
 
1

isset();

Off- · 2005. Szep. 20. (K), 13.06
Üdv!

csak meg kell nezni hogy az adott valtozo ami az urlapbol jon letezik-e:
if(!isset($_POST['valtozod']))
{
 // form jelenik meg
}
*****
Durucz Gábor
2

Példa

Anonymous · 2005. Szep. 20. (K), 13.09

<?php

function urlap () {

	echo "<form style=\"margin: 0px; padding: 0px;\" action=\"index.php?elkuld=true\" method=\"post\">\n"
	. "  <div>\n"
	. "    <input type=\"text\" name=\"inputnev\" value=\"".$_POST["inputnev"]."\" /><br />\n"
	. "    <textarea style=\"width: 150px; height: 50px;\" rows=\"\" cols=\"\" name=\"texareanev\">".$_POST["texareanev"]."</textarea>\n"
	. "    <input type=\"hidden\" name=\"hiddennev\" value=\"Date\" />\n"
	. "    <input type=\"submit\" value=\"Mehet\" />\n"
	. "  </div>\n"
	. "</form>\n";

}


function feldolgoz () {

	if (!$_POST["inputnev"]) {

		$hiba .= "Üres az \"inputnev\"<br />\n";

	}

	if (!$_POST["texareanev"]) {

		$hiba .= "Üres a \"texareanev\"<br />\n";

	}

	if ($hiba) {

		echo "Minden mezőt ki kell tölteni!<br />\n"
		. "".$hiba."\n";
		urlap();

	} else {

		// => mysql_query("INSERT INTO tablaneve VALUES ('".$_POST["inputnev"]."', '".$_POST["texareanev"]."', '".$_POST["hiddennev"]."')");

		echo "Ok";

	}

}

switch ($elkuld) {

	case "true": feldolgoz(); break;
	default: urlap(); break;

}

?>
3

1000köszönet :)

ceops · 2005. Szep. 21. (Sze), 12.13
hali :)
először is nagyon köszönöm a scriptet amit adtál... remekül működik! :)))
van viszont két aprocska kérdésem:

van egy rejtett mezőm amibe a print strftime("%Y-%m-%d %H:%M:%S"); dátumfüggvényt szeretném elküldetni, viszont ha így beírom mindig vmi bibit talál benne, hogy nem kell oda a "." vagy a "%"
szóval, hogy is kell ezt baj nélkül beírni ide?

. " <input type=\"hidden\" name=\"date\" size=\"30\"  value=\"DÁTUM FÜGGVÉNY\" />\n"
a másik kérdésem pedig, h arra lehet-e vmi egyszerű megoldást találni, h amikor felsorolja a hiányzó mezők nevét (pirossal!) akkor "felülírja" v ráírja a mező melleti szövegre a hibaüzenetet? tehát van a mező, mellete a mező neve, h name v. e-mail (stb) és ez lesz piros? próbáltam már div-el, h ugyanazt az id-t adom mindkét szövegnek (mező melleti szöveg és hibaüzenet szöveg) de nem müxik :(

eddigi segítségedet is nagyon köszönöm :)
zsolt
http://tenou.uw.hu/sign.php (blog teszt)
4

<Nincs cím>

Anonymous · 2005. Szep. 21. (Sze), 14.39
."<input type=\"hidden\" name=\"date\" size=\"30\" value=\"<?=date("Y-m-d H:i:s")?>\" />\n"
6

<Nincs cím>

Anonymous · 2005. Szep. 21. (Sze), 16.47
Kicsit kevered a PHP-t és a HTML-t... Helyesen inkább így:

<input type="hidden" name="date" value="<?php echo date("Y-m-d H:i:s"); ?>" />
10

Figyelem!!

Anonymous · 2005. Szep. 23. (P), 17.45
Ha megnézted volna ceops hozzászólását láttad volna, hogy ő php-vel iratná ki ezt a sort!!
11

<Nincs cím>

Anonymous · 2005. Szep. 23. (P), 22.16
NC
5

Javított verzió

Anonymous · 2005. Szep. 21. (Sze), 16.28

<?php

function urlap ($uresinputnev = false, $urestexareanev = false) {

	if ($uresinputnev) {

		$uresinputhiba = "*";

	}

	if ($urestexareanev) {

		$urestexareahiba = "*";

	}

	echo "<form style=\"margin: 0px; padding: 0px;\" action=\"index.php?elkuld=true\" method=\"post\">\n"
	. "  <div>\n"
	. "    <input type=\"text\" name=\"inputnev\" value=\"".$_POST["inputnev"]."\" />".$uresinputhiba."<br />\n"
	. "    <textarea style=\"width: 150px; height: 50px;\" rows=\"\" cols=\"\" name=\"texareanev\">".$_POST["texareanev"]."</textarea>".$urestexareahiba."\n"
	. "    <input type=\"hidden\" name=\"hiddennev\" value=\"valami\" />\n"
	. "    <input type=\"submit\" value=\"Mehet\" />\n"
	. "  </div>\n"
	. "</form>\n";

}


function feldolgoz () {

	if (!$_POST["inputnev"]) {

		$hiba .= "Üres az \"inputnev\"<br />\n";
		$uresinputnev = true;

	}

	if (!$_POST["texareanev"]) {

		$hiba .= "Üres a \"texareanev\"<br />\n";
		$urestexareanev = true;

	}

	if ($hiba) {

		echo "Minden mezőt ki kell tölteni!<br />\n"
		. "".$hiba."\n";
		urlap($uresinputnev, $urestexareanev);

	} else {

		// => mysql_query("INSERT INTO tablaneve VALUES ('".$_POST["inputnev"]."', '".$_POST["texareanev"]."', '".$_POST["hiddennev"]."', '".date("Y-m-d H:i:s")."')");

		echo "Ok";

	}

}

switch ($elkuld) {

	case "true": feldolgoz(); break;
	default: urlap(); break;

}

?>
Dátum, IP és hasonló adatokat ne tegyél hidden inputba, mert felesleges, csak a HTML kód lesz hosszabb tőle. Ilyesmit egyből a sor beszúrásba (SQL) kell, illetve szerintem ésszerű tenni, ahogy a példában is van.
7

ööö... ezeket Te honan tudod? :)

ceops · 2005. Szep. 22. (Cs), 12.32
ismét csak örök hálával tartozom... nem is tudod, mennyit segítettél :)))
http://tenou.uw.hu/sign.php
amúgy honnan tudod ezeket? fejből írod, vagy van vmi spéci titkod? csak mert nem akarlak állandóan Téged nyaggatni... jó volna ha ezeket én is meg tudnám írni! @_@ ehhh... álmodik a nyomor =D
ismét van még két kérdésem... nem igazán a topic témájához vág, de Te bizti tudod a megoldást :D
szóval ugye vki kitölti az űrlapot beír mindent... tökre jó... és még saját honlapja is van... úgy csináltam mindent, hogy az emberke nevéhez van linkelve az oldala

<a href="/<?= $sor["url"] ?>" target="_blank" title="<?= $sor["url"] ?>"><b><?= $sor["name"] ?></b></a>
viszont ha vkinek nincs webje, akkor elvileg üresen hagyja az URL beviteli mezőt, viszont ilyenkor a rendszer az én oldalamhoz linkeli a látogató nevét... hát ez nem jó :( erre ki tudsz találni vmi olyasmit, hogy ha az url mező ki van töltve, akkor linkelje... viszont ha nem, akkor ne linkeljen... simán csak irassa ki...


egyébként ezen részleg teljes scriptje így néz ki:

<?

$parancs = "SELECT * FROM try ORDER BY id desc";
$eredmeny = mysql_query($parancs);

while ($sor = mysql_fetch_array($eredmeny)) {
?>


    <b>&nbsp;&nbsp;<?= $sor["id"] ?></b>
    <BR>
    <?= $sor["sign"] ?>
    <BR>


    <a href="/<?= $sor["url"] ?>" target="_blank" title="<?= $sor["url"] ?>"><b><?= $sor["name"] ?></b></a>
		
	
	
	
	
	&nbsp;@&nbsp;<i><?= $sor["date"] ?></i>
	<BR><BR>
		

<?
}
?>
asszem úgy csináltam, h soronként kiolvastam az adatokat tömbbe helyezve... ha így egy kicsit átláthatóbb =D
8

<Nincs cím>

Anonymous · 2005. Szep. 22. (Cs), 13.40

<?

$parancs = "SELECT * FROM try ORDER BY id desc";
$eredmeny = mysql_query($parancs);

while ($sor = mysql_fetch_array($eredmeny)) {

	echo "<b>&nbsp;&nbsp;".$sor["id"]."</b>\n"
	. "<BR>\n"
	. "".$sor["sign"]."\n"
	. "<BR>\n";

	if ($sor["url"]) { /* Ha van default értéke, akkor ($sor["url"] != "default érték") */

		echo "<a href=\"".$sor["url"]."\" target=\"_blank\" title=\"".$sor["url"]."\"><b>".$sor["name"]."</b></a>\n";

	} else {

		echo "<b>".$sor["name"]."</b>\n";

	}

	echo "&nbsp;##kukac##&nbsp;<i>".$sor["date"]."</i>\n"
	. "<BR><BR>\n";

}

?>
Nincs spéci titok, meg kell tanulni, és olvasni a manulat, az legyen a bibliád :) Bár sok hiba van abban is (sajna pont példákban), ennek ellenére csak azt tudom javasolni... És/vagy jó könyvek.
9

mélcsere? :)

ceops · 2005. Szep. 23. (P), 08.18
Tengermély tiszteletem az Úrnak! :)

ismét csak működik minden, mint a karikacsapás ^_^
nagyon köszönöm... =D
ööö... esetleg egy mélcímet, ha megosztanál velem, ahol elérhető vagy... igazán megtisztelnél vele...
már csak azért is, mert volna még egy gondom, amihez nem szeretnék egy új topic-ot nyitni, mert már egyszer megtettem, csak akkor nem igazán kaptam megoldást a kérdésemre...

hali:
zsolt
12

Itt elérhető vagyok

Anonymous · 2005. Szep. 23. (P), 22.17
Itt elérhető vagyok :)
13

ugyanaz a topic

Hojtsy Gábor · 2005. Szep. 25. (V), 14.03
Hát ha a probléma ugyanaz, akkor azt kellene folytatni ott.