Pēc šīs pamācības, izmantojot tikai $_POST un $_GET var izveidot katram lietotājam savu lapu, kuru varēs aplūkot ar http://localhost/user?id=lietotāja_id (?id=lietotaja_id tiek iegūts ar $_GET, eskeipots un no datubāzes tiek izvilkta informācija par šo lietotāju)
1. Izveidojam tabulu ar 8 ailēm (id[INT, AUTO_INCREMENT], name[TEXT], title[TEXT], about[TEXT], email[TEXT], website[TEXT], created[DATETIME], class[TEXT]).
2. Ķeramies klāt kodam. Paša profila lapa.
<?php
if (isset($_GET['id'])) {
$db = new mysqli('localhost', 'user', 'password', 'database');
$id = $db->real_escape_string($_GET['id']);
$print = $db->query("SELECT * FROM lietotaji WHERE id = '$id'");
while ($new = $print->fetch_object())
echo '<b>Lietotājvārds: </b>' . $new->name . '<br /><b>Nosaukums: </b>' . $new->title . '<br /><b>E-Pasts: </b><a href=mailto:' . $new->email .'>' . $new->email . '</a><br /><b>Mājaslapa: </b><a href=' . $new->website .'>'
. $new->website . '</a><br /><b>Klase: </b>' . $new->class . '<br /><b>Lietotājs izveidots: </b>' . $new->created . '<br /><b>Par sevi: </b>' . $new->about . '';}
?>
3. Labošanas lapa. Te varētu arī tīrāku kodu, nu bet strādā arī šādi. Iegūst arī esošo aiļu saturu.
<?php
if (isset($_GET['id'])) {
$db = new mysqli('localhost', 'user', 'password', 'database');
}
if (isset($_POST['title'])) {
$db = new mysqli('localhost', 'user', 'password', 'database');
$title = $db->real_escape_string($_POST['title']);
$email = $db->real_escape_string($_POST['email']);
$website = $db->real_escape_string($_POST['website']);
$about = $db->real_escape_string($_POST['about']);
$id = $db->real_escape_string($_GET['id']);
$db->query("UPDATE `lietotaji` SET `title` = '$title', `email` = '$email', `website` = '$website', `about` = '$about' WHERE `id` = '$id'");
}
?>
<form action="" method="post">
<textarea name="title" rows="1" cols="30">
<?php
if (isset($_GET['id'])) {
$db = new mysqli(''localhost', 'user', 'password', 'database'');
$id = $db->real_escape_string($_GET['id']);
$print = $db->query("SELECT * FROM lietotaji WHERE id = '$id'");
while ($new = $print->fetch_object())
echo '' . $new->title . '';}?>
</textarea>
<textarea name="email" rows="1" cols="30"><?php
if (isset($_GET['id'])) {
$db = new mysqli(''localhost', 'user', 'password', 'database'');
$id = $db->real_escape_string($_GET['id']);
$print = $db->query("SELECT * FROM lietotaji WHERE id = '$id'");
while ($new = $print->fetch_object())
echo '' . $new->email . '';}?></textarea>
<textarea name="website" rows="1" cols="30">
<?php
if (isset($_GET['id'])) {
$db = new mysqli(''localhost', 'user', 'password', 'database'');
$id = $db->real_escape_string($_GET['id']);
$print = $db->query("SELECT * FROM lietotaji WHERE id = '$id'");
while ($new = $print->fetch_object())
echo '' . $new->website . '';}?></textarea>
<textarea id="elm3" name="about" rows="20" cols="80"><?php
if (isset($_GET['id'])) {
$db = new mysqli(''localhost', 'user', 'password', 'database'');
$id = $db->real_escape_string($_GET['id']);
$print = $db->query("SELECT * FROM lietotaji WHERE id = '$id'");
while ($new = $print->fetch_object())
echo '' . $new->about . '';}?></textarea>
<input type="submit" value="Saglabāt" />
Uz labošanas lapu var nokļūt tieši tāpat, nu ar kādu nosaukumu saglabāsiet ?id=lietotāja_id
Ceru, ka kādam noderēs. Ja kāds var uzrakstīt "tīrāku" kodu labošanas daļai, būšu pateicīgs.
+1 #105.11.2012. 17:41
Kā arī varat pielikt linku uz labošanas lapu kautkur pie lietotāja. Pieņemsim, pašā sākumā. Tas izskatīsies šādi:
Šis gan vairāk domāts adminiem, jo es pagaidām visas labošanas lapas glabāju atsevišķā mapē ar htaccess. (Nemāku autorizāciju. :/)
Var paskatīties, kā tas izskatās dzīvē - http://46.109.34.200/blog (SJ ir klikojams links, ar šo pašu metodi) (Par dizainu neko nesakat, man šobrīd galvenais ir tehniskā puse. )
Un pie visiem mysqli, kas ir zem <form> ir viena pēdiņa sākuma par daudz.
0 #205.11.2012. 18:20
Foršs darbs Tā tik turpini.
Nezinu, man nez kāpēc prasītos kaut kā izbēgt no tiem query no šejienes. kaut kā mazāk to varētu, bet nu jā tāpat labi.
S J @ 05.11.2012. 18:23 atbildēja:
Actually, šis ir mans nakts darbs. (tas, ko es šonakt dariju)
Man arī prasās tikt vaļā no tiem query, var jau sataisīt vairākus failus un inklūdot, bet tur ir jābūt daudz vienkāršākam risinājumam.
Plānos ir vel pielikt komentus. Bet tā kā esmu sapratis, kā īsti strādā $_POST un $_GET tas nav nekas baigi sarežģīts.
Dawgora @ 05.11.2012. 18:25 atbildēja:
Vēl varētu ielikt iespēju iet atpakaļ uz to vietu, kur Tu jau atradies
Man arī vispār derētu atkārtot php... :/ Atceros, ka komentiem youtubā bija arī laba pamācība Paskaties, varbūt atradīsi kaut ko.
S J @ 05.11.2012. 18:30 atbildēja:
Nu tas jau viens links.
Priekškam pamācību? Es jau zinu, kā es taisīšu komentus.
Tā kā /read?id=raksta_id arī ir sagatavots, atliek tikai read.php lapā pielikt vel 2 kverijus. Viens būs komentāra pievienošanas lauks. Atkal iegūs raksta ID, ieliks komentu tabulā pie text_id un pārējās ailes jau pašsaprotamas. Otrs kverijs izdrukās visus komentārus, kas atbilst tam raksta ID, un admin iespēju dzēst/labot citu komentus.
Plānos ir uztaisīt vel sidebaru, kur rādās tikai nosaukumi (Nu, kā exā, pēdējais lapā) un uzceļas līdz ar jaunu komentu, neietekmējot izvietojumu sākumlapā. Rakstu labošanu un dzēšanu arī. Reģistrācija un autorizācija man vel jāapgūst.
Dawgora @ 05.11.2012. 18:47 atbildēja:
Varbūt vēl ieliec AJAX, lai lapa refrešotos automātiski, nepārlādējot lapu? Tā ir tikai ideja
Nu, ko lai saka. Lai veicas darbā.
0 #305.11.2012. 19:13
Kāpēc tu katra lauka parādīšanai taisi atsevišķu kveriju?
S J @ 05.11.2012. 19:18 atbildēja:
Jo es aizmirsu, ka tur arī strādās echo variants.
Izlabosi lūdzu rakstā?
<form action="" method="post">
<?php
if (isset($_GET['id'])) {
$db = new mysqli('localhost', 'username', 'password', 'database');
$id = $db->real_escape_string($_GET['id']);
$print = $db->query("SELECT * FROM lietotaji WHERE id = '$id'");
while ($new = $print->fetch_object())
echo '
<textarea name="title" rows="1" cols="30">' . $new->title . '</textarea>
<textarea name="email" rows="1" cols="30">' . $new->email . '</textarea>
<textarea name="website" rows="1" cols="30">' . $new->website . '</textarea>
<textarea id="elm3" name="about" rows="20" cols="80">' . $new->about . '</textarea>';}
?>
<input type="submit" value="Saglabāt" />
Vispār, šeit varētu visiem atļaut labot savas foruma tēmas. (Vai arī no noteiktas karmas)
mad @ 05.11.2012. 19:32 atbildēja:
Nav testēts, bet pēc idejas to visu blāķi vajadzētu reducēt uz kaut ko šādu:
http://paste.php.lv/98f2b6f21518705a90683a419e2057b1/nonum
0 #401.10.2013. 18:11
Vai kāds varēti pateikt ko tieši dara
$id = $db->real_escape_string($_GET['id']);
mad @ 01.10.2013. 18:25 atbildēja:
Novērs SQL injekciju iespējamību, eskeipojot datus.
Kristiāns S @ 01.10.2013. 18:34 atbildēja:
Tagad sapratu, vienkārši es izmantoju parasto mySQL nevis mySQLi, tapēc no sākuma nesapratu, kāpēc tur ir tas $db->.
SJohnson @ 01.10.2013. 21:55 atbildēja:
Nemācies no šī koda. Pēc būtības jau viss ir pareizi, bet sadalot funckijās/klasēs būtu daudz labāk.