Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dodawanie i zarządzanie podstronami, php i sql
LeNy
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 17.01.2009

Ostrzeżenie: (0%)
-----


Witam. Zrobiłem wkońcu możliwość dodawania podstron na podstawie page.php?id=id_podstrony
i teraz chcę zrobić możliwość edytowania ich. Jak to zrobić questionmark.gif

Oto kod połączenia z bazą:
Kod
<?php
function db() {
  $db = mysql_connect("[server]", "[login]", "[haslo]");
  if (mysql_errno()) {
  echo "<center><h2><b>Połączenie z bazą danych niemożliwe!</b></h2></center>";
  return false; }
  mysql_select_db("[nazwa bazy]");
  return $db;
}
?>


a oto plik page.php
Kod
<?php
include('mysqlconnect.php');
$id = $_GET['id']; ### pobieranie id z linku np. ?id=22
$db = db(); ### poł±czenie z baza
$zapytanie = "select * from podstrony where id = $id"; ### zapytanie sql
$wynik = mysql_query($zapytanie, $db); ### zapytanie sql
if (!$wynik || mysql_num_rows($wynik)<1) ### zapytanie sql
{
echo '<center><b>O podanym id niema żadnej podstrony!</center></b>'; ### text wyswietlany gdy w sql nie znajdzie tabeli o podanym id w linku
}

for ($i=0; $i<mysql_num_rows($wynik); $i++) ### zapytanie sql
{
  $wiersz = mysql_fetch_array($wynik); ### zapytanie sql
  $id = $wiersz['id']; ### zapytanie sql
  $tresc = stripslashes($wiersz['tresc']); ### zapytanie sql

echo ''.$tresc.''; ### wywalanie tekstu na strone

?>


a i oczywiście w panelu admina dodawanie tresci:
Kod
<?php
echo '<textarea name="tresc" colls="5" rows="20">';
?>


Jak do tego dorobić zebym mógł edytować treść w panelu admina questionmark.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Asmox
post
Post #2





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

Ostrzeżenie: (0%)
-----


OK, już mówię, jak to się robi. Już takie coś kiedyś robiłem, ale najpierw parę uwag:
1. Jeśli zależy ci na zgodności z XHTML, to popraw przeplatające się znaczniki
Cytat
echo ''.$tresc.''; ### wywalanie tekstu na strone

Poco łączysz echo z pustymi ciągami znaków? Wystarczy echo $tresc;

Teraz najważniejsze:
1. Będzie ci potrzebny formularz, który powinien wyglądać mniej więcej tak:
[TYTUŁ STRONY, text]
-------------------------
[textarea]
[TREŚĆ STRONY]
-------------------------
[STRONA...., select][EDYCJA, button]

Bardzo ważne są teraz następujące rzeczy:
a) Ustawiasz kodowanie w bazie danych na latin2, najlepiej polish, jak nie to general. Przy każdym pobieraniu danych ze strony musisz najpierw wykonać zapytanie przez PHP:
mysql_query("SET NAMES latin2;");
inaczej będzie ci zwracało znaki z krzakami
cool.gif Nadajesz odpowiednie atrybuty name tym polom. Wyślij je do skryptu załóżmy get_form.php.
c) Musisz dla tekstu zastosować funkcję nl2br(), zależy od ciebie (bo chyba nie chcesz wpisywać <br /> na końcu każdej linijki, no nie? biggrin.gif)
c.a) Robisz to dla danych z pola tekstowego, i wysyłasz dane ze znakami <br /> do bazy (wtedy stosujesz całe formatowanie, a przy pobieraniu danych nic z nimi nie robisz)
c.cool.gif Formatujesz tekst dopiero po ich pobraniu

Jeżeli chcesz opcjonalnie dodać zastosowanie BBCODE, to jeszcze dorzucasz funkcje zamieniające nawiasy kontowe na encje i tekst sformatowany według zasad BBCODE'U na normalne znaczniki HTML, tu masz poradnik: KLIK!

No cóż, to chyba wszystko, co pamiętam smile.gif . Polecam zastanowić się mocno i albo robić formatowanie tekstu przed, albo po wysłaniu do bazy.

Można zrobić tak ten formularz:
[tytuł strony]
[treść strony]
[strona][DODAJ/EDYTUJ]
I sprawdzasz w php, jeżeli nic nie zostało przekazane w SELECT, to traktujesz to jako nową stronę, ale wtedy musisz dorzucić JavaScript, żeby od razu po kliknięciu SELECTA pokazywały się dane strony.
Może najlepiej by było zrobić 2 formluarze? DODAJ STRONĘ i EDYTUJ STRONĘ ?
Cytat
Jak do tego dorobić zebym mógł edytować treść w panelu admina questionmark.gif

Dodawanie nowych stron też Ci się przyda.
Aha, jeżeli pomogłem, to wciśnij, proszę, przycisk pomógł. Może ty mi dasz pierwszy punkt? Chociaż nie pisałem tego dla punktów, bo sam pamiętam jak się z tym mordowałem.


--------------------
Go to the top of the page
+Quote Post
LeNy
post
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 17.01.2009

Ostrzeżenie: (0%)
-----


omg aż tyle tego zeby bylo w panlu admina:
Nazwa podstrony (Edytuj Podstronę)
questionmark.gif

Ten post edytował LeNy 14.04.2009, 09:57:18
Go to the top of the page
+Quote Post
Asmox
post
Post #4





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

Ostrzeżenie: (0%)
-----


Raczej tak, ale żeby nie było, to spójrzmy ile rzeczy trzeba zrobić:
1. Wybranie strony do edycji - PHP ma za zadanie przywołanie wszystkich potrzebnych danych z bazy danych, a następnie "wpisanie ich" w odpowiednie pola formularza.
2. Edycja strony przez Administratora
3. Zatwierdzenie zmian - PHP musi najpierw sprawdzić, którą pozycję należy zedytować (patrząc po ID, dlatego zrób też pole typu hidden w formularzu, które będzie je przechowywać, albo wymyśl jakiś fajny sposób jak trzymać ten IDentyfikator), następnie łączy się z bazą danych i nadpisuje dane. Ewentualnie jeszcze przed wysłaniem filtruje dane przed próbami wstrzyknięcia SQL/JavaScriptu.


--------------------
Go to the top of the page
+Quote Post
LeNy
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 17.01.2009

Ostrzeżenie: (0%)
-----


a mam pytanie czy jest gdzieś jakiś gotowiec.. Mam mało czasu żeby to napisać a potrzebuje tego pilnie. Będe wdzięczny za każdy link czy kod sciana.gif
Go to the top of the page
+Quote Post
berettakk
post
Post #6





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 24.11.2007

Ostrzeżenie: (0%)
-----


Moim zdaniem z grubsza wystarczy edytuj_podstrone.php zrobić na bazie dodaj_podstrone.php, tylko dodać zapytanie SQLowe pobierające już istniejącą treść.

  1. <?php
  2. $id = $_GET['id'];
  3.  
  4. $sql = "SELECT tresc FROM podstrony WHERE id=$id";
  5. $pyt = mysql_query($sql);
  6.  
  7. $wynik = mysql_fetch_assoc($pyt);
  8. $tresc = $wynik['tresc'];
  9. ?>


W formularzu:
  1. <form action="..." method="post">
  2. <textarea name="tresc"><? echo "$tresc"; ?></textarea>


Na koniec zamiast wstawiania do bazy jej aktualizacja:
  1. <?php
  2. $tresc = $_POST['tresc']
  3.  
  4. $sql = "UPDATE podstrony SET tresc='$tresc' WHERE id=$id";
  5. $pyt = mysql_query($sql);
  6. ?>
Go to the top of the page
+Quote Post
LeNy
post
Post #7





Grupa: Zarejestrowani
Postów: 102
Pomógł: 4
Dołączył: 17.01.2009

Ostrzeżenie: (0%)
-----


to co jest powyżej wystarczy questionmark.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 01:34