Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Błąd nagłówka, usuwanie rekordów, Help
MateuszS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Witam. Mam taki problem że pod czas dodawania newsa miałem tak że po odświeżaniu dodawał mi się kolejny. Nie chcę aby tak było więc zastosowałem header wszystko widać poniżej

  1. <?php
  2. if($_GET['opcja']=='sklep') {
  3.  
  4. echo '<b><center>Aktualnie w naszym sklepiku znajdują się:</center><br /></b>';
  5.  
  6. $zapytanie = mysql_query("SELECT id,nazwa,cena FROM `cennik`");
  7. echo '<table class="a" border="1" cellspacing="3">
  8. <tr><td width="40"><b>ID</b></td><td width="200"><b>Nazwa produktu</b></td><td width="80"><b>Cena</b></td><td width="80"><b>Opcja</b></td></tr></table>';
  9. while($wynik = mysql_fetch_assoc($zapytanie)) {
  10. echo '<table class="a" border="1" cellspacing="3">
  11. <tr><td width="40">' . $wynik['id'] . '</td>
  12. <td width="200">' . $wynik['nazwa'] . '</td>
  13. <td width="80">' . $wynik['cena'] . '</td>
  14. <td width="80"><a href="page.php?id=14&opcja=sklep&usun=' . $wynik['id'] . '">Usuń</td></tr></table>';
  15.  
  16. if($_GET['usun']==TRUE) {
  17. $sql = mysql_query("DELETE * FROM `cennik` WHERE `id`='".$_GET['usun']."");
  18. }
  19. }
  20.  
  21. echo '<br />';
  22. echo '<b><center>Dodaj nowy produkt:</center></b><br />';
  23. echo '<form method="POST" action="page.php?id=14&opcja=sklep">Nazwa: <input type="text" name="nazwaproduktu" size="25">
  24. Cena: <input type="text" size="10" name="cenaproduktu" /> zł. <input type="submit" value="dodaj" /></form>';
  25.  
  26. if(empty($_POST['nazwaproduktu']) or empty($_POST['cenaproduktu'])) {
  27. echo '<font color="red">Wypełnij wszystkie pola</font>'; } else {
  28. $zapyt = mysql_query("INSERT INTO `cennik` (nazwa,cena) VALUES ('".$_POST['nazwaproduktu']."','".$_POST['cenaproduktu']."')");
  29. header("Location: page.php?id=14&opcja=sklep");
  30. }
  31.  
  32. }
  33. ?>


Wywala
Kod
[b]Warning[/b]:  Cannot modify header information - headers already sent by (output started at G:\xampp\xampp\htdocs\n\gora.php:128) in [b]G:\xampp\xampp\htdocs\n\page\admin.php[/b] on line [b]103


[/b]zaznaczam że ten kod to fragment dość dużej strony, którą musiałem przerobić. Wiem że jest setki tematów na temat headera ale w żadnym nie znalazłem rozwiązania, ten błąd jest chyba unikalny jakiś. Ob_start nie działa.

I drugi problem to chcę usunąć rekordy z bazy ale mój skrypt nie działa. Proszę o pomoc.
Go to the top of the page
+Quote Post
Foxx
post
Post #2





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


I przeczytałeś te setki tematów? Chyba nie bo byś nie dawał echo i header jedno pod drugim...
  1. <?php
  2. echo '<font color="red">Wypełnij wszystkie pola</font>';
  3. header("Location: page.php?id=14&opcja=sklep");
  4. ?>

Co jest w tej sytuacji unikalnego, nie możesz nic wysłać do przeglądarki żeby użyć header.

A co do usuwania rekordów:
  1. <?php
  2. if(isset($_GET['usun'])) {
  3.  $sql = mysql_query("DELETE * FROM `cennik` WHERE `id`='".$_GET['usun']."");
  4. }
  5. ?>

Raczej to zadziała ale dobrze radzę przefiltrować jeszcze zmienną $_GET['usun'] zanim ktoś wstawi Ci do url'a jakieś OR 1=1

Ten post edytował Foxx 16.03.2009, 16:30:28
Go to the top of the page
+Quote Post
MateuszS
post
Post #3





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Przyznam sie o tym nie wiedzialem, ale gdzie w takim razie mam dac ten header, nie dam go na poczatku bo wtedy nawet gdy doda do bazy rekord to pojawi sie po odsiezeniu i co odswiezenie bedzie dodawal nowe

ps moze cos zle robie ale usuwanie nie dziala

  1. <?php
  2. <td width="80"><a href="page.php?id=14&opcja=sklep&usun=' . $wynik['id'] . '">Usu&#324;</td></tr></table>';
  3.  
  4. if(isset($_GET['usun'])) {
  5. $sql = mysql_query("DELETE * FROM `cennik` WHERE `id`='".$_GET['usun']."");
  6. }
  7. ?>


Ten post edytował MateuszScirka 16.03.2009, 16:41:15
Go to the top of the page
+Quote Post
Foxx
post
Post #4





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Masz bałagan w kodzie, żeby to zrobić poprawnie powinieneś:

1. zapytania sql zapisać w takiej formie:
  1. <?php
  2. echo $query = "DELETE * FROM `cennik` WHERE id='".$_GET['usun']."'"; // tu brakowało cudzysłowia '
  3. $sql = mysql_query($query) or die(mysql_error());
  4. ?>

Dzięki czemu zobaczysz jakie zapytania ostatecznie są wykonywane po jakiej operacji na stronie i zobaczysz też ew. błędy mysql dzięki mysql_error().

2. co do przekierowania - chcesz przekierować do innego pliku czy to wszystko jest plikiem page.php? Bo jeżeli to jeden plik to header jest zbędny, po prostu wykonaj wszystkie operacje na początku pliku a potem wyświetl formularz. Jeżeli to jest przekierowanie do innego pliku, page.php to i tak wykonuj operacje na początku, razem z przekierowaniem, zanim cokolwiek wyślesz do przeglądarki (czyli formularz tak jak teraz).
Go to the top of the page
+Quote Post
MateuszS
post
Post #5





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


tak to wszystko wyonuje sie w jednym pliku page.php. Sa tam rozne panele, do dodawania newsow, kontaktow itp a ten panel to panel dodawania do cennika roznych rzeczy.

  1. <?php
  2. if($_GET['opcja']=='sklep') {
  3.  
  4. echo '<b><center>Aktualnie w naszym sklepiku znajdują się:</center><br /></b>';
  5.  
  6. $zapytanie = mysql_query("SELECT id,nazwa,cena FROM `cennik`");
  7. echo '<table class="a" border="1" cellspacing="3">
  8. <tr><td width="40"><b>ID</b></td><td width="200"><b>Nazwa produktu</b></td><td width="80"><b>Cena</b></td><td width="80"><b>Opcja</b></td></tr></table>';
  9. while($wynik = mysql_fetch_assoc($zapytanie)) {
  10. echo '<table class="a" border="1" cellspacing="3">
  11. <tr><td width="40">' . $wynik['id'] . '</td>
  12. <td width="200">' . $wynik['nazwa'] . '</td>
  13. <td width="80">' . $wynik['cena'] . '</td>
  14. <td width="80"><a href="page.php?id=14&opcja=sklep&usun=' . $wynik['id'] . '">Usuń</td></tr></table>';
  15. }
  16.  
  17. echo $query = "DELETE * FROM `cennik` WHERE id='".$_GET['usun']."'"; // tu brakowało cudzysłowia '
  18. $sql = mysql_query($query) or die(mysql_error());
  19.  
  20. echo '<br />';
  21. echo '<b><center>Dodaj nowy produkt:</center></b><br />';
  22. echo '<form method="POST" action="page.php?id=14&opcja=sklep">Nazwa: <input type="text" name="nazwaproduktu" size="25">
  23. Cena: <input type="text" size="10" name="cenaproduktu" /> zł. <input type="submit" value="dodaj" /></form>';
  24.  
  25. if(!empty($_POST['nazwaproduktu']) or !empty($_POST['cenaproduktu'])) {
  26. $zapyt = mysql_query("INSERT INTO `cennik` (nazwa,cena) VALUES ('".$_POST['nazwaproduktu']."','".$_POST['cenaproduktu']."')");
  27.  
  28. }
  29.  
  30. }
  31. ?>


Usuwanie nie dziala (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Noż kurw....
Go to the top of the page
+Quote Post
Foxx
post
Post #6





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Ok, usuwanie nie działa ale jaki jest rezultat echo $query; ? Jeżeli potem dzieją się w tym pliku jakieś przekierowania i nie możesz nic zobaczyć do daj po echo $query; instrukcję exit; A jeżeli nadal nic nie widać to znaczy że nie wchodzi do tego ifa więc URL ma może błędną postać.
Go to the top of the page
+Quote Post
MateuszS
post
Post #7





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Błąd wyskakuje gdy chcę usunąć rekord.

A co do tego odświeżania to poszedłem na latwizne i prymitywizm i zastosowalem

  1. <?php
  2. $zapyt = mysql_query("INSERT INTO `cennik` (nazwa,cena) VALUES ('".$_POST['nazwaproduktu']."','".$_POST['cenaproduktu']."')");
  3. echo '<script language="JavaScript">window.location="page.php?id=14";</script>';
  4. ?>


moze dam kod mojego kolegi rowniez z page.php gdzie jest usuwanie, sam go nie rozgryzlem

  1. <?php
  2. if ($_GET['opcja']=="kontakty") {
  3. echo "<form action='page.php?id=14&opcja=kontakty' method='post'><table class='a'>
  4. <tr><Td><b>Nazwa:</b></td><Td><input type='text' name='nazwa'></td></tr>
  5. <tr><td><b>Email:</td><td><input type='text' name='email'></td></tr>
  6. <tr><Td></td><Td><input type='submit' value='Dodaj' name='dodaj'></td></tr></table></form><br><br>";
  7. if ($_POST['dodaj']){
  8. if (empty($_POST['nazwa']) || empty($_POST['email'])) {
  9. echo "Uzupełnij wszystkie tabelki";
  10. } else {
  11. mysql_query("INSERT INTO `kontakt` (`nazwa`, `email`) VALUES('".$_POST['nazwa']."','".$_POST['email']."')");
  12. echo "Kontakt <b>{$_POST['nazwa']}</b> został poprawnie dodany do bazy danych...";
  13. }
  14. }
  15. if ($_GET['usun']==TRUE){
  16. mysql_query("DELETE FROM `kontakt` WHERE `id`='".$_GET['del']."'");
  17. header("Location: page.php?id=14&opcja=kontakty");
  18. }
  19. $kontakty=mysql_query("SELECT * FROM `kontakt`");
  20. echo "<table class='a' width=100%>
  21. <tr><td width=53%><b>Email</b></td><Td width=33%><b>Nazwa</b></td><Td><b>Opcje</b></tr>";
  22. while ($kontakt=mysql_fetch_assoc($kontakty)) {
  23. $ilosc=$ilosc+1;
  24. echo "<tr><td>{$kontakt['email']}</td><Td>{$kontakt['nazwa']}</td><Td> - <a href=\"page.php?id=14&opcja=kontakty&usun={$kontakt['id']}\">usuń</a></tr>";
  25. }
  26. echo "</table>";
  27. }
  28. ?>
Go to the top of the page
+Quote Post
Foxx
post
Post #8





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Cytat
Błąd wyskakuje gdy chcę usunąć rekord.

Wklej ten błąd, musimy go przeczytać żeby wiedzieć co nie gra.
Go to the top of the page
+Quote Post
MateuszS
post
Post #9





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


DELETE * FROM `cennik` WHERE id=''You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM `cennik` WHERE id=''' at line 1


gdy mam

  1. <?php
  2. if($_GET['opcja']=='sklep') {
  3. if(!empty($_POST['nazwaproduktu']) or !empty($_POST['cenaproduktu'])) {
  4. $zapyt = mysql_query("INSERT INTO `cennik` (nazwa,cena) VALUES ('".$_POST['nazwaproduktu']."','".$_POST['cenaproduktu']."')");
  5. echo '<script language="JavaScript">window.location="page.php?id=14&opcja=sklep";</script>';
  6. } elseif ($_POST['dodaj']) {
  7. echo '<center><font color="red">Wypełnij pola</font></center>'; }
  8.  
  9. echo '<b><center>Aktualnie w naszym sklepiku znajdują się:</center><br /></b>';
  10.  
  11. $zapytanie = mysql_query("SELECT id,nazwa,cena FROM `cennik`");
  12. echo '<table class="a" border="1" cellspacing="3">
  13. <tr><td width="40"><b>ID</b></td><td width="240"><b>Nazwa produktu</b></td><td width="60"><b>Cena</b></td><td width="60"><b>Opcja</b></td></tr></table>';
  14. while($wynik = mysql_fetch_assoc($zapytanie)) {
  15. echo '<table class="a" border="1" cellspacing="3">
  16. <tr><td width="40">' . $wynik['id'] . '</td>
  17. <td width="240">' . $wynik['nazwa'] . '</td>
  18. <td width="60">' . $wynik['cena'] . ' zł</td>
  19. <td width="60"><a href="page.php?id=14&opcja=sklep&usun=' . $wynik['id'] . '">Usuń</td></tr></table>';
  20. }
  21.  
  22. echo $query = "DELETE * FROM `cennik` WHERE id='".$_GET['usun']."'"; // tu brakowało cudzysłowia '
  23. $sql = mysql_query($query) or die(mysql_error());
  24.  
  25. echo '<br />';
  26. echo '<b><center>Dodaj nowy produkt:</center></b><br />';
  27. echo '<form method="POST" action="page.php?id=14&opcja=sklep">Nazwa: <input type="text" name="nazwaproduktu" size="25">
  28. Cena: <input type="text" size="10" name="cenaproduktu" /> zł. <input type="submit" value="dodaj" name="dodaj" /></form>';
  29.  
  30. }
  31. ?>
Go to the top of the page
+Quote Post
Foxx
post
Post #10





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


No ale czy nie widzisz tego, że zmienna usun nie ma wartosci? (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif)
Cytat
WHERE id=''


A po drugie, zajrzyj do manuala żeby przeczytać jak wygląda instrukcja delete:
http://www.w3schools.com/php/php_mysql_delete.asp
Go to the top of the page
+Quote Post
MateuszS
post
Post #11





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


  1. <?php
  2. WHERE id='".$_GET['usun']."'"
  3. ?>


Jak to nie ma? Wartosc to ID z bazy, i powinno usuwac wszystkie pola z ID ktory jest w gecie.
Go to the top of the page
+Quote Post
Foxx
post
Post #12





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Wiem, że w kodzie ma, ale zobacz jak wygląda jak się je wyświetli tuż przed wykonaniem:
Cytat
DELETE * FROM `cennik` WHERE id=''You have an error

To cytat z Twojego posta. Czyli zmienna $_GET['usun'] nie ma wartości, może nie mam jej przypisanej w urlu.

I pamiętaj o tej składni DELETE, która u Ciebie jest błędna.

Ten post edytował Foxx 16.03.2009, 17:43:52
Go to the top of the page
+Quote Post
MateuszS
post
Post #13





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


bleah...

  1. <?php
  2. <td width="60"><a href="page.php?id=14&opcja=sklep&usun=' . $wynik['id'] . '">Usu&#324;</td></tr></table>';
  3.  
  4. $_GET['usun'] = $ide;
  5. $query = "DELETE FROM `cennik` WHERE id='$ide";
  6. ?>


Nie mam pojecia szczerze mowiac o co ci chodzilo z ta pusta wartoscia ale mniejsza... zrobilem tak jak powyzej i uwaga!!!!! nie dziala ;/ Doceniam Twoje poswiecenie i licze ze jakos pomozesz mi z tego wybrnąć.

Ten post edytował MateuszScirka 16.03.2009, 18:06:29
Go to the top of the page
+Quote Post
Foxx
post
Post #14





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Jak sam widzisz, proces się składa z 2 elementów: linka i instrukcji wykonującej zapytanie DELETE na jego podstawie.
Zrób tak:
  1. <?php
  2. echo '<td width="60"><a href="page.php?id=14&opcja=sklep&usun=' . $wynik['id'] . '">Usuń</td></tr></table>';
  3.  
  4. $ide = $_GET['usun'];
  5. echo $query = "DELETE FROM `cennik` WHERE id='".$ide."'";
  6. mysql_query($query) or die(mysql_error());
  7. ?>


Teraz powinieneś już nie mieć błędów składni ale nadal możesz mieć ten problem co poprzednio - w zmiennej $_GET['usun'] nic nie było. Dlatego przyjrzyj się linkowi, jeżeli ma postać page.php?id=14&opcja=sklep&usun= to źle a powinno być page.php?id=14&opcja=sklep&usun=23 - powpisuj ręcznie jakieś id rekordów i sprawdź czy usuwa Ci z bazy, sprawdź czy zmienna, którą wstawiasz w to miejsce, czyli $wynik['id'] ma na pewno jakąś wartość.
Go to the top of the page
+Quote Post
MateuszS
post
Post #15





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Metoda dziala czesciowo. Pod tabela mam napisane DELETE blabla zwyczajnie wyswietlone a na pasku mam niby ...&usun=6 (przykladowe id) ale usuwa dopiero gdy klinne enter (czyi wejde w link)
Go to the top of the page
+Quote Post
Foxx
post
Post #16





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


Zobacz w źródle strony czy w linku jest jakiś numer id czy puste usun=
Nie wiem teraz czy mówisz o wpisanym id na sztywno czy to działa tak jak trzeba.
Wiadomo, że musisz kliknąć w link żeby usuń się wykonało.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 12:22