Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie i zarządzanie podstronami
Forum PHP.pl > Forum > PHP
LeNy
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
Asmox
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.
LeNy
omg aż tyle tego zeby bylo w panlu admina:
Nazwa podstrony (Edytuj Podstronę)
questionmark.gif
Asmox
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.
LeNy
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
berettakk
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. ?>
LeNy
to co jest powyżej wystarczy questionmark.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.