Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] update danych do bazy
em-ba
post
Post #1





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

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


Witam smile.gif,
chciałem stworzyć tzw. "edycję danych użytkownika". Niestety nie dokońca mi się to udało..
Nie działa mi update danych do bazy. Użytkownik wchodząc na swoj profil widzi dane, których nie moze zmienic //pobrane z bazy. Następnie żeby je zmienić naciska przycisk "zmień"
i tu zaczyna się problem, gdyż przełacza się na następną stronę, gdzie miały być widoczne dotychczasowe dane i możnaby było je zmienić.
Skrypt, który napisałem nie działa prawidłowo, gdyż po przejściu na edycję danych te dane automatycznie się kasują i to bez nacikania przyciku "zastosuj" ..czyści nawet z bazy sciana.gif Co robię nie tak? ..proszę o pomoc..
  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fi_kur') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5.  
  6. '<div>
  7.  <form action="mojedane1.php" method="POST">
  8. <fieldset>
  9. <legend><b>Edytuj dane:</b></legend>
  10. <div>
  11. <div id="md">
  12. <div>
  13. <label for="imie">imię:</label>
  14. <input id="imie" name="imie" class="text" type="text" maxlength="30" value="'.$dane2['imie'].'" />
  15. </div>
  16. <div>
  17. <label for="nazwisko">nazwisko:</label>
  18. <input id="nazwisko" name="nazwisko" class="text" type="text" maxlength="30" value="'.$dane2['nazwisko'].'" />
  19. </div>
  20.  // imie i nazwisko to tylko wybrane dane..
  21. </div>
  22. </div>
  23. </fieldset>
  24. </form>
  25. </div>';
  26.  
  27. $dane = "UPDATE `uzytkownicy` 
  28.  SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
  29.  WHERE login='".$login."'";
  30. $dane2 = mysql_query ($dane) or die(mysql_error());
  31.  ?>


Ten post edytował em-ba 19.04.2008, 12:08:37
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
PawelC
post
Post #2





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fi_kur') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5.  
  6. '<div>
  7.  <form action="mojedane1.php?mod=akt" method="POST">
  8. <fieldset>
  9. <legend><b>Edytuj dane:</b></legend>
  10. <div>
  11. <div id="md">
  12. <div>
  13. <label for="imie">imię:</label>
  14. <input id="imie" name="imie" class="text" type="text" maxlength="30" value="'.$dane2['imie'].'" />
  15. </div>
  16. <div>
  17. <label for="nazwisko">nazwisko:</label>
  18. <input id="nazwisko" name="nazwisko" class="text" type="text" maxlength="30" value="'.$dane2['nazwisko'].'" />
  19. </div>
  20.  // imie i nazwisko to tylko wybrane dane..
  21. </div>
  22. </div>
  23. </fieldset>
  24. </form>
  25. </div>';
  26.  $mod=$_GET['mod'];
  27.  $imie=$_POST['imie'];
  28.  $nazwisko=$_POST['nazwisko'];
  29. if($mod==akt){ 
  30. $dane = "UPDATE `uzytkownicy` 
  31.  SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
  32.  WHERE login='".$login."'";
  33. mysql_query ($dane) or die(mysql_error());
  34. print "Zaktualizowano profil";
  35. } else
  36. {print "Wpisz nowe dane";
  37. }
  38.  ?>

Nie dziw się że Ci kasuje skoro po wejściu do pliku edycji wykonuje się zapytanie do bazy. Sprawdź ten kod co wkleiłem, powinien działać. Dodałem do formularza mod=akt, dlatego że jak klikniesz w formularzu to sprawdzi czy ma zaktualizować czy nie.
Go to the top of the page
+Quote Post
em-ba
post
Post #3





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

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


wkleiłem tak:
  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fi_kur') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5. $dane = mysql_query ("SELECT * FROM `uzytkownicy` WHERE login='".$login."'");
  6. $dane2 = mysql_fetch_array($dane);
  7.  
  8. '<div>
  9.  <form action="mojedane1.php" method="POST">
  10. <fieldset>
  11. <legend><b>Edytuj dane:</b></legend>
  12. <div>
  13. <div id="md">
  14. <div>
  15. <label for="imie">imię:</label>
  16. <input id="imie" name="imie" class="text" type="text" maxlength="30" value="'.$dane2['imie'].'" />
  17. </div>
  18. <div>
  19. <label for="nazwisko">nazwisko:</label>
  20. <input id="nazwisko" name="nazwisko" class="text" type="text" maxlength="30" value="'.$dane2['nazwisko'].'" />
  21. </div>
  22.  
  23. </div>
  24. </div>
  25. </fieldset>
  26. </form>
  27. </div>';
  28.  $mod=$_GET['mod'];
  29.  $imie=$_POST['imie'];
  30.  $nazwisko=$_POST['nazwisko'];
  31. if($mod==akt){
  32. $dane = "UPDATE `uzytkownicy`
  33.  SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
  34.  WHERE login='".$login."'";
  35. mysql_query ($dane) or die(mysql_error());
  36. print "Zaktualizowano profil";
  37. } else
  38. {print "Wpisz nowe dane";
  39. }
  40.  ?>


co mam zrobić zeby te nowe dane wysłało mi do bazy? bo dane moge zmienic ale nie wiem czy jeszcze cos dopisac trzeba

Ten post edytował em-ba 19.04.2008, 12:45:23
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #4





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


zrob tak
  1. <?php
  2. $a = mysql_query("UPDATE `uzytkownicy`
  3.  SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
  4.  WHERE login='".$login."'");
  5. if($a){
  6. echo('Zmieniono Dane');
  7. }
  8.  
  9. ?>
Go to the top of the page
+Quote Post
PawelC
post
Post #5





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Mlodycompany niewiem czy zauważyłeś, ale po wejściu odrazu na strone z formularzem wykonywane jest zapytanie sql do bazy zobacz sobie na dole, w moim przykładzie zapytanie wykonuje się dopiero po kliknięciu buttona w formularzu, i pobraniu z adresu co ma robić akt czyli w tym wypadku aktualizacja, zobacz sobie mój kod na dole:
  1. <?php
  2. if($mod==akt){
  3. $dane = "UPDATE `uzytkownicy`
  4.  SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
  5.  WHERE login='".$login."'";
  6. mysql_query ($dane) or die(mysql_error());
  7. print "Zaktualizowano profil";
  8. } else
  9. {print "Wpisz nowe dane";
  10. }
  11.  ?>
Go to the top of the page
+Quote Post
em-ba
post
Post #6





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

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


dorzuciłem przycisk ale nic to nie zmieniło:
  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die ("nie udało sie połączyć");
  3. mysql_select_db('fi_kur') or die ("Nie mozna zlokalizowac bazy danych");
  4.  
  5. $dane = mysql_query ("SELECT * FROM `uzytkownicy` WHERE login='".$login."'");
  6. $dane2 = mysql_fetch_array($dane);
  7.  
  8. '<div>
  9.  <form action="mojedane1.php" method="POST">
  10. <fieldset>
  11. <legend><b>Edytuj dane:</b></legend>
  12. <div>
  13. <div id="md">
  14. <div>
  15. <label for="imie">imię:</label>
  16. <input id="imie" name="imie" class="text" type="text" maxlength="30" value="'.$dane2['imie'].'" />
  17. </div>
  18. <div>
  19. <label for="nazwisko">nazwisko:</label>
  20. <input id="nazwisko" name="nazwisko" class="text" type="text" maxlength="30" value="'.$dane2['nazwisko'].'" />
  21. </div>
  22. <div>
  23. <a href="mojedane1.php"><input id="submit" name="send" class="submit" type="submit" value="akt"/></a>
  24. </div>
  25. </div>
  26. </div>
  27. </fieldset>
  28. </form>
  29. </div>';
  30.  $mod=$_GET['mod'];
  31.  $imie=$_POST['imie'];
  32.  $nazwisko=$_POST['nazwisko'];
  33. if($mod==akt){
  34. $dane = "UPDATE `uzytkownicy`
  35.  SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
  36.  WHERE login='".$login."'";
  37.  mysql_query ($dane) or die(mysql_error());
  38.  print "Zaktualizowano profil";
  39.  } else {
  40. print "Wpisz nowe dane";
  41. }
  42.  ?>
co mam zrobić aby było ok?
Go to the top of the page
+Quote Post
piotrooo89
post
Post #7


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Nie wiem czy dobrze myśle ale możesz zrobić tak:
  1. <?php
  2. $mod=$_GET['mod'];
  3.  $imie=$_POST['imie'];
  4.  $nazwisko=$_POST['nazwisko'];
  5. if ((isset($_POST['imie']) or (isset($_POST['nazwisko'])))
  6. {
  7. if($mod==akt){
  8. $dane = &#092;"UPDATE `uzytkownicy`
  9.  SET `imie`='\".$imie.\"',`nazwisko`='\".$nazwisko.\"'
  10.  WHERE login='\".$login.\"'&#092;";
  11.  mysql_query ($dane) or die(mysql_error());
  12.  print &#092;"Zaktualizowano profil\";
  13.  } else {
  14. print &#092;"Wpisz nowe dane\";
  15. }
  16. }
  17.  ?>


Nie ręcze że bedzie działać smile.gif

Pozdrawiam


Ten post edytował piotrooo89 19.04.2008, 13:30:20


--------------------
Go to the top of the page
+Quote Post
PawelC
post
Post #8





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


skąd pobierasz tą $login?
Podaj strukturę bazy danych.

Ten post edytował ExPlOiT 19.04.2008, 14:00:24
Go to the top of the page
+Quote Post
em-ba
post
Post #9





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

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


piotrooo89 ..dzieki ale niestety nie działa..

oto struktura bazy danych:

create table `uzytkownicy`
id, int(32), UNSIGNED, auto_increment
imie, varchar(32), not null
nazwisko, varchar(32), not null
login, varchar(32), not null
haslo, varchar(32), not null
email, varchar(32), not null
ul, varchar(32), not null
nr, varchar(32), not null
m, varchar(32), not null
wojewodztwo, varchar(32), not null
kod, varchar(32), not null
ranga, varchar(32), not null

Ten post edytował em-ba 19.04.2008, 14:18:58
Go to the top of the page
+Quote Post
PawelC
post
Post #10





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


A login pobierasz z sesji czy jak?
Go to the top of the page
+Quote Post
em-ba
post
Post #11





Grupa: Zarejestrowani
Postów: 202
Pomógł: 3
Dołączył: 6.01.2008
Skąd: Mazowieckie

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


juz jest ok
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #12





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


@Exploit ja podałem tylko kod który zmienia dane, to w jaki sposób em-ba go wykorzysta to juz jego sprawa.
Go to the top of the page
+Quote Post
-marck-
post
Post #13





Goście







Osobiście stosuję taką kolejność w skrypcie:

if($_POST['submit']=='zmien'){

tu daje update
}

A tu selecta

Na końcu formularz, z akcją do tego skryptu, który ma przycisk:
<input type='submit' name='submit' value='zmien'>

Wygoda polega na tym, że bez kliknięcia w przycisk kod update się nie wykona, jedynie pokaże się formularz (lub tabela jak wolisz), A po wykonaniu, znów pokaże się formularz. I tak w kółko. Zamiast UPDATE możesz zrobić tym sposobem np INSERTA LUB DELETA
Go to the top of the page
+Quote Post
piotrooo89
post
Post #14


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




em-ba co zrobiłeś że zadziałało?

marck może ja sie nie znam ale zawsze uczyli mnie żę do takich żeczy używa się funckij isset ... ale nie wiem moge sie mylić i Twój sposób jest równie poprawyny smile.gif

Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
PawelC
post
Post #15





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Przerobiłem mu trochę kod bo nie miał skąd pobrać $login ponieważ zamiast użyć $_SESSION['zalogowany'] używał $login.
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 Aktualny czas: 22.08.2025 - 10:20