Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Zapytanie UPDATE
head
post 16.02.2007, 01:24:17
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.09.2006

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


Witam. Moim problemem jest niby proste z pozoru zapytanie o uaktualnianie danych. Mianowicie jeśli ograniczę je do takiej postaci:
  1. <?php
  2. $query = ("UPDATE szczegolyzdarzenia SET OpisZdarzenia='$idOZ' WHERE IDpracownika='$id' ");
  3. ?>

to ono działa dobrze, jednak wywala mi wszystkie dane dla danego IDpracownika. Mi zależy zeby wyrzucić tylko określony rekord i dlatego rozbudowuje zapytanie w następujący sposób:
  1. <?php
  2. $query = ("UPDATE szczegolyzdarzenia SET OpisZdarzenia='$idOZ' WHERE IDpracownika='$id' AND IDszczegoluZdarzenia= '$idSZ'");
  3. ?>

a wtedy już nie działa sad.gif.. Oczywiście wyświetla, że nie zapytanie nie pobiera zmiennej $idSZ. Musze tu dodać, że zmienna $idSZ działa poprawnie i sprawdzam to w następujący sposób dodając przed zapytaniem:
  1. <?php
  2. $idSZ = $_GET['IDszczegoluZdarzenia'];
  3. echo "IDszczegoluZdarzenia: $idSZ <br/>";
  4. ?>

co powoduje, że zostaje ona wyświetlone na stonce. Tak więc już nie wiem w czym tkwi problem. Może ktoś z was mi pomoże... RATUJCIE!

---------------------------
Poprawiłem literówkę
w temacie.
---
~strife
Go to the top of the page
+Quote Post
JaRoPHP
post 16.02.2007, 09:29:34
Post #2





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


Wyświetl jaka jest postać zapytania przed jego wykonaniem oraz komunikat błędu za pomocą funkcji mysql_error" title="Zobacz w manualu php" target="_manual, to może być przydatne:
  1. <?php
  2. $query = ("UPDATE szczegolyzdarzenia SET OpisZdarzenia='$idOZ' WHERE IDpracownika=$id AND IDszczegoluZdarzenia= $idSZ");
  3. echo $query;
  4. mysql_query($query) or die(mysql_error())
  5. ?>


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
spryciula
post 16.02.2007, 09:31:59
Post #3





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 9.12.2006

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


pokaż, strukturę tabeli!!!! czy aby na pewno masz kolumnę "IDszczegoluZdarzenia"
jaki ci się błąd wyświetla podczas wykonywania tego zapytania

  1. <?php
  2. $query = ("UPDATE szczegolyzdarzenia SET OpisZdarzenia='$idOZ' WHERE IDpracownika='$id' AND IDszczegoluZdarzenia= '$idSZ'") or die(mysql_error());
  3. ?>


Ten post edytował spryciula 16.02.2007, 09:32:37
Go to the top of the page
+Quote Post
head
post 16.02.2007, 20:54:21
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.09.2006

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


Jeśli chodzi o strukturę tabeli to nalewno jest dobrze! A IDszczegoluZdarzenia jest pierwszą kolumną w tabeli szczegolyzdarzenia. Natomiast błąd jaki mi się teraz wyświetla to:

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 '' at line 1

Oraz wyświetla się zapytanie z brakującą wartością $idSZ. Natomiast postać zapytania przed wykonaniem to:

  1. <?php
  2. $query = ("SELECT OpisZdarzenia FROM szczegolyzdarzenia WHERE IDpracownika='$id' AND IDszczegoluZdarzenia='$idSZ' ");
  3. ?>


Może jak podam wam cały kod to coś mi pomożecie?!
  1. <?php
  2. $page_title = 'Edycja danych';
  3.  
  4. require_once ('./mysql_connect.php'); 
  5.  
  6. $id = $_COOKIE['IDpracownika'];
  7. $idsz = $_GET['IDszczegoluZdarzenia'];
  8. echo"IDszczegoluZdarzenia: $idsz";
  9.  
  10.  
  11. if (isset($_POST['submitted'])) {
  12.  
  13. $errors = array(); 
  14.  
  15.  
  16. if (empty($_POST['OpisZdarzenia'])) {
  17. $errors[] = 'Zapomniałeś wprowadzić zdarzenia!';
  18. } else {
  19. $idoz = escape_data($_POST['OpisZdarzenia']);
  20. }
  21.  
  22. if (empty($errors)) { 
  23.  
  24.  
  25.  
  26.  
  27. $query = "UPDATE szczegolyzdarzenia SET OpisZdarzenia=$idoz WHERE IDpracownika=$id AN
    D IDszczegoluZdarzenia=$idsz"
    ;
  28. $result = @mysql_query ($query); 
  29. if (mysql_affected_rows() == 1) { 
  30.  
  31.  
  32. echo '<h1 id="mainhead">Edytuj opis zdarzenia</h1>
  33. <p>Opis zdarzenia został zmieniony.</p><p><br /><br /></p>';
  34.  
  35. } else { // W przeciwnym razie.
  36. echo '<h1 id="mainhead">Błąd systemu</h1>
  37. <p class="error">Opis zdarzenia nie został zmieniony. Przepraszamy za utrudnienia.</p>'; // Komunikat publiczny.
  38.  
  39. echo '<p>' . mysql_error() . '<br /><br />Zapytanie: ' . $query . '</p>'; // Komunikat uruchomieniowy.
  40. include ('./stopka.html');
  41. exit();
  42. }
  43.  
  44.  
  45.  
  46. } else { 
  47.  
  48. echo '<h1 id="mainhead">Błąd!</h1>
  49. <p class="error">Wystąpiły następujące błędy:<br />';
  50. foreach ($errors as $msg) { /
  51. echo " - $msg<br />n";
  52. }
  53. echo '</p><p>Spróbuj jeszcze raz.</p><p><br /></p>';
  54.  
  55. } 
  56.  
  57. } 
  58.  
  59.  
  60.  
  61.  
  62. $query = "SELECT OpisZdarzenia FROM szczegolyzdarzenia WHERE IDpracownika=$id AND IDs
    zczegoluZdarzenia=$idsz"
    ;
  63. $result = @mysql_query ($query); 
  64.  
  65. if (mysql_num_rows($result) == 1) { 
  66.  
  67.  
  68. $row5 = mysql_fetch_array ($result, MYSQL_NUM);
  69.  
  70. .
  71. echo '<h2>Edytuj opis</h2>
  72. <form action="edytujZ.php" method="post">
  73. <p>Opis zdarzenia: <input type="text" name="OpisZdarzenia" size="15" maxlength="15" value="' . $row5[0] . '" /></p>
  74. <p><input type="submit" name="submit" value="Wyślij" /></p>
  75. <input type="hidden" name="submitted" value="TRUE" />
  76.  
  77. <input type="hidden" name="id" value="' . $id . '" />
  78. <input type="hidden" name="idsz" value="' . $idsz . '" />
  79. </form>';
  80.  
  81. } else { 
  82. echo '<h1 id="mainhead">Błąd</h1>
  83. <p class="error">Błąd dostępu do strony.</p><p><br /><br /></p>';
  84. }
  85.  
  86. echo ('<br/><a href="zmiany.php" title="Powrót do zmian">Powrót</a>');
  87. include ('./stopka.html');
  88. ?>

A jeśli chodzi o błąd to wygląda następująco:

Zapytanie: UPDATE szczegolyzdarzenia SET OpisZdarzenia='kupa' WHERE (IDpracownika='7' AND IDszczegoluZdarzenia='')

Dodam, że jak wpisze na sztywno IDszczegoluZdarzenia to działa poprawnie. Proszę o pomoc...
Go to the top of the page
+Quote Post
JaRoPHP
post 16.02.2007, 21:40:26
Post #5





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


Cytat
Zapytanie: UPDATE szczegolyzdarzenia SET OpisZdarzenia='kupa' WHERE (IDpracownika='7' AND IDszczegoluZdarzenia=''
Na pewno tak ma być?
Nie powinno być jakiejś wartości po IDszczegoluZamowienia?


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
head
post 16.02.2007, 23:23:11
Post #6





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.09.2006

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


No właśnie powinna być! Ale jej nie pobiera. Sprawdź od początku co napisałem.
Go to the top of the page
+Quote Post
Cienki1980
post 16.02.2007, 23:37:24
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(head @ 16.02.2007, 23:23:11 ) *
No właśnie powinna być! Ale jej nie pobiera. Sprawdź od początku co napisałem.

No to skoro nie ma tej wartości to pokaż formularz z którego przesyłasz tę wartość. Może tam masz coś skopane.


--------------------
404
Go to the top of the page
+Quote Post
head
post 16.02.2007, 23:48:16
Post #8





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.09.2006

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


Się robi! Daj mi sekunde:)

Oto wcześniejsza podstrona z któtej pobieram tą wartość IDszczegoluZdarzenia i przekierowuje ją poprzez link.
  1. <?php
  2. $query = ("SELECT IDszczegoluZdarzenia,StartZdarzenia,KoniecZdarzenia,DataDodaniaZdarz
    enia,OpisZdarzenia,RodzajZdarzenia FROM szczegolyzdarzenia,zdarzenia WHERE IDprac
    ownika = '$id' AND szczegolyzdarzenia.IDzdarzenia=zdarzenia.IDzdarzenia "
    );
  3. $result = mysql_query($query);
  4.  
  5. echo ('<BR/><B><center><TABLE BORDER=1 width="80%" cellspacing="0"><TR><TD width="15%"><p align="center"><font color="336600">Start Zdarzenia</TD><TD width="15%"><p align="center"><font color="336600">Koniec Zdarzenia</TD><TD width="15%"><p align="center"><font color="336600">Data Dodania</TD><TD width="15%"><p align="center"><font color="336600">Rodzaj Zdarzenia</TD><TD width="15%"><p align="center"><font color="336600">Opis Zdarzenia</TD><TD width="15%"><p align="center"><font color="336600">Edycja</TD><TD width="15%"><p align="center"><font color="336600">Usunięcie</TD></TR></TABLE></center></B>');
  6.  
  7. while($row=mysql_fetch_array($result, MYSQL_ASSOC)) {
  8.  
  9. $idsz = $row['IDszczegoluZdarzenia'];
  10. echo"szczegol: $idsz";
  11.  
  12. $idz = $row['RodzajZdarzenia'];
  13. echo"rodzaj: $idz";
  14.  
  15. $idoz = $row['OpisZdarzenia'];
  16. echo" opis: $idoz";
  17.  
  18. echo '<center><b><TABLE BORDER=1 width="80%" cellspacing="0" >' . '<TR>' . '<TD width="15%"><center>' . $row['StartZdarzenia']. '</TD>' . '<TD width="15%"><center>' . $row['KoniecZdarzenia'].'</TD>' . '<TD width="15%"><center>' . $row['DataDodaniaZdarzenia'].'</TD>' . '<TD width="15%"><center>' . $row['RodzajZdarzenia'] . '</TD>' . '<TD width="15%"><center>' . $row['OpisZdarzenia'] . '</TD>' . '<TD width="15%"><center><a href="edytujZ.php?IDpracownika=' . $id . '&IDszczegoluZdarzenia=' . $idsz . '&IDopisuZdarzenia=' . $idoz .'"title="Kliknij aby dokonać zmiany opisu">Edytuj</TD>' . '<TD width="15%"><center><a href="usunZ.php?IDpracownika=' . $id . '&IDszczegoluZdarzenia=' . $idsz . '"title="Kliknij aby usun&#261ć">Usuń</TD>' . '</TR></TABLE></b></center>';
  19.  
  20. }
  21. ?>

Może to coś pomoże.
Go to the top of the page
+Quote Post
Cienki1980
post 16.02.2007, 23:55:29
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Co robi w zapytaniu SELECT znak spacji questionmark.gif & nbsp questionmark.gif? Przypadek czy masz tam tak to wpisane questionmark.gif
Skoro dane wysyłasz w linku to czy jak najedziesz na niego kursorem ( albo po kliknięciu ) w pasku adresu pojawią się poprawny link questionmark.gif Dane w GET są takie jak być powinny questionmark.gif
Może źle tworzysz linki questionmark.gif


--------------------
404
Go to the top of the page
+Quote Post
head
post 17.02.2007, 00:10:22
Post #10





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.09.2006

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


Podczas wklejania wyskoczyły takie błędy. U mnie tego nie ma - tak jak napisałeś przypadek.

Jeśli chodzi o link to jest poprawny! Jak pisałem wcześniej te dane po przesałaniu wyświetlam na podstronie poprzez:
  1. <?php
  2. $id = $_COOKIE['IDpracownika'];
  3. $idsz = $_GET['IDszczegoluZdarzenia'];
  4. echo"IDszczegoluZdarzenia: $idsz";
  5. echo"IDpracownika: $id";
  6. ?>

i wyświetla mi je poprawnie. Co dziwne pod zapytaniem UPDATE jest formularz wyświetlający w którym te dane pobiera. Moja sytuacja jest jakaś chora! Pisałem do ludzi naprawdę świetnych w programowaniu i nikt nie może zaradzić. Twierdzą, że wszystko jest ok a tu jednak nie:(.
Go to the top of the page
+Quote Post
Cienki1980
post 17.02.2007, 00:17:50
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Chyba jednak jest nie tak.
Z tego co pisałeś za pomocą linka przechodzisz do pliku edytujZ.php ... wszystko jest OK na początku. Odczytujesz wartość GET, potem tworzysz formularz, gdzie tworzysz pola hidden, z czego jedno ma name='idsz' i value=$idsz ( value pobierane wcześniej z GET'a ) .. po zatwierdzeniu formularza dane są przesyłane POSTem a nie GETem i nie przesyłasz ['IDszczegoluZdarzenia'] tylko ['idsz'] ... a zmienna $id ( IDpracownika ) pobierasz z $_COOKIES a nie z $_POST czy też $_GET.

Widzisz gdzie problem questionmark.gif biggrin.gif


--------------------
404
Go to the top of the page
+Quote Post
head
post 17.02.2007, 01:24:20
Post #12





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.09.2006

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


Dzięki Wielkie! Jeszcze do końca nie obejmuje tego moja głowa, ale chyba wiem o co chodzi. Pokombinuje i dam znać. Nareszcie ktoś napisał coś ciekawego. smile.gif

Możesz mi jeszcze wstępnie napisać co ja mam zrobić?

Robię co mogę, jednak i tak nie mogę sobie z tym poradzić. Nie wiem jak do zapytania UPDATE przekazać wartość IDszczegoluZdarzenia. Proszę o jakieś wskazówki.
Go to the top of the page
+Quote Post
Cienki1980
post 17.02.2007, 07:38:22
Post #13





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Wystarczy że zrobisz tak :
  1. <?php
  2. //linie 6 i 7 zamień tak
  3. $id=$_REQUEST['IDpracownika'];
  4. $idsz=$_REQUEST['IDszczegoluZdarzenia'];
  5.  
  6. //a potem linie 77 i 78 tak
  7. echo "
  8. <input type="hidden" name="IDpracownika" value="".$id.""/>
  9. <input type="hidden" name="IDszczegoluZdarzenia" value="".$idsz.""/>";
  10. ?>


Te zmiany dotyczą tego kodu z zapytaniem UPDATE.


--------------------
404
Go to the top of the page
+Quote Post
head
post 17.02.2007, 09:08:50
Post #14





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 5.09.2006

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


OK! już to sprawdzam smile.gif. Jeszcze raz dzięki.

Teraz już wiem gdzie poruszać tematykę dotyczącą programowania PHP. Cienki1980 ma głowę na karku! Jeszcze raz dzięki! Teraz mój UPDATE działa bez zarzutów smile.gif.

Ten post edytował head 17.02.2007, 08:41:43
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 01:35