Mam problem z wysyłaniem danych do tabeli użytkownika,niby pokazuje,że dodało do bazy i pokazuje takie coś:
Twoje dane zostal dodany.: ()
.A oto ten skrypt:
<?php
require 'db.php'; if(isset($_POST['opis'])){
$nazwa=addslashes(htmlspecialchars($_POST['ksywa']));
$name=addslashes(htmlspecialchars($_POST['nazwisko']));
$opis=addslashes(htmlspecialchars($_POST['opis']));
} $nick = $_SESSION['nick'];
$haslo = $_SESSION['haslo'];
if ((empty($nick)) AND (empty($haslo))) {
echo '
Nie byłeś zalogowany albo zostałeś wylogowany
Strona Główna
';
exit;
}
$user = mysql_fetch_array(mysql_query("SELECT * FROM uzytkownicy WHERE `nick`='$nick' AND `haslo`='$haslo' LIMIT 1"));
if (empty($user[id]) OR !isset($user[id])) {
echo '
Nieprawidłowe logowanie.
';
exit;
}
// tresc dla zalogowanego uzytkownika
echo 'Witaj '.$user[nick].'';
echo '
Wyloguj mnie'; $row = mysql_fetch_object($user[id]); $id = $row->$user[nick];
$nazwa = $row->ksywa; $name = $row->nazwisko; $opis = $row->opis;
$sql =" UPDATE uzytkownicy SET ksywa='$nazwa',nazwisko='$name',opis='$opis' WHERE nick='$nick'"; $zapytanie = mysql_query($sql);
if(!$zapytanie)
{
echo 'Nieudalo sie dodac danych.';
} else { echo '
';
echo 'Twoje dane zostal dodany.';
echo '';
}
$mysql=mysql_query("SELECT ksywa,nazwisko,opis FROM uzytkownicy LIMIT 1 ");
while($row=mysql_fetch_row($mysql)){
echo "$row[0]: ($row[1])
$row[2]
\n";
}
header('Location:?id=profil');?>
coś tu namieszałem i nie wiem co,proszę o pomoc.
PawelGIX
(PawelGIX)
2 Styczeń 2011 12:44
#2
Masz okropny bałagan w kodzie dlatego nie możesz dojść do tego co się dzieje.
prawdopodobnie linia
$sql =" UPDATE użytkownicy SET ksywa='$nazwa',nazwisko='$name',opis='$opis' WHERE nick='$nick'";
Wykonuje się za każdym razem i nadpisuje ci dane w bazie pustymi wartościami.
Co masz w bazie danych?
W bazie jest tabela uzytkownicy i pola:id,link_avatar,nick,haslo,email,czas_profilu są to już zapisane pola,a teraz ma uzupełnić dane:ksywa,nazwisko,opis.
PawelGIX
(PawelGIX)
2 Styczeń 2011 13:02
#4
PawelGIX:
prawdopodobnie linia $sql =" UPDATE użytkownicy SET ksywa=’$nazwa’,nazwisko=’$name’,opis=’$opis’ WHERE nick=’$nick’"; Wykonuje się za każdym razem przy wywołaniu skryptu i nadpisuje ci dane w bazie pustymi wartościami.
Dlatego dostajesz to co dostajesz. Tak przypuszczam…
Sprawdź jakie masz wartości w bazie, opis, nazwisko itp.
Z bazą jest raczej w porządku,konkretnie o jakie wartości chodzi???Coś raczej z kodem jest żle,
Spróbuj może tak
$user = mysql_query("SELECT * FROM `uzytkownicy` WHERE `nick`='{$nick}' AND `haslo`='{$haslo}' LIMIT 1");
if(!$user)
{
echo '
Nieprawidłowe logowanie.
';
exit;
}
// tresc dla zalogowanego uzytkownika
echo "Witaj {$nick}";
echo '
Wyloguj mnie';
$row = mysql_fetch_object($user);
$nazwa = $row->ksywa;
$name = $row->nazwisko;
//$opis = $row->opis;
$opis = "nowy opis";
$zapytanie = mysql_query("UPDATE `uzytkownicy` SET `ksywa`='{$nazwa}',`nazwisko`='{$name}',`opis`='{$opis}' WHERE `nick`='{$nick}' limit 1");
if(!$zapytanie)
echo 'Nie udalo sie dodac danych.';
else
echo '
Twoje dane zostaly dodane.';
$mysql=mysql_query("SELECT `ksywa`,`nazwisko`,`opis` FROM `uzytkownicy` LIMIT 1 ");//chyba by sie jakis waruenk przydal
while($row=mysql_fetch_assoc($mysql))
{
echo "{$row['ksywa']}: ({$row['nazwisko']})
{$row['opis']}
\n";
}
Jaki ma sens pobieranie danych z bazy i ich ponowny zapis w to samo miejsce bez zmiany?
Próbowałem pokazuje,że dane dodane : () i nie ma w bazie!
$nick = "wpisz_tutaj_nick";
ale nick ma być z logowania uzytkowników
Wiem ale sprawdź czy to zadziała i co wypisze, wstaw tam dowolny ale istniejący nick.
Próbowałem i wywaliło:
ksywa: (nazwisko)
opis
: ()
Czyli wyskoczyło to co powinno. Dane cały czas się aktualizowały(chociaż przy tej czynności w swoim kodzie masz błędy, a raczej je przepisywałeś na stare miejsce), tylko że z pustych na puste.
czy w miejsce
$nick = "wpisz_tutaj_nick";
zapisać
$nick = "$user";
$nick = $_SESSION[‘nick’];
$user = mysql_query("SELECT count(*) FROM `uzytkownicy` WHERE `nick`='{$nick}' AND `haslo`='{$haslo}'");
$ilW = mysql_fetch_array($user);
if($ilW[0] != 1)
{
exit('
Nieprawidłowe logowanie.
');
}
// tresc dla zalogowanego uzytkownika
echo "Witaj {$nick}";
echo '
Wyloguj mnie';
////////////////
$nazwa = "nowa nazwa";
$name = "jakies tam dane";
$opis = "nowy opis";
////////////////
mysql_query("UPDATE `uzytkownicy` SET `ksywa`='{$nazwa}',`nazwisko`='{$name}',`opis`='{$opis}' WHERE `nick`='{$nick}' limit 1");
$mysql=mysql_query("SELECT `ksywa`,`nazwisko`,`opis` FROM `uzytkownicy`");
while($row=mysql_fetch_assoc($mysql))
{
echo "{$row['ksywa']}: ({$row['nazwisko']})
{$row['opis']}
\n";
}
zrobiłem tak i działa:
$nick = $_SESSION['nick']; if(!empty($_POST['ksywa']))
{ $nazwa=$_POST['ksywa']; $name=$_POST['nazwisko'];
$opis=$_POST['opis'];
}
else
{
$opis='Brak opisu';
}
if(empty($nazwa)|| empty($name) || empty($opis))
{
echo "Musisz wypełnić wszystkie pola";
exit;
}
dzięki za pomoc =D> .
– Dodane 02.01.2011 (N) 18:38 –
Jeszcze jak możesz mi pomóc to jak zrobić edytowanie,czyli poprawianie wszystkich danych.Soorry jeszcze pytanko jak zrobić po dodaniu do bazy samoczynny powrót do podstrony profili.Z góry dzieki
header("location: adres");
http://php.net/manual/en/function.header.php
Wysyłasz zapytanie do bazy, to co zostanie zwrócone wstawiasz do odpowiednich pól w formularzu, a jako action dla form ustawiasz adres pliku, który odpowiada za aktualizację danych(czyli to co masz powyżej).
$nazwa=$_POST['ksywa'];
$name=$_POST['nazwisko'];
$opis=$_POST['opis'];
Nigdy nigdzie nie zapisuj/wyświetlaj (a nawet ich nie używaj w zapytaniach do bazy) danych pochodzących bezpośrednio z get oraz post bez odpowiedniego ich wcześniej przefiltrowania.
Poczytaj o strip_tags, htmlspecialchars,addslashes(stripslashes).
wiem dałem header,ale scrypt zamiast przejść do podstrony to wylogowuje i dopiero po kliknięciu przechodzi do strony głównej???a odnośnie edytowania danych,to nie wiem jak zrobić możliwość zmiany avatara,czyli coś typu usuń/dodaj.???
dodaj - upload zdjęcia do konkretnego folderu(poszukaj na forum co raz taki temat się pojawia) + aktualizacja danych w bazie
usuń - usuń zdjęcie z folderu + aktualizacja danych w bazie
aktualizuj - usuń stary avatar, zapisz nowy + aktualizacja danych w bazie
Jak zrobić usuwanie avatara z foderu danego użytkownika.
http://www.php.net/manual/pl/function.unlink.php (odpal czasem google)
Nie wrzucaj każdego avatara do osobnego folderu bo tylko bajzel narobisz, zrób jeden wspólny dla wszystkich avatarów bo w końcu ich nazwy dla poszczególnych użytkowników masz zapisane w bazie. Dodatkowo po załadowaniu zdjęcia na serwer podczas przekopiowywania do konkretnego folderu zmień jego nazwę na jakąś unikalną(np. nazwa składająca się z 10 losowo wybranych znaków wtedy występuje małe prawdopodobieństwo powtórzenia się nazwy).