[php]problem z zapytaniem UPDATE wyślij dane


(batmomobil) #1

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) #2

Masz okropny bałagan w kodzie :wink: 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?


(batmomobil) #3

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) #4

Dlatego dostajesz to co dostajesz. Tak przypuszczam... :wink:

Sprawdź jakie masz wartości w bazie, opis, nazwisko itp.


(batmomobil) #5

Z bazą jest raczej w porządku,konkretnie o jakie wartości chodzi???Coś raczej z kodem jest żle,


(mario@) #6

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?


(batmomobil) #7

Próbowałem pokazuje,że dane dodane : () i nie ma w bazie! !!


(mario@) #8


(batmomobil) #9
$nick = "wpisz_tutaj_nick";

ale nick ma być z logowania uzytkowników


(mario@) #10

Wiem ale sprawdź czy to zadziała i co wypisze, wstaw tam dowolny ale istniejący nick.


(batmomobil) #11

Próbowałem i wywaliło:

ksywa: (nazwisko)

opis


: ()

(mario@) #12

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.


(batmomobil) #13

czy w miejsce

$nick = "wpisz_tutaj_nick";

zapisać

$nick = "$user";

(mario@) #14

$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";

    }

(batmomobil) #15

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 :smiley: =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 :smiley:


(mario@) #16

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).


(batmomobil) #17

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.???


(mario@) #18

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


(batmomobil) #19

Jak zrobić usuwanie avatara z foderu danego użytkownika.


(mario@) #20

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).