Pokud jsem to dobře pochopil, tak se vám to hlášení, tak jak to máte nyní, zobrazí pokaždé, případně dvakrát. Myslím, že to máte z principu úplně špatně.
Obávám se, že nemáte jasno v principech na kterých funguje PHP a HTML a v tom jak se stránka vlastně generuje.
- Klient (prohlížeč) pošle požadavek na server.
- Server vezme soubor s php programem a vygeneruje html stránku, kterou odešle klientovi, po této akci už není možné na stránce pomocí php nic měnit!
- Uživatel zadá data do formuláře
- Klient pošle na server nový požadavek na soubor spolu se zadanými daty z formuláře.
- Server vezme přijatá data + požadovaný soubor, kterým je "program" v php a vygeneruje novou html stránku. Kterou odešli klientovi.
Takže o případném zobrazení DIVu/ů se musí rozhodnout v okamžiku kdy server php soubor zpracovává, nikoliv až když klient data dostane.
Ale pro zobrazení toho hlášení by to mělo být nějak takto:
<?php
$link = mysql_connect("localhost", "root", "root") or die("Could not connect");
mysql_select_db("calendar") or die("Couldn't select db");
if (isset($_POST['usr']) && isset($_POST['passwd']) && isset($_POST['conf_passwd']) && isset($_POST['email']) && ($_POST['passwd'] == $_POST['conf_passwd']))
{
$username = mysql_real_escape_string($_POST['usr']);
$email = mysql_real_escape_string($_POST['email']);
$password = md5($_POST['passwd']);
$user_name_taken = mysql_query("SELECT user_name FROM user WHERE user_name = '".$username."'");
mysql_query("INSERT INTO user (user_name, passwd, email) VALUES('$username', '$password', '$email')") or die (mysql_error());
-------------> "Přesměrování na stránku - "účet byl založen"
}
mysql_close($link);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>
<link href="style/index_default.css" media="all" rel="Stylesheet" type="text/css" />
<script type="text/javascript" src="js/script.js"></script>
<title></title>
</head>
<body>
<div class="buttons">
<ul>
<li><a href="index.php">HOME</a></li>
<li><a href="about.php">ABOUT</a></li>
<li><a href="login.php">LOGIN</a></li>
<li><a href="sign.php" class="buttons_selected">SIGN IN</a></li>
</ul>
</div>
<?
if (user_name_taken($result))
{
echo "<div class=pop>Username taken</div>";
}
?>
<div class="middle">
<h3>Complete the sign in, please.</h3>
<form method="post" action="sign.php" name="sign" class="sign" onsubmit="return control_sign();">
<p class="content" align="center">
<label for="usr">Username: </label>
<input style="margin-left: 57px;" type="text" size="30" id="usr" name="usr" /><br /><br />
<label for="passwd">Password: </label>
<input style="margin-left: 61px;" type="password" size="30" id="passwd" name="passwd" /><br /><br />
<label for="conf_passwd">Cofirm Password: </label>
<input style="margin-left: 15px;" type="password" size="30" id="conf_passwd" name="conf_passwd" /><br /><br />
<label for="email">E-mail: </label>
<input style="margin-left: 82px;" type="text" size="30" id="email" name="email" /><br /><br />
<input id="log_button" type="submit" value="SIGN IN" />
</p>
</form>
</div>
</body>
</html>
Mělo by se to udělat elegantněji, ale tohle je princip.
Pak musíte ještě vyřešit co se stane, když se ten účet podaří vytvořit -> účet byl založen. Mělo by to klienta přesměrovat na jinou stránku.
Z výše uvedených důvodů, je vhodné, spíše nutné, zpracovávat kód PHP na začátku stránky a pak až generovat html kód, jehož generování se pak může řídit tím co php našlo v DB a zpracovalo.
A když už jsme u toho, když se to nepovede, tak tam bude uživatel všechna ta data zadávat znovu?
A co když místo hesla nebo jména napíši něco ve smyslu "DROP TABLE * " ?-) - hledejte "SQL injection".
--
Mareg