PHP forma
3 naročniki
3 naročniki
Pozdravljeni.
Sem začetnik v PHP-ju in želim narediti en večji obrazec za prijavo. Zanima me kako bi najlažje naredil, da se že izpolnjena polja ohranijo ob kliku na "Submit" gumb? Če npr uporabnik nekatera obvezna polja pozabi izpolniti, se mu že izpolnjena vseeno ohranijo...
Zaenkrat sem probal to narediti takole:
<input type="text" name="full_name" value="<?php echo $_POST['full_name']; ?>">
Ta rešitev mi je ok, problem je le na začetku, ker se mi v polju za vnos izpiše:
<b>Notice</b>: Undefined index: full_name .../b>
Rad pa bi, da je polje na začetku prazno....
5 odgovorov
$full_name = "";
if (isset($POST['fullname'])) {
$fullname = $POST['full_name'];
}
<input type="text" name="full_name" value="<?php echo $full_name; ?>">
Nekaj v tem stilu. :)
Ampak mi ne rata na ta način :S
Evo moja koda je takšna (to funkcijo kličem potem na drugi strani), pa delam še validacijo zraven:
<?php
function prijavaSMS() {
$msg_name ="";
$msg2_name ="";
if (isset($_POST['submit'])) {
//checking name
if(empty($_POST['full_name']))
$msg_name = "You must supply your name";
$name_subject = $_POST['full_name'];
$name_pattern = '/^[a-zA-Z ]*$/';
if(!preg_match($name_pattern, $name_subject, $name_matches))
$msg2_name = "Only alphabets and white space allowed";
}
?>
<form id="registration_form" method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label>Full name<span class="note">*</span>:</label>
<input type="text" name="full_name" placeholder="FirstName LastName" autofocus="autofocus" value="<?php echo $_POST['full_name']; ?>">
<?php echo "<p class='note'>".$msg_name."</p>";?> <?php echo "<p class='note'>".$msg2_name."</p>";?> <br/>
<br/>
<button type="submit" class="" name="submit">Oddaj prijavo</button>
</form>
<?php
}
?>
Prikaže pa se takole (namesto da bi se že na začetku prikazal "placeholder"):
Hm, sem zdaj probal na "pravem" strežniku (prej sem delal lokalno) in dela vse ok :). Je možno, da je to razlog (oz. zakaj, če kdo ve)?
Hvala!
Namesto empty, uporabi isset, kot sem jaz. Na strežniku ti pa ne pokaže obvestila zato, ker imaš izklopljen prikaz napak...
Jaz pri vsakem projektu uporabljam nasledno kodo da se znebim napak in pa obvestil:
error_reporting(E_ALL ^ E_NOTICE);
ini_set("display_errors", "off");
Večina gostovanj ti bo te dve kodi dovolila. Priporočam da na spletni strani ki jo imaš vidno pred celim svetom izklopiš kakeršna koli sporočila o napakah, opozorilih ipd. in si nastaviš da ti piše v neko datoteko recimo:
ini_set("display_errors", "off");
ini_set("error_log", getcwd()."/logs/php_errors.log");
Takole rešiš problem z prikazovanjem "Notice, Warning, Error, Fatal error" ipd. in imaš vse skupaj v eni datoteki.