Vaidzīga palīdzība. Taisot tādu kā admina paneli, radās problēma.
Pievienojot rakstu, garumzīmes strādā. Bet labojot rakstu, garumzīmes nestrādā.
Piemēram pievienojot rakstu, man tur ir teksts - Man garšo āboli. Kad izlabo kautko un tad saglabā tas viss izskatās šitā - Man garÅ¡o Äboli.
Visi faili ir UTF-8 Kodējumā bez BOM
Tātad šis ir pirmais fails. Kur pievienoju rakstu. (https://coding.lv/read/php-mysql-jaunumi)
<?php
require_once('class.mdb.php');
require_once('news-config.php');
//izveido savienojumu ar datubāzi
$db = new mdb($db_user, $db_pswd, $db_base, $db_host);
$tittle = '';
$content = '';
$status = '';
//ja tie padots ?edit=X parametrs, ielasam raksta saturu labošanai
if(isset($_GET['edit'])) {
$id = (int)$_GET['edit'];
//parbaudam vai tāds raksts eksistē
$article = $db->get_row("SELECT * FROM `news` WHERE `id` = '$id'");
//raksts nav atrasts
if(empty($article)) {
$status = '<p class="error">Pieprasītais raksts neeksistē!</p>';
//pieprasīts dzēst rakstu
} elseif(isset($_GET['delete'])) {
$db->query("DELETE FROM `news` WHERE `id` = '$id'");
$status = '<p class="success">Raksts izdzēsts!</p>';
} else {
//ja pieprasījums nāk no formas submit pogas,
if(isset($_POST['tittle'])) {
$tittle = htmlspecialchars($_POST['tittle']);
$content = $_POST['content'];
//sagatavojam datus rakstīšanai db
$title_escaped = $db->escape($tittle);
$content_escaped = $db->escape($content);
//izmaina ierakstu datubāzē
$db->query("UPDATE `news` SET `tittle` => '$title_escaped', `content` => '$content_escaped', `modified` => NOW() WHERE `id` => '$id'");
$status = '<p class="success">Izmaiņas saglabātas!</p>';
//nav nospiests submit, vienkārši rādam šī raksta saturu formā
} else {
$tittle = htmlspecialchars($article->tittle);
$content = $article->content;
}
}
//jauna raksta veidošana
} elseif(isset($_POST['tittle'])) {
//sagatavojam datus rakstīšanai db
$title_escaped = $db->escape(htmlspecialchars($_POST['tittle']));
$content_escaped = $db->escape($_POST['content']);
//izveido jaunu ierakstu datubāzē
$db->query("INSERT INTO `news` (`tittle`, `content`, `created`, `modified`) VALUES ('$title_escaped', '$content_escaped', NOW(), NOW())");
$status = '<p class="success">Izveidots jauns raksts!</p>';
}
?>
<form class="form" action="news" method="post">
<font size="5">
Virsraksts:<br />
<input size="90" type="text" name="tittle" id="tittle" value="<?php echo $tittle; ?>" />
</br>
Raksta saturs:<br /></font>
<textarea name="content"><?php echo htmlspecialchars($content); ?></textarea>
<input onclick="myFunction()" class="button" type="submit" value="Saglabāt" />
</form>
</br>
Visi raksti: </br>
<?php
//saraksts ar jau esošajiem rakstiem
$news = $db->get_results("SELECT * FROM `news` ORDER BY `created` DESC");
if(!empty($news)) {
foreach($news as $article) {
echo '<div id="newslist">';
echo '<strong><a style="color:black" href=newsread?id='.$article->id.'>'.$article->tittle.'</a></strong>';
echo '</div>';
}
}
?>
Otrais fails, kur var labot pievienoto rakstu.
<?php
require_once('class.mdb.php');
require_once('news-config.php');
$db = new mdb($db_user, $db_pswd, $db_base, $db_host);
?>
<?php
$id=$_POST['id'];
$tittle=$_POST['tittle'];
$content=$_POST['content'];
$id=$_POST['id'];
$id=$_GET['id'];
//saraksts ar rakstiem
$news = $db->get_results("SELECT * FROM `news` WHERE id='$id'");
if(!empty($news)) {
foreach($news as $article) {
//datuma formāts, maināms ar https://php.net/manual/en/function.date.php norādītajiem parametriem
$article->created = date('Y.m.d H:i', strtotime($article->created));
echo ' <center><form accept-charset="utf-8" name="form1" method="post" action="update_ac?id=' .$article->id. '">
<input class="update" size="70" name="tittle" type="text" id="name" value="' . $article->tittle . '">
</br>
<textarea name="content"> ' .$article->content. '</textarea>
<input name="id" type="hidden" id="id" value="' .$article->id. '">
<input type="submit" name="Submit" value="Saglabāt">
</center>
</form>
';}}
?>
un trešais fails, kur notiek update datubāzē.
<?php $host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name="news"; // Table name
$id=$_POST['id'];
$tittle=$_POST['tittle'];
$content=$_POST['content'];
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
echo '<meta charset="utf8" />' ;
$sql="UPDATE $tbl_name SET tittle='$tittle', content='$content' WHERE id='$id'";
$result=mysql_query($sql);
if($result){ ?>
<meta http-equiv="refresh" content="0;url=editnews?id=<?php echo "$id" ; ?>" />
<?php
}
else
{ echo "ERROR";
}
?>
Laboja Fukzzs, labots 1x
0 #102.04.2013. 13:00
Pirmajā failā tiek izmantota mana mysql klase, kurā jau ir iekšā set names utf-8. Otrajā nav.
Bet kāpēc tev vispār ir vēl 2 faili lai labotu postu? Tas pirmais jau var gan pievienot, gan labot jaunumu...
Fukzzs @ 02.04.2013. 13:01 atbildēja:
Man nestrādā tava labošana. tlt uzshostēšu parādīšu.
Fukzzs @ 02.04.2013. 13:04 atbildēja:
lūk links. fukzzs.info.tm/tesst/news-admin.php es izlaboju rakstu. saglabāju. parādas kad ir saglabāts. bet kad refresho vai atver vēlreiz nekas nav saglabājies.
mad @ 02.04.2013. 13:08 atbildēja:
Heh, tiešām bija kļūdiņa iekš update sql. Izlaboju. Novelc par jaunu.
Fukzzs @ 02.04.2013. 13:10 atbildēja:
idēali. ) Paldies Madar.!