Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] update danych do bazy
Forum PHP.pl > Forum > Przedszkole
em-ba
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.  ?>
PawelC
  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.
em-ba
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
Mlodycompany
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. ?>
PawelC
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.  ?>
em-ba
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?
piotrooo89
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
PawelC
skąd pobierasz tą $login?
Podaj strukturę bazy danych.
em-ba
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
PawelC
A login pobierasz z sesji czy jak?
em-ba
juz jest ok
Mlodycompany
@Exploit ja podałem tylko kod który zmienia dane, to w jaki sposób em-ba go wykorzysta to juz jego sprawa.
marck
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
piotrooo89
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
PawelC
Przerobiłem mu trochę kod bo nie miał skąd pobrać $login ponieważ zamiast użyć $_SESSION['zalogowany'] używał $login.
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.