Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Mam problem z konkretnym skryptem...
Forum PHP.pl > Forum > Przedszkole
Vistule
Witam.
Mam taki skrypt, chciałbym aby kasował pojedyńcze rekordy z bazy tzn. jak klikam "Skasuj" to chciałbym aby mi kasował wszystkie powiązane rekordy z id. Jednak nie robi tego a ja nie mogę dojść czemu sad.gif ... Proszę też o wyrozumiałość, dopiero zaczynam swoją przygode z php.

Oto skrypt:
CODE
<?
$query='SELECT * FROM aktualnosci ORDER BY data_dodania DESC';
$result = mysql_query ($query);
while ($row = mysql_fetch_array($result))
{
echo('<table border="0">');
echo('<tr><td><font size="2"><b>'.$row['tytul'].'</b></font></td>
<td align="right">'.$row['id'].'</td></tr>');
echo('<tr><td colspan="2" style="text-align:justify;">'.$row['tresc'].'</td></tr>');
echo('<tr><td><form action="index.php" method="POST">
<input type="hidden" name="pokaz" value="aktualnosci_usun" />
<input type="radio" name="to_delete[]" value="id" />
<input type="submit" value="Skasuj" /></b></td><td align="right"></td></tr></form>');
echo('</table><hr />');
}
if(isset($_GET['to_delete']))
mysql_query("DELETE FROM aktualnosci WHERE id='".$row['id']."'");
?>


EDIT;
Z bazą łączy się z innego pliku, z tym nie ma problemu ponieważ rekordy bardzo ładnie się wyświetlają, z przyciskiem i radio-buttonem pod każdym wpisem, tylko kasować się nie chcą...

Pozdrawiam.
c3zi
Formularz wysylasz metoda POST, a sprawdzasz czy stnieje tablica $_GET ...
Vistule
Tak więc zmieniłem. Wszystko pięknie działa, przy $_GET pokazuje się nawet ładny linczek "pokaz=aktualnosci_usun&to_delete=2" ale niestety rekordy pozostają tam gdzie były sad.gif

Może źle rozumiem zapytanie zapytanie(?);

CODE




if(isset($_GET['to_delete']))

mysql_query("DELETE FROM aktualnosci WHERE id='".$row['id']."'");

Co dla mnie znaczy że jeżeli zaznaczyłem "radio" przy rekordzie id np. 2, gdzie id jest kluczem głównym to powinno zniknąć z wybranej tabeli, gdzie id=wybrane id, wszystko co jest powiązane z kluczem...
bartekmedon
Spróbuj tak :

  1. <?
  2. $query='SELECT * FROM aktualnosci ORDER BY data_dodania DESC';
  3. $result = mysql_query ($query);
  4. while ($row = mysql_fetch_array($result))
  5. {
  6. $id = addslashes($row['id']);
  7. echo('<table border="0">');
  8. echo('<tr><td><font size="2"><b>'.$row['tytul'].'</b></font></td>
  9. <td align="right">'.$row['id'].'</td></tr>');
  10.  echo('<tr><td colspan="2" style="text-align:justify;">'.$row['tresc'].'</td></tr>');
  11. echo('<tr><td><form action="index.php" method="GET">
  12. <input type="hidden" name="pokaz" value="aktualnosci_usun" />
  13. <input type="radio" name="to_delete[]" value="$id" />
  14. <input type="submit" value="Skasuj" /></b></td><td align="right"></td></tr></form>');
  15. echo('</table><hr />');
  16. }
  17. if(isset($_GET['to_delete']))
  18. {
  19.  $id = $_GET['to_delete'];
  20.  $wynik = mysql_query("DELETE FROM aktualnosci WHERE id='$id' ");
  21.  if ($wynik)
  22. { 
  23. print '<b>usunięto poprawnie rekord z bazy!</b>';
  24. }
  25. else
  26. {
  27. print 'Wystąpił błąd przy usuwaniu rekordu!';
  28.  }
  29. }
  30.  
  31. ?>
Vistule
Dzięki bartekmedon, teoretycznie wszystko działa poprawnie, jest tylko jeden mały mankament, trzeba 2 razy kliknąć w przycisk "Skasuj" aby wybrany rekord zniknął z listy. Jeżeli ktoś mógłby zerknąć jeszcze na ten kod i dopomóc w znalezieniu błędu byłbym bardzo wdzięczny.

Pozdtrawiam.

  1. <? 
  2.  
  3. $query='SELECT * FROM aktualnosci ORDER BY data_dodania DESC'; 
  4.  $result = mysql_query ($query); 
  5.  while ($row = mysql_fetch_array($result))
  6.  {  
  7.  echo('<table border="0">');  
  8.  echo('<tr><td><font size="2"><b>'.$row['tytul'].'</b></font></td>
  9.  <td align="right">'.$row['id'].'</td></tr>');  
  10.  echo('<tr><td colspan="2" style="text-align:justify;">'.$row['tresc'].'</td></tr>');  
  11.  echo('<tr><td><form action="index.php" method="GET">  
  12.  <input type="hidden" name="pokaz" value="aktualnosci_usun" />
  13.  <input type="radio" name="skasowany_zostal_news_id_" value="'.$row['id'].'" />
  14.  <input type="submit" value="Skasuj" /></b></td>
  15.  <td align="right"></td></tr></form>');
  16.  echo('</table><hr />'); 
  17.  
  18. if(isset($_GET['skasowany_zostal_news_id_']))
  19. {
  20. mysql_query("DELETE FROM aktualnosci WHERE id='".$_GET['skasowany_zostal_news_id_']."'");
  21. }
  22.  }
  23. ?>
batna
musisz przeniesc zapytanie o $_GET powyzej funkcji ktora drukuje artykuly
czyli:

  1. <? 
  2.  
  3. if(isset($_GET['skasowany_zostal_news_id_'])) mysql_query("DELETE FROM aktualnosci WHERE id='".$_GET['skasowany_zostal_news_id_']."'"); 
  4.  
  5. $query='SELECT * FROM aktualnosci ORDER BY data_dodania DESC';
  6. $result = mysql_query ($query);
  7. while ($row = mysql_fetch_array($result))  {
  8. echo('<table border="0">');
  9. echo('<tr><td><font size="2"><b>'.$row['tytul'].'</b></font></td>  
  10. <td align="right">'.$row['id'].'</td></tr>');
  11. echo('<tr><td colspan="2" style="text-align:justify;">'.$row['tresc'].'</td></tr>');
  12. echo('<tr><td><form action="index.php" method="GET">
  13. <input type="hidden" name="pokaz" value="aktualnosci_usun" />  
  14. <input type="radio" name="skasowany_zostal_news_id_" value="'.$row['id'].'" />  
  15. <input type="submit" value="Skasuj" /></b></td> <td align="right"></td></tr></form>'); 
  16. echo('</table><hr />');  
  17. }?>
Vistule
W takich momentach po prostu robi mi się wstyd brzydal.gif wstydnis.gif
Dziękuję Ci batna, gdyby nie Ty pewnie bym siedział nad tym jeszcze ze 2 dni axesmiley.png sciana.gif .

Pozdrawiam.

Witam.

Nie chce zakładać nowego tematu w sprawie tego samego programu dla tego zmieniłem opis i jeszcze raz poproszę Was o pomoc.

Mianowicie, przygotowałem sobie taki skrypcik:

  1. <?php
  2. $dzisiaj = getdate(); 
  3. $dzień  = date("d.m.Y H:i:s"); 
  4. $nowość = date("d.m.Y H:i:s",$row['data_dodania']);
  5. if ($dzień + 1 > $nowość)
  6. { 
  7. $nowosc1='class="nowosc"';
  8. }
  9. else {
  10. $nowosc1='class="staroc"';
  11. }
  12. ?>


W skrypciku chodzi o to że nowe wiadomości będą miały date w kolorze czerwonym a stare (powiedzmy po upływie 30 dni) w kolorze czarnym.
Jak daje -1 to mam czarne a jak +1 to czerwone to co chciałem...

Wyświetlanie wygląda następująco:
  1. <?php
  2. $query='SELECT * FROM aktualnosci ORDER BY data_dodania DESC LIMIT 10';
  3.  $result = mysql_query ($query);
  4.  while ($row = mysql_fetch_array($result)) 
  5.  {
  6.  echo('<table border="0">') ;
  7.  echo('<tr><td colspan="2"><div align="left" '.$nowosc.'><strong>'.date("d.m.Y H:i:s",$row['data_dodania']).'</strong></div></td></tr>');
  8.  echo('<tr><td colspan="2"><div align="left"><b>'.$row['tytul'].'</b></div></td></tr>');
  9.  echo('<tr><td colspan="2" style="text-align:justify;"><div align="justify">'.$row['tresc'].'</div></td></tr>');
  10.  echo('<tr><td><div align="left">Doda&sup3;: <b>'.$row['autor'].'</b></div></td></table>
  11. <hr />');
  12.  }
  13. ?>

Tak więc teoretycznie wszystko pasuje tyle że chciałbym aby porównywał tylko miesiące a nie całą datę z godziną i innymi przyległościami...

Znając moje szczęście to pewnie kwestia 3-4 znaków ale i tak bardzo prosił bym o pomoc za co z góry dziękuję.

Pozdrawiam.
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.