Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Update w MySQL za pomocą select?
Forum PHP.pl > Forum > Przedszkole
tr86
Zrobiłem upload do wysyłania dokumentów. Wraz z pomyślnym załadowaniem pliku dodawane są dane do bazy do tabeli 'artykuly', która zawiera między innymi pola: id, id_konferencji, nazwa_artykulu i akceptacja. Sprawa dotyczy tego ostatniego pola 'akceptacja'. Chodzi o to, żeby ktoś nie wrzucał bajek o czerwonym kapturku, tylko materiały związane z daną tematyką, dlatego najpierw chciałem, aby dokumenty były dodawane do tzw. "poczekalni", do której dostęp będzie miał tylko uprawniony użytkownik i po przejrzeniu dokumentu będzie mógł zaakceptować artykuł lub odrzucić. Zaakceptowany artykuł zostałby przeniesiony do downloadu, a odrzucony usunięty z bazy danych.

Domyślnie pole akceptacja ma wartość akceptacja='oczekuje'.
Po wybraniu z listy rozwijanej 'TAK' dokument zostaje przeniesiony do downloadu, a wybranie 'NIE' usunięcie go.

Oto pętla, która wypisuje dokumenty związane z daną konferencją:


  1. while ($download = mysql_fetch_array($zapytanie, MYSQL_NUM))
  2. {
  3. echo ('<table border="1" width="90%" align="center">
  4. <tr bgcolor="#3399cc">
  5. <td style="width: 30px;">'.$lp++.'</td>
  6. <td style="width: 120px;">'.$download[3].'</td>
  7. <td style="width: 150px;">'.$download[4].' '.$download[5].' '.$download[6].'</td>
  8. <td style="width: 80px;"><center><a href="ftp://konferencje-online.yoyo.pl/dokumenty/'.$download[2].'"><img src="download.jpg" border="0"></a></center></td>
  9. <td style="width: 60px;"><b><center><form action="organizowane_konf.php?co=dok_oczek2&wynik='.$download[1].'" method="post">
  10. <select name="akceptacja" style="width:80px;">
  11. <option value="oczekuje">oczekuje</option><option value="NIE">NIE</option><option value="TAK">TAK</option>
  12. </b></center></td></tr>');
  13. echo('</table>');
  14. }
  15. echo('<input type=submit value="Zapisz"></form>');



A to 2 plik, do którego odwołuje się formularz:

  1. $connect = mysql_connect("mysql2.yoyo.pl","user","haslo")
  2. or die ("Nie można nawiązać połączenia.");
  3. or die ("Nie ma takiej bazy danych.");
  4.  
  5. $zapytanie = mysql_query ("select * from artykuly where id_konf='$wynik'")
  6. or die('błąd: '.mysql_error());
  7.  
  8. $wynik = mysql_fetch_array($zapytanie);
  9.  
  10. if (!$db_lnk = mysql_connect("mysql2.yoyo.pl", "user", "haslo"))
  11. {
  12. echo('<div id="TRESC"><center><font color="red">Wystąpił błąd podczas proby połączenia z serwerem MySQL...</font></center></div><br>');
  13. return;
  14. }
  15. if(!mysql_select_db('baza'))
  16. {
  17. echo('<div id="TRESC"><center><font color="red">Wystąpił błąd podczas wyboru bazy danych.</font></center></div><br>');
  18. return;
  19. }
  20.  
  21. $query = "UPDATE artykuly SET
  22. akceptacja='$akceptacja'
  23. WHERE id='$wynik'";
  24.  
  25. if(!mysql_query($query, $db_lnk))
  26. {
  27. echo('<div id="TRESC"><center><font color="red">Wystąpił błąd zapytanie zostało odrzucone...</font></center></div><br>');
  28. return;
  29. }
  30.  
  31. {
  32. echo('<div id="TRESC"><center><font color="red">Wystąpił błąd podczas zamykania połączenia z serwerem MySQL...</font></center></div><br>');
  33. }
  34.  
  35. echo('<center><br><br><p><font size="1" color="navy">Operacja wykonana pomyślnie.</font></p></center>');
  36. echo ('<br><br><center><a href=organizowane_konf.php?co=dok_oczek&wynik='.$wynik[1].'>Cofnij</a></center>');
  37. echo ('<br><br><center><a href=organizowane_konf.php?co=szczegoly&wynik='.$wynik[1].'>Wróć do strony konferencji</a></center>');



Problem w tym, że zapytanie:
  1. $query = "UPDATE artykuly SET
  2. akceptacja='$akceptacja'
  3. WHERE id='$wynik'";

nie wykonuje się...
Czy ktoś wie w czym leży błąd?
Może coś nie tak z tym select'em?
Może ktoś ma inny pomysł na wykonanie tego?
Z góry dziękuję za pomoc.
Zosiek
zobacz sobie co zawiera zmienna $wynik przed update

  1. echo $wynik;
  2. $query = "UPDATE artykuly SET
  3. akceptacja='$akceptacja'
  4. WHERE id='$wynik'";
tr86
Zmienna $wynik zawiera nr ID artykułu.
Zosiek
Jak może zawierać id po jej wyświetleniu jeśli jest do niej przypisana tablica??

  1. $zapytanie = mysql_query ("select * from artykuly where id_konf='$wynik'")
  2. or die('błąd: '.mysql_error());
  3.  
  4. $wynik = mysql_fetch_array($zapytanie);


Musi zwrócić wartość Array a dopiero jak dasz np.
  1. $wynik['id'] ///(u ciebie chyba id_konf)

to wyświetli liczbę.
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.