Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Update + Delete dubli
Forum PHP.pl > Forum > Przedszkole
boro11
Witam!

Mam skrypt, który sprawdza mi zapisy ludzi i działa całkiem sprawnie. Ma niestety jedną wadę. Jeśli ktoś sam nie doda sobie strony to skrypt automatycznie dodane to do bazy, niestety często jest tak, że ktoś ma inną nazwę użytkownika w moim serwisie i w innych serwisach do których dołączył.

Powstaje wtedy taka sytuacja:



Gdzie rekord drugi był w tabeli wcześniej, dlatego rekord pierwszy ma status "Decline" dzieje się tak dlatego, że się dublują. Chciałbym aby w sytuacji takiej, że już istnieje taki "nickinsite" jak podał user aktualizowało ten bieżący zamiast dodawać nowy rekord. Do zaktualizowania w takim wypadku jest tylko wartość "nick" oraz usunięcie nie potrzebnego (1 rekordu).

Jest jakaś komenda w mysql która wyłapie takie duble i wykona to co podałem wyżej?
kda
sprawdzaj podczas przekazywania zmiennej do tabeli nickinsite jeżeli istnieje to ma edytować , jeżeli nie istnieje to ma dodać nowy wiersz

  1.  
  2. //zapytanie do tabeli czy taki login istnieje w tabeli
  3.  
  4. $zapytanie = "SELECT * FROM nazwa_tabeli where nickinsite = '$podany_login' ";
  5. while ($rekord = mysql_fetch_array ($zapytanie)) {
  6. $id_baza = $rekord[0];
  7. $nickinsite_baza = $rekord[2];
  8.  
  9. }
  10.  
  11. if($nickinsite_baza == $podany_login){
  12. $query = "UPDATE nazwa_tabeli SET nickinsite ='$podany_login' WHERE id='$id_baza' ;";
  13. $wynik = mysql_query ($query);
  14. } else {
  15. // a tu wstaw wstawianie nowego rekordu do bazy
  16. }
SUICIDE
Witam napiszę tutaj bo nie chcę robić dubli.
Zaznaczę, że dopiero zaczynam bawić się w PHP. Więc proszę o wyrozumiałość.

Mam zrobiony formularz Dodawania newsów na danej podstronie wraz z opcjami usuń i edytuj.
Wyświetlanie newsów działa bardzo dobrze, kasowanie też. lecz problem pojawia się w edycji.

Poniżej fragment mojego kodu.

  1. if ($_GET['akcja']=='edit') {
  2.  
  3. $id_do_edycji = $_GET['id'];
  4.  
  5. $zapytanie = "SELECT * id=$id_do_edycji FROM home";
  6. $wynik1 = mysql_query("SELECT * FROM home where id=$id_do_edycji");
  7. while($r = mysql_fetch_array($wynik1)) {
  8.  
  9. $temat1 = stripslashes($r[temat]);
  10. $tresc1 = stripslashes($r[tresc]);
  11. echo '
  12. <form action="edit_home.php" method="post">
  13.  
  14. <label for="temat"><font color=red size=3>Edit Temat:</font></label> <input type=text name=temat value="'.$temat1.'" style="width:600px;"> <br>
  15. <label for="tresc"><font color=red size=3>Edit Tresc:</font></label> <textarea name="tresc" noresize style="width:600px;height:120px;">'.$tresc1.'</textarea><br>
  16.  
  17. <input type=submit name=submit2 value=submit2 />
  18. </form>
  19. ';
  20.  
  21. $submit2 = $_POST['submit2'];
  22. if (isset($submit2)){
  23. $dodaj2 = mysql_query("UPDATE home SET `temat`='xxxx1111xxxxxx', `tresc`='xxxxxxx' WHERE `id`='36'");
  24. }


Zapytanie dodałem takie testowe w celu sprawdzenia czy w ogóle zadziała zapytanie mysql. Oczywiście mając newsa z id =1
Gość
Cytat(SUICIDE @ 31.10.2012, 21:20:15 ) *
  1. $dodaj2 = mysql_query("UPDATE home SET `temat`, `tresc` values 'jakistemat', 'jakastresc' WHERE `id`='1'");


Zapytanie dodałem takie testowe w celu sprawdzenia czy w ogóle zadziała zapytanie mysql. Oczywiście mając newsa z id =1

  1. $dodaj2 = mysql_query("UPDATE home SET `temat`='jakistemat', `tresc`='jakastresc' WHERE `id`='1'");
SUICIDE
użyłem przed chwilą owego zapytania w phpmyadmin i poszło, ale przez skrypt nie chce puść.
Wydaje mi się, że problem jest z funkcją if akcja == edit............


  1. if ($_GET['akcja']=='edit') {
  2.  
  3. $id_do_edycji = $_GET['id'];
  4.  
  5. $zapytanie = "SELECT * id=$id_do_edycji FROM home";
  6. $wynik1 = mysql_query("SELECT * FROM home where id=$id_do_edycji");
  7. while($r = mysql_fetch_array($wynik1)) {
  8.  
  9. $temat1 = stripslashes($r[temat]);
  10. $tresc1 = stripslashes($r[tresc]);
  11. echo '
  12. <form action="edit_home.php" method="post">
  13.  
  14. <label for="temat"><font color=red size=3>Edit Temat:</font></label> <input type=text name=temat value="'.$temat1.'" style="width:600px;"> <br>
  15. <label for="tresc"><font color=red size=3>Edit Tresc:</font></label> <textarea name="tresc" noresize style="width:600px;height:120px;">'.$tresc1.'</textarea><br>
  16.  
  17. <input type=submit name=submit2 value=submit2 />
  18. </form>
  19. ';
  20.  
  21. $submit2 = $_POST['submit2'];
  22. if (isset($submit2)){
  23. $dodaj2 = mysql_query("UPDATE home SET `temat`='xxxx1111xxxxxx', `tresc`='xxxxxxx' WHERE `id`='36'");
  24. }
  25.  
  26. }
  27. }
Damonsson
SELECT * id=$id_do_edycji FROM home? - a dobra, nie wykorzystujesz tego biggrin.gif

Jeżeli podejrzewasz, że gdzieś jest błąd, sprawdź to:

  1. if ($_GET['akcja']=='edit') {
  2. die('Jednak jest wszystko ok');
  3.  
  4.  
  5. $id_do_edycji = $_GET['id'];
  6.  
  7.  
  8.  
  9. $zapytanie = "SELECT * id=$id_do_edycji FROM home";
  10.  
  11. $wynik1 = mysql_query("SELECT * FROM home where id=$id_do_edycji");
  12.  
  13. while($r = mysql_fetch_array($wynik1)) {
  14.  
  15.  
  16.  
  17. $temat1 = stripslashes($r[temat]);
  18.  
  19. $tresc1 = stripslashes($r[tresc]);
  20.  
  21. echo '
  22.  
  23. <form action="edit_home.php" method="post">
  24.  
  25.  
  26.  
  27. <label for="temat"><font color=red size=3>Edit Temat:</font></label> <input type=text name=temat value="'.$temat1.'" style="width:600px;"> <br>
  28.  
  29. <label for="tresc"><font color=red size=3>Edit Tresc:</font></label> <textarea name="tresc" noresize style="width:600px;height:120px;">'.$tresc1.'</textarea><br>
  30.  
  31.  
  32.  
  33. <input type=submit name=submit2 value=submit2 />
  34.  
  35. </form>
  36.  
  37. ';
  38.  
  39.  
  40.  
  41. $submit2 = $_POST['submit2'];
  42.  
  43. if (isset($submit2)){
  44.  
  45. $dodaj2 = mysql_query("UPDATE home SET `temat`='xxxx1111xxxxxx', `tresc`='xxxxxxx' WHERE `id`='36'");
  46.  
  47. }
  48.  
  49.  
  50.  
  51. }
  52.  
  53. }
Gość
  1. <form action="edit_home.php" method="post">


Zmiana na

  1. <form action="edit_home.php?akcja=edit&id='.$id_do_edycji.'" method="post">


No i oczywiscie ....

  1. die('Jednak jest wszystko ok');


Wiesz chyba co z tym zrobic
SUICIDE
Witam. Wciąż ten sam problem od wczoraj.

wyświetla mi w formularzu edycji. Treści pobrane z bazy danych w polu temat i treść w celu eydcji.
Nie mniej jednak nie bardzo wiem jak zrobić, żeby nowo zaaktualizowany wpisc w polach temat i treść wprowadzić do bazy.

Ostatnie zapytanie "UPDATE działa po części. Czyli wprowadza tylko to co w skrypcie podałem mu na sztywno.
Więc problem tkwi z tego co sądzę w pobieraniu nowej zawartości .

  1. if ($_GET['akcja']=='edit') {
  2.  
  3. $id_do_edycji = $_GET['id'];
  4.  
  5. $zapytanie = "SELECT * id=$id_do_edycji FROM home";
  6. $wynik1 = mysql_query("SELECT * FROM home where id=$id_do_edycji");
  7. while($r = mysql_fetch_array($wynik1)) {
  8. $wyswietl_temat = $r[temat];
  9. $wyswietl_tresc = $r['tresc'];
  10. echo '
  11.  
  12. <form action="edit_home.php?akcja=edit&id='.$id_do_edycji.'" method="post">
  13.  
  14.  
  15.  
  16. <label for="temat"><font color=red size=3>Edit Temat:</font></label> <input type=text name=temat value="'.$r['temat'].'" style="width:600px;"> <br>
  17.  
  18. <label for="tresc"><font color=red size=3>Edit Tresc:</font></label> <textarea name="tresc" noresize style="width:600px;height:120px;">'.$r['tresc1'].'</textarea><br>
  19.  
  20.  
  21.  
  22. <input type=submit name=submit2 value=submit2 />
  23.  
  24. </form>
  25.  
  26. ';
  27.  
  28. $aktualizujtemat = $_POST['temat1'];
  29. $aktualizujtresc = $_POST['tresc1'];
  30.  
  31. $submit2 = $_POST['submit2'];
  32. if (isset($submit2)){
  33.  
  34. echo $dodaj2 = mysql_query("UPDATE home SET `temat`='123', `tresc`='$aktualizujtresc' WHERE `id`='52'");
  35.  
  36. }
  37.  
  38.  
  39.  
  40. }
  41.  
  42. }
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.