Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]update rekordu nie działa.
Forum PHP.pl > Forum > Przedszkole
Glukozamina
Witam mam sobie skrypt. Gdy jestem zalogowany pojawia mi sie opcja edytuj profil następnie przechodze do edytuj profil wszystko pięknie ładnie się wyświetla tam gdzie chcę lecz gdy chcę zrobic update jednej komórki nie ma żadnego błędu lecz też nic się nie dzieje. Zapytanie wziąłem z phpmyadmin dodając tam ręcznie jakąś tresc do jednego z pół a następnie przerobiłem troszke.

  1. <?php
  2.  
  3.  
  4. /*Nawiązanie połączenia z bazą*/
  5.  
  6.   if (!$db_lnk = @mysql_connect("mysql3.yoyo.pl", "db486994", "xxxxxxxxxxxx")){
  7.    echo('Wystąpił błąd podczas próby połączenia z serwerem MySQL...<BR>');
  8.    return;
  9.   }
  10.  
  11.   if(!@mysql_select_db('db486994')){
  12.    echo('Wystąpił błąd podczas wyboru bazy danych: biblioteka<BR>');
  13.    @mysql_close();
  14.    return;
  15.   }
  16.  
  17.  
  18.  
  19.  
  20.  
  21. $n = $_SESSION['zalogowany'];
  22.  
  23. $query= "SELECT * FROM Users WHERE Nazwa = '$n' ";
  24.  
  25. $result = mysql_query($query, $db_lnk);
  26.  
  27. if(!$result){
  28.   echo('Wystąpił błąd: nieprawidłowe zapytanie...<BR>');
  29.   echo mysql_errno($db_lnk) . ": " . mysql_error($db_lnk) . "\n";
  30.   @mysql_close();
  31.   exit;
  32. }
  33.  
  34. $miejscowosc = $_GET['miejscowosc'];
  35.  
  36. $id = $data['Id'];
  37.  
  38. $query = "UPDATE `db486994`.`Users` SET `skad` = '$miejscowosc' WHERE `Users`.`Id` = '$id' LIMIT 1";
  39.  
  40.   if(!mysql_query($query, $db_lnk)){
  41.    echo 'Wystąpił błąd: zapytanie zostało odrzucone...<br />Zapytanie: <pre>' . $query . '</pre>Odpowiedź MySQL: <pre>' . mysql_error( $db_lnk ) . '</pre>';
  42.    @mysql_close();
  43.    return;
  44.   }
  45.  
  46. while($data = mysql_fetch_assoc($result)){
  47.  
  48. $id = $data['Id'];
  49. $gg = $data['Email'];
  50. $skad = $data['skad'];
  51.  
  52. $nick = $data['Nazwa'];
  53. }
  54. echo "$miejscowosc";
  55.  
  56. echo '<table><tr><td>Nick'.$id.'</td><td>'.$nick.'</td></tr>
  57.  
  58.   <tr><td>Gadu Gadu</td><td>'.$gg.'</td></tr>
  59.  
  60.   <tr><td>Miejscowosc</td>';
  61.  
  62. echo "  <td><form action='info/profiledit.php' method='GET'>
  63.   <input type='text' name='miejscowosc' value='$skad'></td></tr>
  64.   <tr><td><input type='submit' value='Edytuj'></form></td></tr>";
  65.  
  66. echo '</table>';
  67.  
  68. printf ("Zaktualizowanych rekordów: %d\n", mysql_affected_rows());
  69.  
  70. ?>
  71.  
  72. <?php
  73. if(!@mysql_close()){
  74.   echo('Wystąpił błąd podczas zamykania połączenia z serwerem MySQL...<BR>');
  75. }
  76. ?>


Żadnego błędu mi nie wywala ani też skrypt nie działa. Kiedy ide do php my admin i ręcznie wpisze jakąś miejscowosc po kliknięciu edytuj kasuje mi się ona w tabeli. Proszę powiedzcie mi jak to powinenem zrobic ? Pozdrawiam
simonX
Nie musisz podawac za kazdym razem nazwy bazy danych


Sproboj tak:
Kod
"UPDATE Users SET skad='$miejscowosc' WHERE id= '$id' LIMIT 1";
Glukozamina
Hmmmh nadal nie działa. A gdyby zapytanie przedstawic jakos w postaci
  1. <?php
  2. mysql_query(Twoje_zapytanie) or die(mysql_error());
  3. ?>
Kiedys przestawialem cos tam i mi jeden skrypt zaczął działac. Mógł by ktos to przerobic do takiej postaci ? Bo mnie to nie wyszło  ;D
Max Damage
Znaczy się chodzi ci o coś takiego?
  1. <?php
  2. mysql_query("UPDATE Users SET skad='$miejscowosc' WHERE id='$id' LIMIT 1") or die (mysql_error());
  3. ?>

Poza tym wydaje mi se że to id masz w bazie niepowtarzalne więc nie musisz używać LIMIT.
Glukozamina
Hmmmh no nie wiem co jest nie tak nawet kiedy w zapytaniu wpisałem
  1. <?php
  2. "UPDATE Users SET skad='szczecin' WHERE id= '$id' ";
  3. ?>
nic się nie zmieniło.
simonX
Npisze caly skrypt jak ja bym to napisał:



session_start(); /*Nie miales mechanizmu rozpoczynającego sesje*/
/*Teraz łączę się z bazą danych*/
$db_lnk = mysql_connect("mysql3.yoyo.pl", "db486994", "xxxxxxxxxxxx")or die("Jakis komunikat ");
mysql_select_db('db486994');
$_SESSION['zalogowany']=$n;
$result = mysql_query("SELECT * FROM Users WHERE Nazwa = '$n' ");
if(mysql_num_rows($result)>0){
echo('Taka nazwa widniej juz w bazie <big>Wprowadz inna</big>');
exit;

}
$miejscowosc = $_GET['miejscowosc'];
$id = $data['Id'];
$query=mysql_query( "UPDATE Users SET skad='$miejscowosc' WHERE id= '$id' LIMIT 1");
if(!$query){
echo "Niestety nie mogłem aktualizować bazy danych"
exit;
}
-------------------------------------------------------------------------------
/*Dalej tak miales na koncu musisz wskazac jakie polaczenie chcesz zamknac*/
<?php
if(!@mysql_close($db_lnk)){
echo('Wystąpił błąd podczas zamykania połączenia z serwerem MySQL...<BR>');
}
?>

Jak teraz nie zadziala to nie mam pojecia,tez dopiero sie ucze php ale mam nadzieje ze jakos Cie naprowadze przynajmniej na ten błąd i sam go odkryjesz tongue.gif .
Glukozamina
Hmmmmh czego sie tyczy ten fragment ? 

  1. <?php
  2. if(mysql_num_rows($result)>0){
  3. echo('Taka nazwa widniej juz w bazie <big>Wprowadz inna</big>');
  4. ?>


Bo włąsnie to mi się wyświetla : Taka ....
Max Damage
Zapytanie UPDATE nie chodzi ci ponieważ Najpierw próbujesz użyć zmiennej id
  1. <?php
  2. $id = $data['Id'];
  3. ?>

A dopiero kilka wierszy poniżej się o nią pytasz.
Funkcja mysql_num_rows zwraca liczbę wierszy w wyniku. Jest więcej niż zero więc wyświetla się napis. Mozna nie lubic manuala ale warto do niego czasem zaglądać.....
To też raczej nie zadziała tak jak chcesz :
  1. <?php
  2. echo "$miejscowosc";
  3. ?>

Powinno być tak:
  1. <?php
  2. echo $miejscowosc;
  3. ?>

Coś mi się też zdaje że w każdym pliku piszesz połączanie z bazą. Lepiej to sobie napisać w osobnym pliku jako funkcje i dołączać poprzez include. Bo jak zmienisz nagle serwer to będziesz wszędzie musiał to zmieniać.
Glukozamina
Tamto echo miejscowosc to sprawdzalem czy w ogole ta miejscowosc jest pobierana . No własnie to Id cos mi nie pasowało więc w jaki sposób je przekazac tam wyżej ?
nowotny
W formularzu robisz sobie na przykład tak:
  1. <form action='info/profiledit.php?id=$id' method='GET'>

lub ewentualnie dodajesz pole ukryte:
  1. <input type="hidden" name="id" value="$id">


i teraz
  1. <?php
  2. $id = $data['Id'];
  3. ?>

zamieniasz sobie na
  1. <?php
  2. $id=$_GET['id'];
  3. ?>
Glukozamina
Dobra rzeczywiscie cos z tym id jednak metoda nowotnego nie działa chyba ,ze ja cos zrobiłem . 

  1. <?php
  2.  
  3.  
  4. /*Nawiązanie połączenia z bazą*/
  5.  
  6.   if (!$db_lnk = @mysql_connect("mysql3.yoyo.pl", "db486994", "xxxxxxxxx")){
  7.    echo('Wystąpił błąd podczas próby połączenia z serwerem MySQL...<BR>');
  8.    return;
  9.   }
  10.  
  11.   if(!@mysql_select_db('db486994')){
  12.    echo('Wystąpił błąd podczas wyboru bazy danych: biblioteka<BR>');
  13.    @mysql_close();
  14.    return;
  15.   }
  16.  
  17.  
  18. $n = $_SESSION['zalogowany'];
  19.  
  20. $query= "SELECT * FROM Users WHERE Nazwa = '$n' ";
  21.  
  22. $result = mysql_query($query, $db_lnk);
  23.  
  24. if(!$result){
  25.   echo('Wystąpił błąd: nieprawidłowe zapytanie...<BR>');
  26.   echo mysql_errno($db_lnk) . ": " . mysql_error($db_lnk) . "\n";
  27.   @mysql_close();
  28.   exit;
  29. }
  30.  
  31. $miejscowosc = $_GET['miejscowosc'];
  32.  
  33. echo $miejscowosc;
  34.  
  35. $id=$_GET['Id'];
  36.  
  37. $query = "UPDATE Users SET skad='$miejscowosc' WHERE id='$id'";
  38.  
  39.   if(!mysql_query($query, $db_lnk)){
  40.    echo 'Wystąpił błąd: zapytanie zostało odrzucone...<br />Zapytanie: <pre>' . $query . '</pre>Odpowiedź MySQL: <pre>' . mysql_error( $db_lnk ) . '</pre>';
  41.    @mysql_close();
  42.    return;
  43.   }
  44.  
  45.  
  46. while($data = mysql_fetch_assoc($result)){
  47.  
  48. $id = $data['Id'];
  49.  
  50. $gg = $data['Email'];
  51. $skad = $data['skad'];
  52.  
  53. $nick = $data['Nazwa'];
  54. }
  55. echo "$miejscowosc";
  56.  
  57. echo '<table><tr><td>Nick'.$id.'</td><td>'.$nick.'</td></tr>
  58.  
  59.   <tr><td>Gadu Gadu</td><td>'.$gg.'</td></tr>
  60.  
  61.   <tr><td>Miejscowosc</td>';
  62.  
  63. echo "  <td><form action='info/profiledit.php?id=$id' method='GET'>
  64.   <input type='text' name='miejscowosc' value='$skad'></td></tr>
  65.   <tr><td><input type='submit' value='Edytuj'></form></td></tr>";
  66.  
  67. echo '</table>';
  68.  
  69. printf ("Zaktualizowanych rekordów: %d\n", mysql_affected_rows());
  70.  
  71. ?>
  72.  
  73. <?php
  74. if(!@mysql_close()){
  75.   echo('Wystąpił błąd podczas zamykania połączenia z serwerem MySQL...<BR>');
  76. }
  77. ?>





Zrobiłęm sobie zapytanie 

  1. <?php
  2. $query = "UPDATE Users SET skad='$miejscowosc' WHERE id='1'";
  3. ?>


I działało . Czyli nie pobiera id . 
nowotny
"Id" to nie to samo co "id"...
Glukozamina
Najpierw dałem id tak jak pisałeś jednak to nie działało wpisałem Id i to też nie działa tak dla pewności ;D.
Kicok
Cytat
W formularzu robisz sobie na przykład tak:
  1. <form action='info/profiledit.php?id=$id' method='GET'>


lub ewentualnie dodajesz pole ukryte:
  1. <input type="hidden" name="id" value="$id">


Drugie rozwiązanie jest poprawne. Jeżeli formularz wysyłasz metodą GET, to zmienne znajdujące się w adresie ( action ) są ignorowane.
Glukozamina
HAH działa dziękuje wam za przekazaną wiedze . Macie po dziękuje. 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.