Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Zapytanie UPDATE
Forum PHP.pl > Forum > Przedszkole
head
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
JaRoPHP
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. ?>
spryciula
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. ?>
head
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...
JaRoPHP
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?
head
No właśnie powinna być! Ale jej nie pobiera. Sprawdź od początku co napisałem.
Cienki1980
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.
head
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.
Cienki1980
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
head
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:(.
Cienki1980
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
head
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.
Cienki1980
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.
head
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.
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.