Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP - MySQL] Edycja newsów
Forum PHP.pl > Forum > PHP
Asmox
Tworzyć newsy jest łatwo - ale edytować już trudno. Chciałbym do swojego panelu administracyjnego dodać taką możliwość. W jaki sposób....
1. Mając listę tematów (generowaną automatycznie) chciałbym, aby po wybraniu jakiegoś, do pól edycji zostały wrzucone dane.
Przykład: Wybieramy z listy news pt. PHP, a wtedy w polu z tekstem ukazuje się treść newsa, w polu z tematem jego temat itd...
2. Klikając przycisk usunąć cały news (który byłby załadowany w sposób z punktu 1)
3. I jeszcze żeby newsy automatycznie cofały się o 1 (żeby nie było braków w indeksach po usunięciu jakiegoś newsa)
nospor
no a masz jakiekolwiek pojecie o ajax?
- nie? To sie poducz, bez tego nie zrobisz tego tematu.Obczaj oco chodzi, zrob przykladowe zadania i zajmij sie za swoje
- tak? To w czym problem? Pokaz kod co zrobiles i co ci nie dziala
KCG
1. W <input> argument value, lub w polach tekstowych pomiędzy <textarea> i </textarea>.
2. DELETE FROM `tabela` WHERE `id`=$id.
3. Takich rzeczy chyba się nie robi worriedsmiley.gif To tak żeby baza ładnie wyglądała?
Zwłaszcza po 2 pierwszych punktach widać, że masz nikłe pojęcie, więc warto jeszcze się poduczyć zamiast brać od razu za swoje rzeczy smile.gif
Asmox
angrysmiley.gif angrysmiley.gif angrysmiley.gif Dobrze bez AJAX
Cytat
1. W <input> argument value, lub w polach tekstowych pomiędzy <textarea> i </textarea>.
2. DELETE FROM `tabela` WHERE `id`=$id.

Ja wiem takie rzeczy, ale jak je przywołać? To znaczy jak mam napisać to pole select, że jak je kliknę, to php zacznie robić odpowiednie funkcje. Myślę, że nauczyłem się dostatecznie wiele, skoro doszedłem do tego momentu, że przyda się możliwość edycji newsów.
Kod
no a masz jakiekolwiek pojecie o ajax?
- nie? To sie poducz, bez tego nie zrobisz tego tematu.Obczaj oco chodzi, zrob przykladowe zadania i zajmij sie za swoje
- tak? To w czym problem? Pokaz kod co zrobiles i co ci nie dziala

Tak naprawdę to dowiedziałem się co to jest od pewnego moda... Po przeczytaniu o tym na wikipedii pomyślałem, że chyba się pomylił, no ale niech mu będzie...
Pokazać ci mój kod? Proszę bardzo:
Kod
<select name="lista">
<?php  shownews("lista");?>
</select>

Fragment funkcji shownews
  1. <?php
  2. case "lista":                                
  3. while($row = mysql_fetch_row($result)){      
  4.  echo("<option>$row[4]</option>");          
  5. }                                            
  6. break;
  7. ?>
nospor
Cytat
Pokazać ci mój kod? Proszę bardzo:
Ale tu nie ma nic o ajax. Ja mowilem o kodzie ajax bys pokazal smile.gif

Cytat
Po przeczytaniu o tym na wikipedii pomyślałem, że chyba się pomylił,
Zamiast tylko przeczytac, wykonaj tez pare praktycznych kodow smile.gif
Asmox
Powiem ci tak: Dla mnie to żaden ajax, bo on nie tyczy się w ogóle PHP (poza jakimś XAJAX i Tigermouse). Chodzi mi po prostu o to, żeby to o co mi chodzi odbywało się bez przechodzenia na inne strony. Mam na razie pewien pomysł, ale nie wiem zbytnio jak napisać do tego kod.
Tabelę edycji wypisywałby sam php, przy okazji dołączając do tego co ma być wpisane w nich. W atrybucie value byłaby funkcja dolacztresc($pole)
Wtedy nastąpiłoby pobieranie danych i w każdym polu pokazywałyby się dane:
  1. <?php
  2. function dolacztresc($pole=0, $news="zaden"){
  3. if ($news!="zaden") {
  4. //odczytanie pola i sprawdzenie odpowiednika w bazie danych ($pole=1 to ID, $pole=2 to data wpisu itd...)
  5. return $tekst
  6. }
  7. }
  8. ?>

Ale nie wiem jak zrobić, aby po kliknięciu jakiejś opcji inputa select tak się stało mellow.gif
KCG
Nie wnikając w Twoją (nie)wiedzę, bo chyba nikt nie chce Cię zniechęcać, to wydaję mi się, że pojęcia o ajax'ie nie masz. Tworzysz funkcje w js, które wysyłają dane do odpowiedniego skryptu i je odbierają. Jeśli potrafisz zrobić, to co piszesz w PHP to zostaje Ci tylko wywołanie tych funkcji przez js. Użyj obiektu XMLHttpRequest.
siatkarzyna
Ja stworzyłem sobie taki prosty skrypt dodawani, edytowania, usuwania wiadomości tytuł i treść. Może ci się przydać

  1. <?php
  2.  
  3. // Dodawanie nowego newsa
  4.  
  5. if ($_POST['wysli']) {
  6.  
  7. $tytul = trim($_POST['tytul']);
  8. $wiadomosc = trim($_POST['wiadomosc']);
  9.  
  10.  
  11. $zapytanie = "INSERT INTO news (data, godzina, tytul, wiadomosc) VALUES (CURDATE(), CURTIME(), '$tytul', '$wiadomosc')";
  12. $wykonaj = mysql_query($zapytanie) or die (mysql_error());
  13.  
  14.  
  15. }
  16.  
  17. // Usuwanie newsa
  18.  
  19. if ($_GET['akcja']=='usun') {
  20.  
  21.    $id_do_usuniecia = $_GET['id'];
  22.    
  23.    // $id_do_usuniecia powinniśmy również sprawdzić. URL można zmanipulować, np.:
  24.    // ?akcja=usun&id=1 or 1=1
  25.  
  26.    $zapytanie ="DELETE FROM news WHERE id=$id_do_usuniecia";
  27.    $wynik = mysql_query($zapytanie) or die ('Nie usunięto produktu, blad: ' . mysql_error());
  28.    
  29.    }
  30.    
  31. // Edycja newsa aktualizacja do bazy
  32.  
  33. if ($_POST['edytuj2']) {
  34.  
  35.    $zapytanie = "UPDATE `news`  SET `tytul` = '$_POST[tytul]', `wiadomosc` = '$_POST[wiadomosc]' WHERE id ='$_POST[id]'";
  36.    $wykonaj = mysql_query($zapytanie) or die (mysql_error());
  37.    }
  38.    
  39. // Edycja newsa wyciagniecie tytulu i tresci
  40.  
  41. if ($_GET['akcja']=='edytuj') {
  42.  
  43.    $id_do_edycji = $_GET['id'];
  44.    $zapytanie = "SELECT * FROM news WHERE id =$id_do_edycji ";
  45.    $wynik = mysql_query($zapytanie) or die (mysql_error());
  46.    
  47.    while ($rekord = mysql_fetch_assoc($wynik)) {
  48.    
  49.    $tytul = $rekord[tytul];
  50.    $tresc = $rekord[wiadomosc];
  51.    }
  52.    }
  53.  
  54. ?>
  55. <!-- Formularz -->
  56. <form action="<?php echo $_SERVER['PHP_SELF'];  ?>" method="post">
  57. <table>
  58.    <tr>
  59.        <td>Tytul <input type="text" name="tytul" size="40" value="<?php echo $tytul; ?>"></td>
  60.    </tr>
  61.    <tr>
  62.        <td>
  63.            <textarea cols="10" name="wiadomosc" width="100%">
  64.                <?php echo $tresc; ?>    
  65.            </textarea>
  66.        </td>
  67.    </tr>
  68.    <tr>
  69.        <td>
  70.        <?php
  71.        
  72.            // Jesli jest akacja edutuj to wyswietla przycisk do uakualnienia newsa "edytuj2"
  73.            
  74.            if ($_GET['akcja']=='edytuj') {
  75.        ?>
  76.        <input type="hidden" name="id" value="<?php echo $id_do_edycji; ?>">
  77.        <input type="submit" name="edytuj2" value="edytuj">
  78.        <?php
  79.        
  80.            // Jesli akcja edytuj nie istnieje to wyswietlany jest przycisk "wysli" do wstawienia nowego newsa
  81.            
  82.            } else {
  83.        ?>
  84.            <input type="submit" name="wysli" value="wysli">
  85.        <?php } ?>
  86.        </td>
  87.    </tr>
  88. </table>
  89. </form>
  90.  
  91. <!-- Tu wypisuje wszytkie newsy  -->
  92. <?php  
  93. $zapytanie = "SELECT * FROM news ORDER BY id DESC";
  94. $wynik = mysql_query($zapytanie) or die (mysql_error());
  95. ?>
  96. <table>
  97.    <tr>
  98.        <td>id</td>
  99.        <td>Tytul</td>
  100.        <td>Data</td>
  101.        <td>Godzina</td>
  102.        <td>-</td>
  103.        <td>-</td>
  104.    </tr>
  105. <?php
  106. while ($rekord = mysql_fetch_assoc($wynik)) {
  107. ?>
  108.    <tr>
  109.        <td><?php echo $rekord[id]; ?></td>
  110.        <td><?php echo $rekord[tytul]; ?></td>
  111.        <td><?php echo $rekord[data]; ?></td>
  112.        <td><?php echo $rekord[godzina]; ?></td>
  113.        <!-- Edytuj  -->
  114.        <td><a href="<?php echo $_SERVER['PHP_SELF'];?>?akcja=edytuj&id=<?php echo $rekord['id'];?>">Edytuj</a></td>
  115.        <!-- Usun  -->
  116.        <td><a href="<?php echo $_SERVER['PHP_SELF'];?>?akcja=usun&id=<?php echo $rekord['id'];?>">Usun</a></td>
  117.    </tr>
  118. <?php
  119. }
  120. ?>
  121. </table>
Asmox
No i przydał się! Dzięki Tobie wpadłem na pomysł wykorzystania przycisków submit to edycji i usuwania newsów. Jeszcze zrobiłem parę funkcji, które sprawdzają, co zostało przekazane metodą post. Jak chcesz to mogę podać kod, jeśli cię to interesuje. Zresztą tylko ty tak naprawdę mi pomogłeś w tym temacie.
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.