Autor Zpráva
Micho87
Profil
Mam takyto kód:
.
.
.
<form action="index.php" method="POST">
Meno: <input type="text" NAME="meno"> <br>
Odkaz: <textarea type="text" name="meno" rows="5" cols="30"></textarea> <br>
<input type="SUBMIT" VALUE="odoslat">
</form>
<HR>

<?php
$dat = "insert into kniha (meno, odkaz) values ('$_POST[meno]','$_POST[meno]')";
$db_dat = mysql_query($dat, $link);

$vyb = "select * from kniha";
$db_vyb = mysql_query($vyb, $link);


while ($vyber = mysql_fetch_array($db_vyb)) {
echo "Meno: $vyber[meno]<br>
Odkaz: $vyber[odkaz]<br><hr><br>";
}
mysql_close ();
?>

- aj mi to funguje ale ma to take blbe muchy ktore nemozem nejako vychytat.
1, ked sa 1. nacita napise mi to: Notice: Undefined index: meno in c:\inetpub\wwwroot\index.php on line 22

Notice: Undefined index: text in c:\inetpub\wwwroot\index.php on line 22

2, a ta druha je ze sa mi zobrazuju od najstarsieho

- ako by som to mohol upravit, Diky
roberta
Profil
Meno: <input type="text" NAME="meno"> <br>
Odkaz: <textarea type="text" name="meno" rows="5" cols="30"></textarea> <br>


1. intput a textarea musia mať rôzne NAME (nemôžu sa oba volať "meno") - potom si to nezabudnite premenovať aj v
$dat = "insert into kniha (meno, odkaz) values ('$_POST[meno]','$_POST[meno]')";

2. do tabulky kniha si pridajte nové pole "id", ktoré bude typu automatické číslo a potom dotaz "select * from kniha" zmeňte na "select * from kniha order by id desc"
Micho87
Profil
za tu 2, dik - to sa mi nedarilo

v tej 1, to bol preklep v zaloznom to mam dobre, ale aj tak mi to vypisuje

Notice: Undefined index: meno in c:\inetpub\wwwroot\index.php on line 24
Notice: Undefined index: text in c:\inetpub\wwwroot\index.php on line 24

Raz ked som sa pytal na takyto vipis tak mi poradil toto:

if(!empty($_POST["xxx"]))
{
echo $_POST["xxx"];
}

Ale ako to mam dostat do, keby som to tam nejako mal tak by to nerobilo.

$dat = "insert into kniha (meno, odkaz) values ('$_POST[meno]','$_POST[text]')";
roberta
Profil
asi tam máte syntaktickú chybu...
$dat = "insert into kniha (meno, odkaz) values ('$_POST[meno]','$_POST[text]')";
prepíšte na
$dat = "insert into kniha (meno, odkaz) values ('".$_POST["meno"]."','".$_POST["text"]."')";
krteczek
Profil
jen pro upřesnění a větší bezpečnost skriptů:
Používejte dva druhy proměnných:

1)Veřejné: jsou to proměnné které vznikají například ve formulářích, a předávají se metodou POST, GET, jsou prostě viditelné když si zobrazíte kód stránky.

2)Vnitřní: to jsou proměnné které na začátku skriptu deklarujeme, a nulujeme a posléze jim ve skriptu předáme hodnoty ze $_POST. $_GET,$_REQUEST. Tyto proměné by měli mít jiný název než veřejn, kvůli podstrčení nepovolených hodnot a čtení skriptů hackery
.
skriptík té knihy by mohl vypadat nějak takhle:

<?php
//nejprve vynulujeme všechny vnitřní proměnné
$user = ""; //$_POST['meno']
$kec = ""; //$_POST['odkaz']
$vypis = ""; //rozsekaný výběr dat z db
$zdb = ""; //výběr dat z databáze
$zprava = ""; //hlášky systému

//kontrola jestli byl odeslán formulář,
if(!empty($_POST))
{
if((trim($_POST['meno'])!="") and (trim($_POST['odkaz']!="")))
{
//ano formulář byl odeslán a všechny proměnné mají svuj obsah.
//ošetření vstupů a předání hodnot z veřejných proměnných do vnitřních proměnných
$user = strip_tags($_POST['meno']); //odstranění html tagu
$user = stripslashes($user); //odstranění zpětných lomítek
$user = substr($user,0,14); //oříznutí na max. 15 znaků
$user = trim($user); //odstranění prázdných míst ( mezer )
//to samé pro $_POST['odkaz']
$kec = strip_tags($_POST['odkaz']); //odstranění html tagu
$kec = stripslashes($kec); //odstranění zpětných lomítek
$kec= substr($kec,0,499); //oříznutí na max. 500 znaků
$kec = trim($kec); //odstranění prázdných míst ( mezer )
//pokus o zápis do databáze
$dat = "insert into kniha (meno, odkaz) values ('$_POST[meno]','$_POST[meno]')";
if ( mysql_query("insert into kniha ( meno, odkaz ) values ('$user','$kec')",$link))
{
//povedlo se
$zprava = '<p>Děkuji, Váš příspěvek byl přidán.</p>'; //vyprázdnění $_POST
unset($_POST);
}
else
{
//nepovedlo se
$zprava = '<p>Je mi líto, Váš příspěvek se nepodařilo přidat .</p>';
//vrácení upravených proměnných zpět do postu
$_POST['odkaz'] = $kec;
$_POST['meno'] = $user;
}
}
else
{
$zprava='nevyplnil jste všechna textová políčka, doplňte to prosim!';
}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html >
<head>
<title>Kniha návštěv</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
if(!empty($zprava)){echo $zprava;}
?>
<form action="index.php" method="POST">
Meno: <input type="text" NAME="meno" value = "<?php if (!empty($_POST['meno'])){ echo $_POST['meno'];} ?>"> <br>
Odkaz: <textarea type="text" name="odkaz" rows="5" cols="30"><?php if(!empty($_POST['odkaz'])){ echo $_POST['odkaz'];}?></textarea> <br>
<input type="SUBMIT" VALUE="odoslat">
</form>
<?php
//tady bude kod pro výpis obsahu
$zdb=mysql_query("select * from kniha order by id desc",$link);
while ($vypis = mysql_fetch_array($zdb))
{
echo 'Meno: '. $vypis['meno']."<br>";
echo 'Odkaz: '. $vypis['odkaz'].'<br><hr><br>';
}
?>
</body>
</html>

Snad jsem tam nenasekal příliš mnoho chyb, ale jde v podstatě o ukázku kodu jak by to snad mělo být dobře. Rád bych ještě četl názor skušenějších
jo a $link jsem nedefinoval
krteczek
Toto téma je uzamčeno. Odpověď nelze zaslat.

0