Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Porównanie zawartośći zmiennej z zawartością kolumny w bazie., pierwszy skrypt w php
pzcjnr
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 26.03.2009

Ostrzeżenie: (0%)
-----


Witam. Tworze swój pierwszy skrypt w php, doszedłem do momentu, w którym nie mogę sobie poradzić i prosił bym o pomoc doświadczonych kolegów.
Mianowicie mam formularz, potrzebuje porównać czy to co zostanie przekazane w formularzu znajduje się w pewnej tabeli w bazie danych.
Dokładniej:
1. W formularzu wpisuje login użytkownika i chce sprawdzić czy użytkownik o takim loginie istnieje w bazie. Więc dane z formularza przekazuje sobie do zmiennej, wszystko jest ok.
2. Połączenie z bazą danych mam ok, bez błędów.
3. Chce sprawdzić czy login przekazany w zmiennej znajduje się w kolumnie username tabeli user i jeśli tak pobrać userid użytkownika o tym username(loginie), jeśli nie wyświetlić stosowny komunikat. Nie wiem za bardzo jak się do tego zabrać. Prubuje coś z takim zapytaniem

Kod
$query = 'SELECT username, userid FROM user where username == $zmienna';


ale po pierwsze nie działa, a po drugie nawet gdyby zadziałało i wyświetli mi to to nie wiem jak to przypisać potem zmiennej...

Może kombinuje za bardzo, nie wiem, jest to mój pierwszy skrypt w php, przeczytałem tylko jedną książkę o php 5 jednak mało jest tam o pracy z bazami danych. Proszę o jakąś pomoc jeśli to możliwe, jesli nie to chociaż jakieś wskazówki lub polecenie dobrej literatury, która pomoże mi rozwiązać moje problemy. Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
K4mil94
post
Post #2





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

Ostrzeżenie: (0%)
-----


Zapytanie ma być:
Kod
SELECT username, userid FROM user WHERE username='$zmienna'


Ten post edytował K4mil94 26.03.2009, 15:52:25
Go to the top of the page
+Quote Post
artur_dziocha
post
Post #3





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

Ostrzeżenie: (0%)
-----


bardzo ciekawa strona
Temat: linkiKursy_dla_poczatkujacych
poklikaj, poczytaj
Go to the top of the page
+Quote Post
Maxik
post
Post #4





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


W zapytaniu nie == tylko =, dodatkowo string w zapytaniu powinien być w ' i ', a samo zapytanie powinno być w " i "
  1. <?php
  2. $query = "SELECT username, userid FROM user WHERE username='".$zmienna."'";
  3. ?>


Potem sprawdzasz:
  1. <?php
  2. if(mysql_num_rows(mysql_query($query)==1){
  3. echo 'zalogowano';
  4. } else{
  5. echo 'błąd';
  6. }
  7. ?>


Ten post edytował Maxik 26.03.2009, 15:53:38


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
pzcjnr
post
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 26.03.2009

Ostrzeżenie: (0%)
-----


Użyłem tego zapytania, nawet tak by samo id zwracało tylko czyli w moim przypadku:
Kod

<?php
$query = "SELECT userid FROM user WHERE username='".$wyzywaj."'";
$wynik = mysql_query($query);
echo ("Wynik rowna sie: $wynik");
?>

Zrobiłem tak by sprawdzić co zwraca mi zapytanie. Powinno mi zwrócić samą liczbę, (1 w przypadku który testuje)
a zwraca mi zawsze taki ciąg:
Kod
Wynik rowna sie: Resource id #2

Co może powodować ten błąd?
Go to the top of the page
+Quote Post
K4mil94
post
Post #6





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $zapytanie = "SELECT * FROM users WHERE username='$wyzywaj';";
  3. $wynik = mysql_query($zapytanie);
  4. $dane = mysql_fetch_array($wynik);
  5. $id = $dane['userid'];
  6. echo "Wynik równa się: $id";
  7. ?>
To spróbuj.

Ten post edytował K4mil94 27.03.2009, 13:12:35
Go to the top of the page
+Quote Post
pianta_d
post
Post #7





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

Ostrzeżenie: (0%)
-----


Poczytaj o mysql_fetch_array



Powinno pomóc
Go to the top of the page
+Quote Post
pzcjnr
post
Post #8





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 26.03.2009

Ostrzeżenie: (0%)
-----


dzięki, zmodyfikowałem trochę kod kolegi K4mil94 i działa tak jak chce. Mam jeszcze tylko mały problem ze składnią zapytania insert. Mianowicie mam tak:

Kod
if (mysql_num_rows($wynik)==1 && mysql_num_rows($wynik2)==1){
$zapis = "INSERT INTO Bitwy (id_bitwy, wyzywajacy, wyzywany, status) VALUES ('NULL, $id, $id2, ".$status."')";

W ogóle mi nie zapisuje do bazy nic. id_bitwy jest ustawione na auto_increment, czytałem, że wtedy trzeba wstawić Null w zapytaniu żeby poprawnie dodało może jednak trzeba inaczej. Skrypt nie zgłasza błędu, po prostu się nie zapisuje nic.
Go to the top of the page
+Quote Post
K4mil94
post
Post #9





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $zapytanie = "INSERT INTO `Bitwy`(`id_bitwy`, `wyzywajacy`, `wyzywany`, `status`) VALUES ('', '$id', '$id2', '$status');";
  3. $wynik = mysql_query($zapytanie);
  4. ?>
Tak zobacz. I czy na id_bitwy masz ustawiony Primary Key ?

Ten post edytował K4mil94 27.03.2009, 16:40:54
Go to the top of the page
+Quote Post
piotrooo89
post
Post #10


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




~K4mil94 jak podajesz to rób to poprawnie.

  1. <?php
  2. $zapytanie = "INSERT INTO `Bitwy`(`wyzywajacy`, `wyzywany`, `status`) VALUES ('".$id."', '".$id2."', '".$status."')";
  3. $wynik = mysql_query($zapytanie);
  4. ?>


--------------------
Go to the top of the page
+Quote Post
InosU31
post
Post #11





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


Cytat(pzcjnr @ 27.03.2009, 16:30:41 ) *
dzięki, zmodyfikowałem trochę kod kolegi K4mil94 i działa tak jak chce. Mam jeszcze tylko mały problem ze składnią zapytania insert. Mianowicie mam tak:

Kod
if (mysql_num_rows($wynik)==1 && mysql_num_rows($wynik2)==1){
$zapis = "INSERT INTO Bitwy (id_bitwy, wyzywajacy, wyzywany, status) VALUES ('NULL, $id, $id2, ".$status."')";

W ogóle mi nie zapisuje do bazy nic. id_bitwy jest ustawione na auto_increment, czytałem, że wtedy trzeba wstawić Null w zapytaniu żeby poprawnie dodało może jednak trzeba inaczej. Skrypt nie zgłasza błędu, po prostu się nie zapisuje nic.



nie wiem czy to wazne ale czy nie powinno byc tak ? :
  1. <?php
  2. if (mysql_num_rows($wynik) ==0 && mysql_num_rows($wynik2)==0) //jesli ilosc wynikow rowna 0 - czyli nie znaleziono to wtedy wykonuje ponizsza instrukcje czyli INSERT
  3. {
  4. ?>

a pozniej tak jak panowie wyzej Ci napisali ;-)
Go to the top of the page
+Quote Post
pzcjnr
post
Post #12





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 26.03.2009

Ostrzeżenie: (0%)
-----


tak, id bitwy jest primary key-em.
Testowałem oba kody niestety przy obydwóch to samo czyli dalej nie zapisuje. Czy może mieć to znaczenie, że w tej tabeli mam jeszcze kilka kolumn w których nie zapisuje nic przy tym zapytaniu? jednak mają ustawione, "Null" na tak więc chyba powinno być ok.

Generalnie struktura mojej tabeli wygląda tak:


Naprawdę już nie wiem co jest nie tak.
Go to the top of the page
+Quote Post
K4mil94
post
Post #13





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

Ostrzeżenie: (0%)
-----


@piotrek mi działa tak jak podałem.
------------------------------------------
Zmień z int na tinyint
Go to the top of the page
+Quote Post
pzcjnr
post
Post #14





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 26.03.2009

Ostrzeżenie: (0%)
-----


Cytat(InosU31 @ 27.03.2009, 17:11:52 ) *
nie wiem czy to wazne ale czy nie powinno byc tak ? :
  1. <?php
  2. if (mysql_num_rows($wynik) ==0 && mysql_num_rows($wynik2)==0) //jesli ilosc wynikow rowna 0 - czyli nie znaleziono to wtedy wykonuje ponizsza instrukcje czyli INSERT
  3. {
  4. ?>

a pozniej tak jak panowie wyzej Ci napisali ;-)


nie, tak jak jest. W formularzu są podawane dwa nicki userów, skrypt sprawdza czy userzy z takimi nickami rzeczywiście są w tabeli user jeśli są to wtedy zapisuje ich id do tabeli bitwy, w polach id1, i id2. Może na pierwszys rzut oka trochę nie logicznie ale chodzi o to by była możliwość zapisywania tylko tych id userów którzy są w bazie w tabeli z użytkownikami.

Ten post edytował pzcjnr 27.03.2009, 17:26:59
Go to the top of the page
+Quote Post
InosU31
post
Post #15





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


Cytat(pzcjnr @ 27.03.2009, 17:26:13 ) *
nie, tak jak jest. W formularzu są podawane dwa nicki userów, skrypt sprawdza czy userzy z takimi nickami rzeczywiście są w tabeli user jeśli są to wtedy zapisuje ich id do tabeli bitwy, w polach id1, i id2. Może na pierwszys rzut oka trochę nie logicznie ale chodzi o to by była możliwość zapisywania tylko tych id userów którzy są w bazie w tabeli z użytkownikami.



nie wiem czy rozumiem dobrze ale jesli masz tabele i w niej umieszczone jakies dane (np. niki) i chcesz je uzupelnic to moze uzyj:
  1. <?php
  2. $zapytanie = "UPDATE bitwy SET wyzywajacy = '$id, wyzywany = '$id2', status ='$status')";
  3. $wynik = mysql_query($zapytanie);
  4. ?>


"bitwy" powinienes napisac z malej bo tak masz w bazie z tego co widze

Ten post edytował InosU31 27.03.2009, 17:43:01
Go to the top of the page
+Quote Post
pianta_d
post
Post #16





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

Ostrzeżenie: (0%)
-----


Nie tak
  1. <?php
  2. $zapytanie = "UPDATE bitwy SET wyzywajacy = '$id, wyzywany = '$id2', status ='$status')";
  3. ?>


ale tak
  1. <?php
  2. $zapytanie = "UPDATE bitwy SET wyzywajacy = '".$id."', wyzywany = '".$id2."', status ='".$status."')";
  3. ?>
Go to the top of the page
+Quote Post
pzcjnr
post
Post #17





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 26.03.2009

Ostrzeżenie: (0%)
-----


Cytat(InosU31 @ 27.03.2009, 17:41:40 ) *
nie wiem czy rozumiem dobrze ale jesli masz tabele i w niej umieszczone jakies dane (np. niki) i chcesz je uzupelnic to moze uzyj:
  1. <?php
  2. $zapytanie = &#092;"UPDATE bitwy SET wyzywajacy = '$id, wyzywany = '$id2', status ='$status')\";
  3. $wynik = mysql_query($zapytanie);
  4. ?>


"bitwy" powinienes napisac z malej bo tak masz w bazie z tego co widze


nie, tabela bitwy jest w 100 % czysta. Żadnych danych. Dane mam w tabeli user. Tabela user jest główną tabelą mojego skryptu forum (vBulletin) Pisze małą modyfikacje i na jej potrzeby utworzyłem nową tabelę (bitwy) i do niej chce zapisać dane.

EDIT: Już wszystko ok. Miałem bardzo głupi błąd na który zwrócił mi uwagę InosU31. Mianowicie w zapytaniu miałem "bitwy' z dużej a należało użyć z małej tak jak w bazie co jest zresztą logiczne.
Dziękuje wszsytkim za pomoc.


Ten post edytował pzcjnr 27.03.2009, 19:39:46
Go to the top of the page
+Quote Post
InosU31
post
Post #18





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


to w takim razie moze tak zadziala (nie jestem pewien bo nie sprawdzilem):

musisz najpierw wykonac zapytanie ktore wybierze ci userow:
  1. <?php
  2. $users = mysql_query ("SELECT * FROM 'user' WHERE id = '$id'");
  3. if (mysql_num_rows($users) != 0) // jesli istnieje to  
  4.  
  5. {
  6. $dane = "INSERT INTO `Bitwy`(`wyzywajacy`, `wyzywany`, `status`) VALUES ('".$id."', '".$id2."', '".$status."')"; // doda ci do drugiej tabeli te dane
  7. $wynik = mysql_query($dane);
  8. }
  9. ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 07:13