Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Problem ze skryptem
Salur
post
Post #1





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Witam, mam problem ze skryptem dodawania/usuwania/edytowania newsów na stronie wink.gif
A więc tak, skrypt wyswietlam w panelu z folderu /pages.
Gdy kliknę dodaj wyswietla sie białe tło.
Dodam jeszcze że głowna strona dodawania newsów to : localhost/panel/index.php?s=admin

Kod:
Kod
<?
session_start();
if(isset($_POST['pass'])) //Haslo przechowujemy w sesjach
{
        if($_POST['pass']=='haselko')
        {
        $_SESSION['admin']='ok';
        }
}
if((!isset($_SESSION['admin']) || $_SESSION['admin']!='ok') && $_GET['admin']!='wyloguj')
{
echo '<form method="POST" action="admin.php?main=admin">
        <p align="center">
        Niestety nie jestes zalogowany.<br> Proszę podac haslo:<br>
        <input type="password" name="pass" size="20"><br>
        <input type="submit" value="OK"></p>
</form>';
}
if(isset($_GET['admin']) && $_GET['admin']=='wyloguj')
{
$_SESSION['admin']='';
echo 'Nastapilo wylogowanie!<br> Przejdz do <a href="/index.php">strony glownej</a>...';
}
if($_SESSION['admin']=='ok')
{
$uchwyt=mysql_connect('xxxx','root','xxxxx')
        or die('Nieudane polaczenie z baza danych...');
mysql_select_db('news')
        or die('Nie udalo sie wybrac bazy danych...');
        
        echo '<b>Newsy:</b><br>';
        $link=mysql_query('SELECT * FROM news ORDER BY id desc');
        while($wiersz=mysql_fetch_array($link))
        {
        echo '<b>'.$wiersz['tytul'].'</b>';
        echo ' - ';
        echo $wiersz['data'];
        echo ' - ';
        echo '<a href="?s=admin.php?newsy=edytuj&id='.$wiersz['id'].'">Edytuj</a>';
        echo ' - ';
        echo '<a href="?s=admin.php?newsy=usun&id='.$wiersz['id'].'">Usun</a>';
        echo "<br>\n";
        }
        echo '<b>Dodaj newsa:</b><br>';
        echo '<form method="POST" action="?s=admin.php?newsy=dopisz">
                                Tytul:<br>
                                <input type="text" name="tytul" size="64"><br>
                                Tresc:<br>
                                <textarea rows="5" name="tresc" cols="42"></textarea><br>
                                <input type="submit" value="DODAJ">
        </form>';
        if(isset($_GET['newsy']) && $_GET['newsy']=='edytuj' && isset($_GET['id']))
        {
        $id=$_GET['id'];
        $link=mysql_query("SELECT * FROM news WHERE id='$id'");
        $wiersz=mysql_fetch_array($link);

        echo '<b>Edytuj newsa:</b><br>';
        echo '<form method="POST" action="?s=admin.php?newsy=wyedytuj&id='.$wiersz['id'].'">
                                Tytul:<br>
                                <input type="text" name="tytul" size="64" value="'.$wiersz['tytul'].'"><br>
                                Tresc:<br>
                                <textarea rows="5" name="tresc" cols="42">'.$wiersz['tresc'].'</textarea><br>
                                <input type="submit" value="EDYTUJ">
        </form>';
}
elseif(isset($_GET['newsy']) && $_GET['newsy']=='dopisz')
{
        $tytul=$_POST['tytul'];
        $tresc=$_POST['tresc'];
        $data=date('d.m.Y, H:i');

        mysql_query("INSERT INTO news VALUES(0,'$tytul','$tresc','$data')");
        echo 'Pomyslnie dodalem newsa o tytule: <b>'.$tytul.'</b> i o treści: <b>'.$tresc.'</b> z datą'.$data.'.';

}
elseif(isset($_GET['newsy']) && $_GET['newsy']=='wyedytuj' && isset($_GET['id']))
{
        $tytul=$_POST['tytul'];
        $tresc=$_POST['tresc'];
        $id=$_GET['id'];

        mysql_query("UPDATE news SET tytul='$tytul' tersc='$tresc' WHERE id='$id'");
        echo 'Pomyslnie wyedytowalem newsa! <br> Jego nowy tytul to: <b>'.$tytul.'</b>, a tresc: <b>'.$tresc.'</b>';

}
elseif(isset($_GET['newsy']) && $_GET['newsy']=='usun' && isset($_GET['id']))
{
        $id=$_GET['id'];

        mysql_query("DELETE FROM news WHERE id='$id'");
        echo 'Pomyslnie usunalem newsa numer '.$id.'!';

}
?>

<?
}
?>


Ten post edytował Salur 29.12.2014, 12:58:56
Go to the top of the page
+Quote Post
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Biała strona mówi jasno, włącz raportowanie błędów. Temat: Jak poprawnie zadac pytanie
Go to the top of the page
+Quote Post
Forti
post
Post #3





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


1. włącz wyświetlanie błędów.

na początku pliku index.php daj:



2. Ten kod jest brzydki.

  1. elseif(isset($_GET['newsy']) && $_GET['newsy']=='dopisz')
  2. {
  3. $tytul=$_POST['tytul'];
  4. $tresc=$_POST['tresc'];
  5. $data=date('d.m.Y, H:i');
  6.  
  7. mysql_query("INSERT INTO news VALUES(0,'$tytul','$tresc','$data')");
  8. echo 'Pomyslnie dodalem newsa o tytule: <b>'.$tytul.'</b> i o treści: <b>'.$tresc.'</b> z datą'.$data.'.';
  9.  
  10. }


dlaczego w VALUES masz 0? Usuń do insert i zobacz czy wyświetla tobie echo. Następnie włącz wyświetlanie błędów i sprawdź co się dzieje.


edit: o Turson mnie ubiegł wink.gif

Ten post edytował Forti 29.12.2014, 13:10:07


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
Go to the top of the page
+Quote Post
Salur
post
Post #4





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Po włączeniu raportowania błędów nic nie wywala, jedynie to:
Screen

Gdy wchodzę w zakładkę np. edytuj nic się nie pokazuje:

Screen


//

Usunąłem i nie wyswietla z echo.

Ten post edytował Salur 29.12.2014, 13:17:49
Go to the top of the page
+Quote Post
Turson
post
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Wklej w google tekst komunikatu a zobaczysz milion odpowiedzi
Go to the top of the page
+Quote Post
Salur
post
Post #6





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Powiem Ci ze chyba to nie tego wina bo jak skrypt wrzucę do głownego katalogu to wszystko działa, co prawda wywala NOTICE ale działa.
Go to the top of the page
+Quote Post
SpiritCode
post
Post #7





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Cytat
mysql_query("INSERT INTO news VALUES(0,'$tytul','$tresc','$data')");


Radziłbym zwrócić na to uwagę.
sprawdź czy nie duplikujesz rekordu o id = 0. wink.gif
Go to the top of the page
+Quote Post
Salur
post
Post #8





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Przy kliknięciu na EDYTUJ przy danym newsie prawidłowo rozpoznaje id.
Kod
localhost/panel/admin.php?newsy=edytuj&id=5


Ten post edytował Salur 29.12.2014, 13:35:35
Go to the top of the page
+Quote Post
SpiritCode
post
Post #9





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Spoko ale zacząłeś o dodawaniu newsa i tym, że dodanie newsa wyświetla Ci białą stronę.

Z tego co widzę formularz dodawania newsa obsługuje ten fragment skryptu:
  1. elseif(isset($_GET['newsy']) && $_GET['newsy']=='dopisz')
  2. {
  3. $tytul=$_POST['tytul'];
  4. $tresc=$_POST['tresc'];
  5. $data=date('d.m.Y, H:i');
  6.  
  7. mysql_query("INSERT INTO news VALUES(0,'$tytul','$tresc','$data')");
  8. echo 'Pomyslnie dodalem newsa o tytule: <b>'.$tytul.'</b> i o treści: <b>'.$tresc.'</b> z datą'.$data.'.';
  9.  
  10. }


A ten fragment ewidentnie próbuje dodać do bazy rekord o ID 0 (zakładając, że pierwsza kolumna to id a tak zapewne jest).
Dodatkowo dobrym nawykiem jest sprawdzanie czy istnieją dane klucze w tablicy $_POST ale tu już się czepiam tongue.gif
Go to the top of the page
+Quote Post
Salur
post
Post #10





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Czyli co radzisz zrobić?

Jesli plik admin.php (czyli odpowiadające za newsy) jest w głównym katalogu na serwerze wszystko działa (dodawanie, usuwanie, edytowanie).

Ten post edytował Salur 29.12.2014, 13:47:34
Go to the top of the page
+Quote Post
SpiritCode
post
Post #11





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Zmienić inserta

Dodaj kolumny(te które uzupełnisz czyli tytuł, treść i datę). ID powinno samo się uzupełnić jeśli dałeś mu atrybut AI.
Przykładowo:
  1. mysql_query("INSERT INTO news(tytul, tresc, data) VALUES('$tytul','$tresc','$data')");


edit: Teraz dopiero przeczytałem Twojego posta. Daj znać czy to coś pomoże. Jeśli nie to znajdzie się inne rozwiązanie wink.gif

Ten post edytował SpiritCode 29.12.2014, 13:52:34
Go to the top of the page
+Quote Post
Forti
post
Post #12





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Przecież JA ci napisałęm wyżej na co masz zwrócić uwagę. CZYTAJ co się do Ciebie piszę, kolego.

Jakie kolumny ma tabela news w bazie danych? Ma 4 i pierwsza z nich to ID? Zakład o 100, że duplikujesz ID 0 i dlatego nic nie robi.
Ten plik admin.php próbujesz gdzieś include? Jeżeli tak to duplikujesz session_start();. Turson Ci to juz napisałem.

Naucz się czytać ze zrozumieniem skoro chcesz brać się za programowanie. 90% tej pracy to czytanie - udowodnione już nie jednokrotnie.


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
Go to the top of the page
+Quote Post
SpiritCode
post
Post #13





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Forti ma rację. Trzeba umieć czytać wink.gif
Go to the top of the page
+Quote Post
Salur
post
Post #14





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Gdy dodałem to:
  1. <?php
  2. ?>
  3. <?PHP include 'admin.php'; ?>


Teraz nic się nie wyświetla.

Ten post edytował Salur 29.12.2014, 14:00:56
Go to the top of the page
+Quote Post
SpiritCode
post
Post #15





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Jeżeli w skrypcie includujesz skrypt nie musisz dodatkowo w includowanym dodawać session_start(); bo sesję rozpoczyna skrypt nadrzędny jeśli to w nim zapiszesz.
Ale na dobrą sprawę drugi session_start w tym przypadku jest ignorowany.
Tylko po co?
Go to the top of the page
+Quote Post
Salur
post
Post #16





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Ja tego nie chce includować, tylko sprawdziłem czy to coś da.

Daje link do panelu na stronie, zobaczycie jak to działa.
STRONA

Hasło to : test

Ten post edytował Salur 29.12.2014, 14:09:09
Go to the top of the page
+Quote Post
Forti
post
Post #17





Grupa: Zarejestrowani
Postów: 655
Pomógł: 73
Dołączył: 2.05.2014

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


Twoja strona wogole nie działa.

Zrobiłeś to z tym insert do bazy? Aby nie dodawało tego 0 ;]


--------------------
Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.

Fachowo.co

Behance.net/fachowo
Go to the top of the page
+Quote Post
Salur
post
Post #18





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Literówka była, juz działa.

//Edit
Tak, zrobiłem ale nadal o samo.

Ten post edytował Salur 29.12.2014, 14:11:54
Go to the top of the page
+Quote Post
SpiritCode
post
Post #19





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Jeżeli nie chcesz includować to tego nie rób wink.gif

Wróć do tego co miałeś gdzie działał ci formularz chociaż.

noticem o session_start się nie przejmuj. Jeśli uważasz, ze powinna tam być inicjalizacja sesji to dodaj zamień

w admin.php na


Notice powinien się nie pojawiać.
Go to the top of the page
+Quote Post
Salur
post
Post #20





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Notice się już nie pokazuje wink.gif lecz nadal nic nie działa ;[

Jakieś propozycje?

Ten post edytował Salur 29.12.2014, 14:27:34
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 22.08.2025 - 10:27