em-ba
19.04.2008, 12:06:57
Witam

,
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

Co robię nie tak? ..proszę o pomoc..
<?php
mysql_connect ('localhost', 'root', 'krasnal') or
die ("nie udało sie połączyć");
'<div>
<form action="mojedane1.php" method="POST">
<fieldset>
<legend><b>Edytuj dane:</b></legend>
<div>
<div id="md">
<div>
<label for="imie">imię:</label>
<input id="imie" name="imie" class="text" type="text" maxlength="30" value="'.$dane2['imie'].'" />
</div>
<div>
<label for="nazwisko">nazwisko:</label>
<input id="nazwisko" name="nazwisko" class="text" type="text" maxlength="30" value="'.$dane2['nazwisko'].'" />
</div>
// imie i nazwisko to tylko wybrane dane..
</div>
</div>
</fieldset>
</form>
</div>';
$dane = "UPDATE `uzytkownicy`
SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
WHERE login='".$login."'";
?>
PawelC
19.04.2008, 12:16:25
<?php
mysql_connect ('localhost', 'root', 'krasnal') or
die ("nie udało sie połączyć");
'<div>
<form action="mojedane1.php?mod=akt" method="POST">
<fieldset>
<legend><b>Edytuj dane:</b></legend>
<div>
<div id="md">
<div>
<label for="imie">imię:</label>
<input id="imie" name="imie" class="text" type="text" maxlength="30" value="'.$dane2['imie'].'" />
</div>
<div>
<label for="nazwisko">nazwisko:</label>
<input id="nazwisko" name="nazwisko" class="text" type="text" maxlength="30" value="'.$dane2['nazwisko'].'" />
</div>
// imie i nazwisko to tylko wybrane dane..
</div>
</div>
</fieldset>
</form>
</div>';
$mod=$_GET['mod'];
$imie=$_POST['imie'];
$nazwisko=$_POST['nazwisko'];
if($mod==akt){
$dane = "UPDATE `uzytkownicy`
SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
WHERE login='".$login."'";
print "Zaktualizowano profil"; } else
{print "Wpisz nowe dane"; }
?>
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
19.04.2008, 12:35:52
wkleiłem tak:
<?php
mysql_connect ('localhost', 'root', 'krasnal') or
die ("nie udało sie połączyć");
$dane = mysql_query ("SELECT * FROM `uzytkownicy` WHERE login='".$login."'");
'<div>
<form action="mojedane1.php" method="POST">
<fieldset>
<legend><b>Edytuj dane:</b></legend>
<div>
<div id="md">
<div>
<label for="imie">imię:</label>
<input id="imie" name="imie" class="text" type="text" maxlength="30" value="'.$dane2['imie'].'" />
</div>
<div>
<label for="nazwisko">nazwisko:</label>
<input id="nazwisko" name="nazwisko" class="text" type="text" maxlength="30" value="'.$dane2['nazwisko'].'" />
</div>
</div>
</div>
</fieldset>
</form>
</div>';
$mod=$_GET['mod'];
$imie=$_POST['imie'];
$nazwisko=$_POST['nazwisko'];
if($mod==akt){
$dane = "UPDATE `uzytkownicy`
SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
WHERE login='".$login."'";
print "Zaktualizowano profil"; } else
{print "Wpisz nowe dane"; }
?>
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
19.04.2008, 12:47:24
zrob tak
<?php
SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
WHERE login='".$login."'");
if($a){
}
?>
PawelC
19.04.2008, 13:03:19
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:
<?php
if($mod==akt){
$dane = "UPDATE `uzytkownicy`
SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
WHERE login='".$login."'";
print "Zaktualizowano profil"; } else
{print "Wpisz nowe dane"; }
?>
em-ba
19.04.2008, 13:18:08
dorzuciłem przycisk ale nic to nie zmieniło:
<?php
mysql_connect ('localhost', 'root', 'krasnal') or
die ("nie udało sie połączyć");
$dane = mysql_query ("SELECT * FROM `uzytkownicy` WHERE login='".$login."'");
'<div>
<form action="mojedane1.php" method="POST">
<fieldset>
<legend><b>Edytuj dane:</b></legend>
<div>
<div id="md">
<div>
<label for="imie">imię:</label>
<input id="imie" name="imie" class="text" type="text" maxlength="30" value="'.$dane2['imie'].'" />
</div>
<div>
<label for="nazwisko">nazwisko:</label>
<input id="nazwisko" name="nazwisko" class="text" type="text" maxlength="30" value="'.$dane2['nazwisko'].'" />
</div>
<div>
<a href="mojedane1.php"><input id="submit" name="send" class="submit" type="submit" value="akt"/></a>
</div>
</div>
</div>
</fieldset>
</form>
</div>';
$mod=$_GET['mod'];
$imie=$_POST['imie'];
$nazwisko=$_POST['nazwisko'];
if($mod==akt){
$dane = "UPDATE `uzytkownicy`
SET `imie`='".$imie."',`nazwisko`='".$nazwisko."'
WHERE login='".$login."'";
print "Zaktualizowano profil"; } else {
}
?>
co mam zrobić aby było ok?
piotrooo89
19.04.2008, 13:29:34
Nie wiem czy dobrze myśle ale możesz zrobić tak:
<?php
$mod=$_GET['mod'];
$imie=$_POST['imie'];
$nazwisko=$_POST['nazwisko'];
if ((isset($_POST['imie']) or
(isset($_POST['nazwisko']))) {
if($mod==akt){
$dane = \"UPDATE `uzytkownicy`
SET `imie`='\".$imie.\"',`nazwisko`='\".$nazwisko.\"'
WHERE login='\".$login.\"'\";
print \"Zaktualizowano profil\"; } else {
print \"Wpisz nowe dane\"; }
}
?>
Nie ręcze że bedzie działać
Pozdrawiam
PawelC
19.04.2008, 13:56:36
skąd pobierasz tą $login?
Podaj strukturę bazy danych.
em-ba
19.04.2008, 14:18:03
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
19.04.2008, 15:51:02
A login pobierasz z sesji czy jak?
Mlodycompany
19.04.2008, 20:20:35
@Exploit ja podałem tylko kod który zmienia dane, to w jaki sposób em-ba go wykorzysta to juz jego sprawa.
marck
20.04.2008, 00:20:33
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
21.04.2008, 07:22:52
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

Pozdrawiam
PawelC
21.04.2008, 12:42:00
Przerobiłem mu trochę kod bo nie miał skąd pobrać $login ponieważ zamiast użyć $_SESSION['zalogowany'] używał $login.