Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z DELETE
Forum PHP.pl > Forum > Przedszkole
nevar
Czy w tym skrypcie jest coś nie tak??
Nic nie wykonuje, pusty ekran się pojawia:(

  1. <?
  2.  
  3. include ("baza.php");
  4. $baza = mysql_connect ($mysql_host, $mysql_user, $mysql_haslo) or die ("Brak połączenia");
  5. $db = mysql_select_db($mysql_baza);
  6.  
  7. $id = $_POST['id_pyt'];
  8. $usun = "DELETE * FROM quiz where id=$id"; 
  9. $usun = mysql_query($usun);
  10. echo 'Zmieniono: '.mysql_affected_rows().'<br>'; 
  11. if ($usun) {
  12. echo '<p>Pytanie usunięto</p>';
  13. } else {
  14. echo mysql_error(); echo '<p>Błąd! Spróbuj ponownie</p>';
  15.  
  16. }
  17.  
  18. }
  19. ?>
Master Miko
Usuń * z zapytania delete, daj apostrofy pomiędzy $id i będzie śmigać, no i daj LIMIT 1 na wszelki wypadek.
nevar
Zrobiłem tak jak mówisz

Skrypt wygląda tak:

  1. <?
  2.  
  3. include ("baza.php");
  4. $baza = mysql_connect ($mysql_host, $mysql_user, $mysql_haslo) or die ("Brak połączenia");
  5. $db = mysql_select_db($mysql_baza);
  6.  
  7. $id = $_POST['id_pyt'];
  8. $usun = "DELETE FROM quiz where id='$id' LIMIT 1"; 
  9. $usun = mysql_query($usun);
  10.  
  11. echo 'Zmieniono: '.mysql_affected_rows().'<br>'; 
  12. if ($usun) {
  13. echo '<p>Pytanie usunięto</p>';
  14. } else {
  15. echo mysql_error(); echo '<p>Błąd! Spróbuj ponownie</p>';
  16.  
  17. }
  18.  
  19. }
  20. ?>


ale dalej nic nie wykonuje:(

Wcześniej wychodzę z takiego skryptu:

  1. <?php
  2. include ("baza.php");
  3. $baza = mysql_connect ($mysql_host, $mysql_user, $mysql_haslo);
  4. mysql_select_db($mysql_baza);
  5. $wynik = mysql_query("select * from quiz");
  6.  
  7.  
  8. if (mysql_num_rows ($wynik)>0)
  9. {
  10. $i=1;
  11. while($pytanie = mysql_fetch_array($wynik))
  12. {
  13. print '<font face="Arial" size="3">'.$i.'.</font>';
  14. print '<font face="Arial" size="3">'.$pytanie['pyt'].'</font><br>';
  15. print '<font face="Arial" size="2"><input type="radio" name=p'.$pytanie['id'].' value="a" />'.$pytanie['odpa'].'<br></font>';
  16. print '<font face="Arial" size="2"><input type="radio" name=p'.$pytanie['id'].' value="b" />'.$pytanie['odpb'].'<br></font>';
  17. print '<font face="Arial" size="2"><input type="radio" name=p'.$pytanie['id'].' value="c" />'.$pytanie['odpc'].'<br></font>';
  18. print '<font face="Arial" size="3" color="green">Poprawna odp to:'.$pytanie['odppraw'].'</font><br>';
  19.  print '<input type="button" value="Edytuj" onClick="window.open('edytuj.php?id_pyt='.$pytanie['id'].'''nazwa').focus(); return false" />';
  20. print '<input type="button" value="Usuń" onClick="if(window.confirm('Czy na pewno ?')){window.location='usun.php?id_pyt='.$pytanie['id'].'';}">';
  21. print '<br><hr>';
  22. $i++;
  23. }
  24. }
  25.  
  26. ?>


Klikam przycisk Usuń, jeszcze jest potwierdzenie ale dalej nic nie wykonuje
Michasko
Może niepotrzebnie, ale dziwi mnie to:

  1. <?php
  2. $usun = "DELETE FROM quiz where id='$id' LIMIT 1"; 
  3. $usun = mysql_query($usun);
  4. ?>


zmienna usun ma teraz wartosc 'mysql_query($usun)' zamiast 'DELETE FROM quiz where id='$id' LIMIT 1' tak więc zapytanie sie raczej nie wykona, choć moge sie mylić.
kwiateusz
no i sie myslisz bo kod php jest od prawej do lewej przypisywany winksmiley.jpg wiec najpier wykona sie zapytanie potem zostanie rpzypisane do zmienne winksmiley.jpg
nevar
No więc co w takim razie jest nie tak z tym?

Nie wiem czy on dobrze pobiera id

Przekazywane jest tak:

  1. <?php
  2. <input type="button" value="Usuń" onClick="if(window.confirm('Czy na pewno ?')){window.location='usun.php?id_pyt='.$pytanie['id'].'';}">
  3. ?>


usun.php to ten skrypt z DELETE
Master Miko
a dałeś refresh snitch.gif ?

Sprawdź w skrypcie tam gdzie masz przycik "usuń"
czy ściężka to usun.php?id_pyt=no i id jakiegos tam,

w usun.php daj echo tego posta i spradz co wyjdzie.
jesli jest ok, sprawdz czy masz prawa w bazie danych co do kasowania.
nevar
Ścieżka jest w porządku

kiedy kliknę na przycisk usuń w linku mam np. http://wloclawek.wsinf.edu.pl/~prempals/usun.php?id_pyt=9

ale nie usuwa mi tego pytania, w ogóle nic nie robi, nic nie wyświetla

Prawa do kasowania mam, sprawdzałem przez phpMyAdmin
Master Miko
Daj to:
  1. <?php
  2.  
  3.  
  4. ?>


na samej górze skryptu (usuń.php) ... i powiedz co powie
nevar
Dałem to ale dalej nic nie wyświetla, pusty ekran sad.gif
Master Miko
To powiedz serverowi że jest głupi i ma wszy.
Nie widzę żadnego błędu już :|


a tak serio..

wykasuj tę linię:

  1. <?php
  2.  
  3. $id = $_POST['id_pyt'];
  4. $usun = "DELETE FROM quiz where id='$id' LIMIT 1"; 
  5. $usun = mysql_query($usun);
  6.  
  7. ?>


i powiedz co Ci się pokaże... lub nie.
skowron-line
moze daj w tym skrypcie echo $id i zobacz czy wogole przekazuje zmienna,
a i moze powinienies zrobic

  1. <?php
  2. $usun = 'DELETE FROM quiz where id="'.$id.'" LIMIT 1';
  3. ?>


ale jestem tylko czlowiekiem i moge sie mylic
nospor
1) skoro id to liczba, to nie musi byc w ciapkach
2) skoro id jest przekazywane w url to musi byc pobierane z $_GET a nie z $_POST
3) skoro id, zapamietywana jest w parametrze o nazwie id_pyt, to na grzyba dobierac sie do niego poprzez zmienna o nazwie id ?

  1. <?php
  2. $usun = 'DELETE FROM quiz where id='.((int)$_GET['id_pyt']).' LIMIT 1';
  3. ?>

ten (int) to po to, by jak ktos bedzie chcial wlam zrobic, to zeby mu sie nie udalo

ps: i prosze poprawic tytul o znacznik zgodnie z zasadami forum przedszkole
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.