[php] Skrypt zmieniający moją wartosc w polu tabeli

0

Jak wyglądałby skrypt, który zmieniałby mi wartosc mojego pola "Plec" na to, co ma tam wpisany uzytkownik o nazwie "Ktos" ?

Ja mam np. "kobieta", a on ma "mezczyzna". Skrypt zmienilby mi wtedy na "mezczyzna", ale nie pisząc doslownie "mezczyzna" w skrypcie, tylko pobierając to słowo z bazy danych z pola uzytkownika "Ktos".

Aby zmienic wartosc mojego pola "Plec" na wartosc z mojego innego pola np. "Wiek", sluzy do tego mój taki skrypt:

      $sql_zmien = "SELECT `Plec` FROM `tabela` WHERE `PlayerName` = '$row->PlayerName'";
      $x_zmien = "mysql_query()";
      $x_zmien = $row->Wiek; // tu sie ustawia, aby wartosc mojego pola Plec zostala zamienona na taka sama wartosc jaka jest w polu Wiek
      $sql_zmien = "UPDATE `tabela` SET `Plec` = '".$x_zmien."' WHERE `playerName` = '$row->PlayerName'";

      mysql_query($sql_zmien);

Ale nie wiem jak to przerobic na przykład na początku posta ; /
Potrafi ktoś pomóc?

0

To cos powyzej dziala jakkolwiek? Bo pierwszego zapytania nie wykonujesz, a drugie jest raczej niepoprawne...

O ile zrozumialem teraz to sprobuj tak:

update tabela set plec = (select plec from tabela where uzytkownik='Ktos') where uzytkownik = 'ja'

Powinno zadzialac, choc nie jestem pewien czy np. na MySQLu pojdzie. Jak nie pojdzie to najpierw odczytaj z tabeli jednego uzytkownika, a pozniej zapisz drugiego.

0

Tamten mój skrypt działa :P

Za chwile sprobuje twoj.

0

Niestety ten twój sposób nie działa ;S
Ale wydaje mi się, że jest dobry i powinien zadziałać ...

Przepraszam, ze pisze nowego posta, ale poprzedniego nie moge zedytowac, bo nie napisalem go zalogowany.

0

Ok, w takim razie ja nic nie rozumiem z tego co napisales. Co do Twojego skryptu to to co podales nie powinno dzialac, ale najwyrazniej jest cos wiecej (chocby zmienna $row :P).

//edit
To jak wydaje sie dobry, to co znaczy 'nie dziala'? mysql_error() co daje?

0

Piszę tak:

      $sql_zmien = "SELECT `pole` FROM `tabela` WHERE `user` = '$row->PlayerName'";
      $sql_zmien = "UPDATE `tabela` SET `pole` = (SELECT `pole` FROM `tabela` WHERE `user` = 'Ktos') WHERE `user` = '$row->PlayerName'";

      mysql_query($sql_zmien);

Oczywisce "pole", "tabela" i "user" zmieniam na swoje dane z bazy danych.

Po prostu nic sie nie robi, nie ma tez zadnego bledu ; /

0

A po co ten pierwszy select skoro go nie wykonujesz? Jaka wartosc ma $row->PlayerName? Daj takie cus:

echo "UPDATE `tabela` SET `pole` = (SELECT `pole` FROM `tabela` WHERE `user` = 'Ktos') WHERE `user` = '$row->PlayerName'";

i wklej co wyszlo najpierw np. w phpmyadmin, a jak nie pomoze to na forum.

0
johny_bravo napisał(a)

A po co ten pierwszy select skoro go nie wykonujesz? Jaka wartosc ma $row->PlayerName? Daj takie cus:

echo "UPDATE `tabela` SET `pole` = (SELECT `pole` FROM `tabela` WHERE `user` = 'Ktos') WHERE `user` = '$row->PlayerName'";

i wklej co wyszlo najpierw np. w phpmyadmin, a jak nie pomoze to na forum.

$row->PlayerName wyświetla nazwę aktualnie zalogowanego użytkownika.

Co do tego sposobu, to tak się spodziewałem, wyświetlił się po prostu tekst:

UPDATE tabela SET pole = (SELECT pole FROM tabela WHERE user = 'Ktos') WHERE user = '$row->PlayerName

0

Wyswietlil dokladnie taki tekst? Bo jak tak, to wszystko jasne. W bazie zapewne nie masz uzytkownika o nazwie $row->PlayerName (doslownie), nie?

Inna sprawa, ze nie powinien takiego tekstu wyswietlic, bo $row to zmienna. Wiec cos tu jest nie tak.

0

Dokładnie, to wyświetla:

UPDATE `tabela` SET `pole` = (SELECT `pole` FROM `tabela` WHERE `user` = 'Ktos') WHERE `user` = 'Test'

Test to nazwa zalogowanego uzytkownika.

0

No to nie dokladnie to, po powyzej napisales co innego ;)

A jak wywolujesz to zapytanie w phpMyAdmin to dziala?

0
johny_bravo napisał(a)

A jak wywolujesz to zapytanie w phpMyAdmin to dziala?

Po prostu wyświetla ten tekst na stronie, w bazie danych nic to nie zmienia to wyświetlanie tekstu.
O to chodzi? :P

0

Powinno byc napisane 'zaktualizowano x rekordow'. Jak zero to upewnij sie, ze userzy tak wlasnie sie nazywaja dokladnie (jak mysql to wielkosc liter nieistotna).

0

To echo nic nie da, bo to wyświetli tylko tekst, nic nie zrobi ...

0

Geeez. Pisze przeciez po raz 4, zebys to zapytanie wywolal w phpmyadmin - znaczy sie na bazie wprost...

0
johny_bravo napisał(a)

Geeez. Pisze przeciez po raz 4, zebys to zapytanie wywolal w phpmyadmin - znaczy sie na bazie wprost...

Niestety nie wiem jak to zrobic w panelu phpmyAdmin ;p

0

Nie wiesz, znaczy nie masz phpmyAdmina, czy nie wiesz gdzie wkleic? Jak masz, to zakladka sql i wklejasz zapytanie/wykonaj i ogladasz wyniki. A jak nie masz to napisz jakiego masz klienta do obslugi bazy i w ogole jaki serwer, bo tego tez nie napisales nigdzie chyba.

0
<font color="red">#1093 - You can't specify target table 'neighborhoods' for update in FROM clause </font>

Taki zwrócilo komunikat.

0

Znaczy sie bazka nie obsluguje takich podzapytan...
Zrob tak:

$zapytanie = "select plec from tabela where uzytkownik='Ktos'";
$odpowiedz = mysql_query($zapytanie);
$row = mysql_fetch_array($odpowiedz);
$zapytanie = "update tabela set plec='$row[plec]' where user='Test'";
mysql_query($zapytanie);

i zobacz czy zadziala.

0

Dzieki dzieki dzieki działa !! :-) :d
[browar]

Nareszcie się udało :d
Jesteś wielki!

Pozdrawiam i jeszcze raz dzięki!

//edit: Jeszcze mam jedno pytanie

Jezeli napiszę:

  $zapytanie = "select pole from tabela";

bez
WHERE user = 'blabla'

To skąd będzie brać te dane? Tzn. z którego użytkownika? Losowo, czy jak? :-)

0

Pierwszego z brzegu, gdzie 'pierwszy' nigdy nie jest zagwarantowany. Baza trzyma rekordy w jakiejs tam kolejnosci, najczesciej w kolejnosci dodawania, ale nie mozna na tym polegac. Od tego jest dodatek 'order by kolumna'. Wewnetrzna kolejnosc zazwyczaj zalezy od optymalizacji po prostu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1