| | |
| Stránka: 1 z 1
| [ Príspevkov: 20 ] | |
Autor | Správa |
---|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 Bydlisko: Bratislava ... |
mám malý problem na ktorý som narazil...
ako na editaciu prispevku? riešim to tak že includujem subor edit.php kde mam textareu a dalsie veci...includujem ho zo suboru guestbook.php a mam to takto:
Kód: if(isset($_GET['edit'])) { if(isset($_SESSION['login']) and $_SESSION['login']==1){ header("location: edit.php?id=".$_GET['edit']); }} a toto ide akože editovat vybrané id. Problém je v tom..že sa do textarii nechce načítať text vybraného príspevku. prečo? kod je tu: Kód: if(isset($_SESSION['login']) and $_SESSION['login']==1){ $editext = $row['text']; echo 'Editácia príspevku:<br> <textarea name="editext" class="polozka" cols="55" rows="10" class="textak" id="la1">'.$editext.'</textarea><br><input type="submit" name="odosli" value="Upraviť">';
} else { echo "ehm čau, čo tu robíš?"; } [code]
a $row je este sucast scriptu v guestbook.php
[code]$Dotaz = mysql_query("SELECT id, nick, text, email, web, cas FROM guestbook ORDER BY id DESC");
while($row = mysql_fetch_array($Dotaz)){[/code]
prirodzene typujem ze v tom edit mam chybu...v tom nacitavani do textaree, netreba nejaky cyklus while alebo podobne? prosím poradte
mazanie a editacia - to su veci ktore mi v php robili vzdy najvacsie problemy neviem ani preco. mazanie uz som vyriesil a teraz este editaciu
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
ahoj, chcem sa spýtať či ti to vypisuje nejakú chybu alebo len tak zostane biela obrazovka, alebo čo sa vlastne deje
do dopytu by som zakomponoval to IDčko
|
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 Bydlisko: Bratislava ... | Napísal autor témy B.A.X.O: 13.12.2008 19:49 | |
|
nie nie, žiadna chyba. po stlačení odkazu na editovanie ma hodi napr na subor.php?edit=125. a to je ok, lebo id bere. ale...ja potrebujem aby sa nacitalo do textarii text toho prispevku co chcem editovat, zostane prazdna a ja neviem preco...tak sa do toho snažám vložiť data s $row['text'] ale...to zrejme nepomaha a tak hladam riesenie tu
idčko v dopyte je
Kód: $Dotaz = mysql_query("SELECT id, nick, text, email, web, cas FROM guestbook ORDER BY id DESC"); while($row = mysql_fetch_array($Dotaz)){
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
IDčko do dopytu štýlom: WHERE ID=$ID
inak zobrazí ti stránku a prázdnu textareu??
ak áno tak chyba je v dopyte na databázu a vypísaním, mohol by si hodiť script
ak nie, tak chyba je niekde inde a mohl by si hodiť script
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
daj sem radsej kompletny kod, nie taketo utrzky, z toho sa neda poriadne vycitat, aka je postupnost vykonavania kodu...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 Bydlisko: Bratislava ... | Napísal autor témy B.A.X.O: 13.12.2008 20:34 | |
|
cize guestbook.php:
Kód: <?php session_start();
include "connect.php"; include "edit.php";
function kontroladb ($text) { $vysledok=mysql_query("select * from guestbook where text='".$text."'"); return (boolean) mysql_num_rows($vysledok); }
$errMsg = "";
if(isset($_POST['send'])) { $nick = trim(htmlspecialchars(stripslashes($_POST['nick']))); $email = trim(htmlspecialchars(addslashes($_POST['email']))); $web = trim(htmlspecialchars(stripslashes($_POST['web']))); $text = htmlspecialchars(stripslashes($_POST['text'])); $ip = $_SERVER["REMOTE_ADDR"]; $cas = date('j.n.Y, G:i');
if(empty($nick) || empty($text)) { $errMsg .= "<center><div class='errorMessage'>Zabudli ste vyplniť Text alebo Nick!<br></div></center>"; } else { if(strlen($nick) < 3){ $errMsg .= "<center><div class='errorMessage'>Meno nesmie mať menej ako 3 znaky!<br></div></center>"; } if(kontroladb($text)) { $errMsg .= "<center><div class='errorMessage'>Ochrana proti spamu: v databázi sa našiel taký istý záznam, aký sa pokúšate odoslať!<br></div></center>"; } if(empty($web)) { $web = ""; }
if(empty($email)) { $email = ""; } else { if (!ereg("^(.+)@(.+)\\.(.+)$", $email)) { $errMsg .= "<center><div class='errorMessage'>Email nie je správneho formátu!<br></div></center>"; } }
} if(empty($errMsg)) { $sql = 'INSERT INTO guestbook (`nick`, `email`, `web`, `text`, `cas`, `ip`) VALUES ("'.$nick.'", "'.$email.'", "'.$web.'", "'.$text.'", "'.$cas.'", "'.$ip.'")'; $help = mysql_query($sql); header("refresh 1"); } }
?>
<html>
<head> <link rel="stylesheet" type="text/css" href="style.css"> <!--[if IE]><link rel="stylesheet" type="text/css" href="ie.css"><![endif]--> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> </head>
<title>Guestbook</title>
<body>
<?php if(!empty($errMsg)) { echo $errMsg; }
?>
<form action="" method="POST"><center>
<fieldset class="field"><legend class="ieblb">Písanie príspevku</legend>
Meno: <input id="la1" class="polozka" type="text" name="nick" onmouseover="this.className='polozkapreie' onmouseout="this.className='polozka'><br><br>
Web: <input id="la1" class="polozka" type="text" name="web"><br><br>
Email: <input id="la1" class="polozka" type="text" name="email"><br><br>
<textarea name="text" class="polozka" cols="55" rows="10" class="textak" id="la1"></textarea> <br><br> <input type="submit" class="send" name="send" value="Odošli"><br><br> <span style="float: right"><a class="odkaz" href="log.php">Som admin?</a></span><br> </fieldset> </form></center> <br> </body>
</html>
<?php
function trimStr($str) { return eregi_replace("\r*\n", "<br />", $str); }
$Dotaz = mysql_query("SELECT id, nick, text, email, web, cas FROM guestbook ORDER BY id DESC"); while($row = mysql_fetch_array($Dotaz)){ echo "<div class='post'>Nick: ".$row['nick']."<br>Čas vloženia správy: ".$row['cas']."<br>Web: <a href='http://".$row['web']."'>".$row['web']."</a><br>Email: ".$row['email']."<div style='border: 1px solid; padding: 3px; white-space: pre;'>".trimStr($row['text'])."</div>";
if(isset($_SESSION['login']) and $_SESSION['login']==1){ echo "<a style='float: right;' href='guestbook.php?id={$row['id']}'>Zmazať</a><span style='float: right'><span style='float: right'>/</span><a style='float: right;' href='guestbook.php?edit={$row['id']}'>Editovať</a><br></div><br>"; } else { echo "</div><br>"; } }
if(isset($_GET['id'])) { if(isset($_SESSION['login']) and $_SESSION['login']==1){ mysql_query("DELETE FROM guestbook WHERE id='".$_GET['id']."' "); header("location: guestbook.php"); }}
if(isset($_GET['edit'])) { if(isset($_SESSION['login']) and $_SESSION['login']==1){ header("location: edit.php?id=".$_GET['edit']); }}
?> a edit.php Kód: <?php
session_start();
if(isset($_SESSION['login']) and $_SESSION['login']==1){ $editext = $row['text']; echo 'Editácia príspevku:<br> <textarea name="editext" class="polozka" cols="55" rows="10" class="textak" id="la1">'.$editext.'</textarea><br><input type="submit" name="odosli" value="Upraviť">';
} else { echo "ehm čau, čo tu robíš?"; }
if(isset($_POST['odosli'])) { mysql_query("UPDATE guestbook SET text = '".$row['text']."' WHERE id='".$row['id']."' "); }
?>
|
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
no header je presmerovanie ... teda jemu $row['text']; nič nevraví ...
preto by som urobil dve veci:
1, do dopytu pridal WHERE id = ".$_GET["id"]."
2, miesto header dal require
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
nakolko edit.php includujes uz na zaciatku guestbook.php, tak este neexistuje premenna $row, takze preto sa ti ani ziadny text nezobrazi...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 21.02.07 Prihlásený: 21.02.10 Príspevky: 3984 Témy: 96 |
stenley -> všimni si predposledný riadok ...
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
jasne, to som este zabudol dodat, ze v takomto pripade by mal asi tiez selectovat data z db podla id (v edit.php)
ale v kazdom pripade to mas dost cudne riesene...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 Bydlisko: Bratislava ... | Napísal autor témy B.A.X.O: 14.12.2008 12:57 | |
|
Uz mam urcity sposob jak to riesiť. Ale, stenley nevedel by si mi s toho mojho kodu guestbook.php povedať prečo ide vložiť zakaždým len jeden prispevok? doteraz všetko fungovalo než som začal šaškovať s tymi editmi/deletmi. a teraz iba jeden vloží nechápem, LIMIT 1 tam nikde nemám ani nič podobné...budem ti vdačný lebo neviem najst chybu všetko vyzera ok
do tabulky sa vzdy vlozi len jeden zaznam
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
akoze len jeden prispevok vlozi? jeden naraz alebo celkovo len jeden?
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 Bydlisko: Bratislava ... | Napísal autor témy B.A.X.O: 14.12.2008 17:27 | |
|
hej proste iba jeden. aj do databazy sa vlozi len jeden zaznam...nehcapem preco pri opatovnom pokuse aj ked vsetky podmienky su ok a nehodi ziadnu hlasku sa nic nestane. ani do databazy sa neulozi novy neviem preco..
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
nakolko neviem, ako a co si tam vsetko pozmenil, neviem ti povedat, co tam mas upravit... ale tu mas zakladny princip, ako by to mohlo fungovat, pravdaze si to uprav podla seba, pripadne si z toho zober, co potrebujes a nezabudni na osetrenie vsetkeho potrebneho...
index.php
Kód: <?php session_start();
require_once("function.php"); require_once("connect.php"); require_once("common.php");
$arrErrMsg = array();
if(isset($_POST['send'])) { $nick = !empty($_POST['nick']) ? $_POST['nick'] : ""; $email = !empty($_POST['email']) ? $_POST['email'] : ""; $web = !empty($_POST['web']) ? $_POST['web'] : ""; $text = !empty($_POST['text']) ? $_POST['text'] : ""; $ip = getIpAddress(); $cas = date('Y-m-d H:i:s');
if(empty($nick) || empty($text)) { $arrErrMsg[] = "Zabudli ste vyplniť Text alebo Nick!"; } elseif(strlen($nick) < 3) { $arrErrMsg[] = "Meno nesmie mať menej ako 3 znaky!"; } if(empty($email)) { $arrErrMsg[] = "Zabudli ste vyplniť Email!"; } elseif(!isValidEmail($email)) { $arrErrMsg[] = "Email nie je správneho formátu!"; } if(empty($arrErrMsg)) { if(isLogged() && !empty($_GET['edit']) && is_numeric($_GET['edit'])) { $sql = "UPDATE guestbook SET text='".$text."' WHERE id='".$_GET['edit']."'"; } else { $sql = "INSERT INTO guestbook (`nick`, `email`, `web`, `text`, `cas`, `ip`) VALUES ('".$nick."', '".$email."', '".$web."', '".$text."', '".$cas."', '".$ip."')"; } $res = @mysql_query($sql); header("Location: ".generateURL("edit","")); } } elseif(!empty($_GET['edit'])) { if(isLogged() && is_numeric($_GET['edit'])) { $sql = "SELECT nick, email, web, text FROM guestbook WHERE id='".$_GET['edit']."' LIMIT 1"; $res = @mysql_query($sql); if($res !== false) { list($nick,$email,$web,$text) = @mysql_fetch_row($res); } } } elseif(!empty($_GET['id'])) { if(isLogged() && is_numeric($_GET['id'])) { $sql = "DELETE FROM guestbook WHERE id='".$_GET['id']."'"; $res = @mysql_query($sql); header("Location: ".generateURL("id","")); } }
$sql = "SELECT * FROM guestbook ORDER BY cas DESC"; $res = @mysql_query($sql); if($res !== false) { while($row = @mysql_fetch_assoc($res)) { echo '<p>'; echo '<a href="?edit='.$row['id'].'">Edit</a> | <a href="?id='.$row['id'].'">Delete</a><br />'; echo 'Nick: '.$row['nick'].'<br />'; echo 'Email: '.$row['email'].'<br />'; echo 'Web: '.$row['web'].'<br />'; echo 'Cas: '.$row['cas'].'<br />'; echo 'IP: '.$row['ip'].'<br />'; echo 'Text: '.$row['text'].'<br />'; echo '</p>'; } }
foreach($arrErrMsg as $err) { echo '<p>'.$err.'</p>'; } ?> <form method="post"> <table> <tr> <td>Nick:</td> <td><input type="text" name="nick" value="<?php echo isset($nick) ? $nick : ''; ?>" /></td></tr> <tr> <td>Email:</td> <td><input type="text" name="email" value="<?php echo isset($email) ? $email : ''; ?>" /></td></tr> <tr> <td>Web:</td> <td><input type="text" name="web" value="<?php echo isset($web) ? $web : ''; ?>" /></td></tr> <tr> <td>Text:</td> <td><textarea cols="30" rows="5" name="text"><?php echo isset($text) ? $text : ''; ?></textarea></td></tr> <tr> <td colspan="2"><input type="submit" name="send" value="Send" /></td></tr> </table> </form>
function.php
Tam mas funkcie safety, isValidEmail, getIpAddress, generateURL z temy Uzitocne a casto pouzivane skripty a isLogged (tato zistuje, ci si prihlaseny a teda, ci mozes editovat pripadne mazat prispevky)
common.php
Tu je pouzita len funkcia safety pre $_GET a $_POST
connect.php
Pripojenie k db
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 Bydlisko: Bratislava ... | Napísal autor témy B.A.X.O: 14.12.2008 20:54 | |
|
diky moc Stenley, som ti fakt vdačný dal si mi priam excelentný učebný materiál...toto si vytlačím a budem študovat. najviac ma zaujala funkcia getIpAdress...myslel som ze adresa sa bezne zistuje $_SERVER['REMOTE_ADDR'] a nie takto, alebo je to nejaka funkcia s common.php?
/edit aha hej je to jedna z nich...ale na co funkcia? stačí ked spravím
function getIpAdress(){
$SERVER[...atd
}
a mam nie?
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
bezne sa to tak zistuje, ale ked si precitas popis k tej funkcii, zistis, ze je to predsa len o nieco lepsie riesenie ako klasicka premenna $_SERVER['REMOTE_ADDR'], ale zalezi len na tebe, co budes pouzivat...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 Bydlisko: Bratislava ... | Napísal autor témy B.A.X.O: 15.12.2008 15:48 | |
|
btw v tom kode nevidím nikde žiadne trim, stripslashes, htmlspecialchars a iné veci...ako to mám ja v scripte. Možno som len niečo prehliadol, ale asi som si fakt nevšimol...docela ma to zarazilo lebo takéto veci su tam predsa potrebne
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
pisal som ti tam, ze si to musis este osetrit, htmlspecialchars a stripslashes mas uz pouzite vo funkcii safety, cize ti staci do nej doplnit len trim a mas to vyriesene... takisto som do skriptu este nezahrnul tvoju ochranu proti spamu...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 Bydlisko: Bratislava ... | Napísal autor témy B.A.X.O: 15.12.2008 18:10 | |
|
este by som sa chcel spýtať na funkciu GenerateURL alebo čo to je...to je tiež vo functions.php? alebo to je nejaka php normal funkcia...
|
|
Registrovaný: 09.09.07 Prihlásený: 07.11.16 Príspevky: 3114 Témy: 233 Bydlisko: Nové Zámky |
_________________ "It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď |
|
| Stránka: 1 z 1
| [ Príspevkov: 20 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|