Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Dlaczego Nie Dziala?
MarcinJarek
post 23.08.2004, 13:37:48
Post #1





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.10.2003
Skąd: Warszawa

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


  1. <?
  2. $sql = mysql_connect (localhost, root, krasnal);
  3. mysql_select_db(&#092;"php\");
  4. $zapytanie = &#092;"SELECT * FROM uzytkownicy\";
  5. $wykonaj = mysql_query($zapytanie);
  6.  
  7. $q =&#092;"INSERT INTO uzytkownicy (`id`, `nick`, `haslo`, `data`) VALUES ('' , 'nick' , 'haslo' , 'data')\";
  8. $w=mysql_query($q);
  9. ?>


Dlaczego mi to nie dziala? Zawsze dzialalo a teraz nagle nie pojawia sie blad ale nie wpisuje nic do bazy...

Ten post edytował MarcinJarek 23.08.2004, 13:38:38


--------------------
Go to the top of the page
+Quote Post
mhs
post 23.08.2004, 13:51:22
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


1) jezeli pole jest id jest kluczem podstawowym tabeli (primary key auto_increment) to przy dodawaniu rekordu do bazy danych mozesz opuscic to pole i zapytanie napisac tak:
  1. INSERT INTO uzytkownicy (`nick`, `haslo`, `data`) VALUES ('nick' , 'haslo' , 'data')";


2) co Ty chcesz dokladnie zrobic? czy to co zaprezentowales to kompletny kod? najpierwsz pobierasz dane z jakiejs tabeli a pozniej co? nic z tym nie robisz? w nastepnej kolejnosci dodajesz jakies dane do tej samej tabeli? czy sa to moze jakies fragmenty kodu... questionmark.gif
- zauwaz co do dodajesz do tabeli uzytkownicy: 'nick', 'haslo', 'data' - przypadkiem nie powinny tam byc jakies zmienne.. czy akurat chcesz dodawac te dane... ale watpie...

3) nie chce mi sie pisac wszystkiego od poczatku wiec przytaj sobie odpowiedz delorian'a z tego watku http://forum.php.pl/index.php?showtopic=20218

Ten post edytował mhs 23.08.2004, 13:51:47
Go to the top of the page
+Quote Post
Yarecki
post 23.08.2004, 13:51:27
Post #3





Grupa: Zarejestrowani
Postów: 166
Pomógł: 0
Dołączył: 1.04.2004
Skąd: Gdynia

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


mysql_connect (localhost, root, krasnal);
powinno być chyba tak:
mysql_connect ('localhost', 'root', 'krasnal');

BTW. wszędzie gdzie masz funkcje mysql_ dodaj na końcu or die(mysql_error()); np.:
mysql_connect ('localhost', 'root', 'krasnal') or die(mysql_error());
Teraz powinieneś zobaczyć komunikat o błędzie.


--------------------
Nigdy nie kłóć się z głupim, ludzie mogą nie dostrzec różnicy.
Go to the top of the page
+Quote Post
mhs
post 23.08.2004, 13:53:08
Post #4





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


Cytat(Yarecki @ 2004-08-23 14:51:27)
mysql_connect (localhost, root, krasnal);
powinno być chyba tak:
mysql_connect ('localhost', 'root', 'krasnal');

BTW. wszędzie gdzie masz funkcje mysql_ dodaj na końcu or die(mysql_error()); np.:
mysql_connect ('localhost', 'root', 'krasnal') or die(mysql_error());
Teraz powinieneś zobaczyć komunikat o błędzie.

ech... cale 5 sekund bylem szybszy.. smile.gif
Go to the top of the page
+Quote Post
Yarecki
post 23.08.2004, 14:21:49
Post #5





Grupa: Zarejestrowani
Postów: 166
Pomógł: 0
Dołączył: 1.04.2004
Skąd: Gdynia

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


Cytat(MarcinJarek @ 2004-08-23 15:11:08)
Dzieki za pomoc. To nie jest kompletny kod smile.gif a jak mozecie to jak zrobic aby zapisywal skrypt zmienne. A moze takie cos wystarczy:

  1. <?php
  2. INSERT INTO uzytkownicy (`nick`, `haslo`, `data`) VALUES ('$nick' , '$haslo' , '$data')&#092;";
  3. ?>

Ja używam takiej składni:

  1. <?php
  2. $mixQuery = 'INSERT into tabela( pole1, pole2 ) VALUES( 5, '' . $strZmienna . '' )';
  3. $mysql_query( $mixQuery );
  4. ?>

można też tak:
  1. <?php
  2. $mixQuery = &#092;"INSERT into tabela( pole1, pole2 ) VALUES( 5, '$strZmienna' )\";
  3. $mysql_query( $mixQuery );
  4. ?>


Ten post edytował Yarecki 23.08.2004, 14:25:06


--------------------
Nigdy nie kłóć się z głupim, ludzie mogą nie dostrzec różnicy.
Go to the top of the page
+Quote Post
MarcinJarek
post 23.08.2004, 15:29:29
Post #6





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.10.2003
Skąd: Warszawa

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


Kurde - teraz mam kod taki:

  1. <?php
  2. mysql_connect ('localhost', 'root', 'krasnal') or die(mysql_error());
  3.  
  4. mysql_select_db(&#092;"php\");
  5. $data = date('Y-m-d G:i:s');
  6. $q =&#092;"INSERT INTO uzytkownicy (`login`, `haslo`, `imie`, 'nazwisko', 'mail', 'typ', 'data') VALUES ('$login' , '$haslo' , '$imie, '$nazwisko', '$mail', 'testowani', '$data')\";
  7. $w=mysql_query($q);
  8. ?>


I nie chce dzialac - nie dodaje. ID - to jest primary key - wiec omijam go.

Dzieki z goryy:)


--------------------
Go to the top of the page
+Quote Post
Nitryt14
post 23.08.2004, 15:38:25
Post #7





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 17.02.2004
Skąd: Gdańsk

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


Omijasz pole ID?
Cytat
nie chce dzialac - nie dodaje. ID - to jest primary key - wiec omijam go.

A czy przy polu ID ustawiłeś na AUTO_INCREMENT ?

Jeżeli nie to ustaw bo inaczej nie będzie działać!

A jeżeli nie chcesz tego zmieniać ta wpisz taki kod:
  1. <?php
  2.  
  3. mysql_connect ('localhost', 'root', 'krasnal') or die(mysql_error());
  4.  
  5. mysql_select_db(&#092;"php\");
  6. $sql_num = &#092;"SELECT * FROM uzytkownicy;\";
  7. $query_num = mysql_query($sql_num);
  8. $result = mysql_num_rows($query_num);
  9. $result = $result + 1;
  10. $data = date('Y-m-d G:i:s');
  11. $q =&#092;"INSERT INTO uzytkownicy ('id',`login`, `haslo`, `imie`, 'nazwisko', 'mail', 'typ', 'data') VALUES ('$result','$login' , '$haslo' , '$imie, '$nazwisko', '$mail', 'testowani', '$data')\";
  12. $w=mysql_query($q);
  13.  
  14. ?>


Pozdrawiam


--------------------
Człowiek boi się tego czego nierozumie
---
Blog początkującego programisty
Go to the top of the page
+Quote Post
MarcinJarek
post 23.08.2004, 15:40:25
Post #8





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.10.2003
Skąd: Warszawa

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


Mam AUTO_INCREMENT i w polu artybury mam "UNSIGNED"

Co do kodu - wolalbym, aby dzialalo to autouzupelnianie...


--------------------
Go to the top of the page
+Quote Post
Nitryt14
post 23.08.2004, 15:44:28
Post #9





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 17.02.2004
Skąd: Gdańsk

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


To zmień ustawienie żeby nie było UNSIGNED tzn. wyłącz to!


--------------------
Człowiek boi się tego czego nierozumie
---
Blog początkującego programisty
Go to the top of the page
+Quote Post
MarcinJarek
post 23.08.2004, 15:46:28
Post #10





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.10.2003
Skąd: Warszawa

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


Nadal nie dziala. Wklejam caly kod bo to moze tego wina...


  1. <?
  2. if ($haslo==$haslo2) {
  3. echo &#092;"Podane hasla sa inne\";
  4. }else {
  5.  
  6. mysql_connect ('localhost', 'root', 'krasnal') or die(mysql_error());
  7.  
  8. mysql_select_db(&#092;"php\");
  9. $zapytanie = &#092;"SELECT * FROM uzytkownicy\";
  10. $wykonaj = mysql_query($zapytanie);
  11. $zapytanie = &#092;"SELECT login FROM uzytkownicy WHERE login='$login'\";
  12.  
  13. if(!zapytanie) {
  14. echo &#092;"Ten login jest juz zajety!\";
  15. } else {
  16. mysql_connect ('localhost', 'root', 'krasnal') or die(mysql_error());
  17.  
  18. mysql_select_db(&#092;"php\");
  19. $data = date('Y-m-d G:i:s');
  20. $q =&#092;"INSERT INTO uzytkownicy (`login`, `haslo`, `imie`, 'nazwisko', 'mail', 'typ', 'data') VALUES ('$login' , '$haslo' , '$imie, '$nazwisko', '$mail', 'testowani', '$data')\";
  21. $w=mysql_query($q);
  22. echo &#092;"dodano\";
  23.  
  24.  }
  25. }
  26.  
  27. ?>


P.S moze to wina, ze mam ustawione NULL - NIE

Ten post edytował MarcinJarek 23.08.2004, 15:47:12


--------------------
Go to the top of the page
+Quote Post
tumczasty
post 23.08.2004, 15:53:03
Post #11





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 2.08.2004
Skąd: Rzeszów

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


Cytat
$q ="INSERT INTO uzytkownicy (`login`, `haslo`, `imie`, 'nazwisko', 'mail', 'typ', 'data') VALUES ('$login' , '$haslo' , '$imie, '$nazwisko', '$mail', 'testowani', '$data')";

przy imieniu nie jest domknięty apostrof
Go to the top of the page
+Quote Post
MarcinJarek
post 23.08.2004, 15:57:48
Post #12





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.10.2003
Skąd: Warszawa

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


.....Nadal nie dziala ;(


--------------------
Go to the top of the page
+Quote Post
Nitryt14
post 23.08.2004, 16:02:36
Post #13





Grupa: Zarejestrowani
Postów: 76
Pomógł: 0
Dołączył: 17.02.2004
Skąd: Gdańsk

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


A na końcu tego zapytania
  1. <?php
  2.  
  3. $q =&#092;"INSERT INTO uzytkownicy (`login`, `haslo`, `imie`, 'nazwisko', 'mail', 'typ', 'data') VALUES ('$login' , '$haslo' , '$imie, '$nazwisko', '$mail', 'testowani', '$data')\";
  4.  
  5. ?>


Brakuje średnika zamień na:
  1. <?php
  2.  
  3. $q =&#092;"INSERT INTO uzytkownicy (`login`, `haslo`, `imie`, 'nazwisko', 'mail', 'typ', 'data') VALUES ('$login' , '$haslo' , '$imie, '$nazwisko', '$mail', 'testowani', '$data');\";
  4.  
  5. ?>


Pozdrawiam


--------------------
Człowiek boi się tego czego nierozumie
---
Blog początkującego programisty
Go to the top of the page
+Quote Post
mhs
post 23.08.2004, 16:04:40
Post #14





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


jezeli to jest koncowy kod to:

1) jezeli $haslo itd. to nazwy zmiennych prosto pobieranych z formularza to nie rob tak, tylko korzystaj z $_POST -> generalnie poczytaj o register globals

2) po co te dwa zapytania?
  1. $zapytanie = "SELECT * FROM uzytkownicy"; $wykonaj = mysql_query($zapytanie);
  2. $zapytanie = "SELECT login FROM uzytkownicy WHERE login='$login'";


wystarczy, ze wykonasz drugie zapytanie i sprawdzisz czy jest taki uzytkownik

3) mozesz nalozyc w projekcie bazy na pole login artybut UNIQUE przez co bedziesz mial zapewniona integralnosc danych w bd (przy zapytaniu, probie dodania uzytkownika o istniejacym loginie system uniemozliwi taka czynnosc)

4) nie musisz tworzyc zmiennej $date wytarczy ze zapiszesz:
  1. <?php
  2.  
  3. , '\".date('Y-m-d G:i:s').\"')&#092;";
  4.  
  5. ?>


5) nie sprawdzasz czy zapytanie zostalo faktycznie wykonane, tylko z gory zakladasz, ze jest ok...


  1. <?php
  2. $w=mysql_query($q);
  3. echo &#092;"dodano\";
  4. ?>


ps. to kilka uwag na poczatek... (jeszcze mozna by napisac o braku walidacji danych... i innych)



---edit---
Cytat
Brakuje średnika zamień na:

Kod php:
1
2
3
4
5
<?php

$q ="INSERT INTO uzytkownicy (`login`, `haslo`, `imie`, 'nazwisko', 'mail', 'typ', 'data') VALUES ('$login' , '$haslo' , '$imie, '$nazwisko', '$mail', 'testowani', '$data');";

?>



Pozdrawiam


nie brakuje... w zapytaniach wysylanych z poziomu skryptu nie stosuje sie tego, jezeli natomiast pracujesz na konsoli - to tak...

Ten post edytował mhs 23.08.2004, 16:06:43
Go to the top of the page
+Quote Post
MarcinJarek
post 23.08.2004, 16:13:52
Post #15





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.10.2003
Skąd: Warszawa

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


Wkelilem caly skrypt. A wiec w czym jest blad?

Aha nie ma takego czegosc jak 'UNIQUE"

Ten post edytował MarcinJarek 23.08.2004, 16:18:33


--------------------
Go to the top of the page
+Quote Post
mhs
post 23.08.2004, 16:25:55
Post #16





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


  1. <?php
  2. if ($haslo != $haslo2) {
  3.     echo &#092;"Podane hasla sa inne\";
  4. }
  5. else {
  6.     mysql_connect ('localhost', 'root', 'krasnal') or die(mysql_error());
  7.     
  8.     mysql_select_db(&#092;"php\");
  9.     
  10.     $zapytanie = &#092;"SELECT login FROM uzytkownicy WHERE login='$login'\";
  11.     
  12.     $wynikZapytania = mysql_query($zapytanie);
  13.     
  14.     if(mysql_num_rows($wynikZapytania) > 0) {
  15.         echo &#092;"Ten login jest juz zajety!\";
  16.     }
  17.     else
  18.     {        
  19.         $zapytanie =&#092;"INSERT INTO uzytkownicy (`login`, `haslo`, `imie`, 'nazwisko', 'mail', 'typ', 'data') VALUES ('$login' , '$haslo' , '$imie, '$nazwisko', '$mail', 'testowani', '\".date('Y-m-d G:i:s').\"')\";
  20.         
  21.         $wynikZapytania = mysql_query($zapytanie);
  22.         
  23.         if (mysql_affected_rows() > 0)
  24.             echo 'uzytkownik zostal dodany';
  25.         else
  26.             echo 'nie zostal dodany';
  27.     }
  28. }
  29. ?>


napisalem (poprawilem) to wlasciwie z glowy wiec nie dam 100% gwarancji...
przede wszystkim to przy sprawdzaniu loginu zapomniales wyslac zapytanie do bazy danych... zobacz czy to bedzie Ci dzialas...

niestety dzisiaj juz dalej Ci nie pomoge gdyz za chwile wychodze z pracy...



---e...
UNIQUE - jest

Ten post edytował mhs 23.08.2004, 16:30:19
Go to the top of the page
+Quote Post
MarcinJarek
post 23.08.2004, 16:34:00
Post #17





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.10.2003
Skąd: Warszawa

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


Kod powinien wygladac tak:

  1. <?php
  2. if ($haslo != $haslo2) {
  3.  
  4. mysql_connect ('localhost', 'root', 'krasnal') or die(mysql_error());
  5.  
  6.     mysql_select_db(&#092;"php\");
  7.  
  8.     $zapytanie = &#092;"SELECT login FROM uzytkownicy WHERE login='$login'\";
  9.  
  10.     $wynikZapytania = mysql_query($zapytanie);
  11.  
  12.     if(mysql_num_rows($wynikZapytania) > 0) {
  13.         echo &#092;"Ten login jest juz zajety!\";
  14.     }
  15.     else
  16.     {
  17. $data = date('Y-m-d G:i:s');
  18.         $zapytanie =&#092;"INSERT INTO uzytkownicy (`login`, `haslo`, `imie`, 'nazwisko', 'mail', 'typ', 'data') VALUES ('$login' , '$haslo' , '$imie', '$nazwisko', '$mail', 'testowani', '$data')\";
  19.  
  20.         $wynikZapytania = mysql_query($zapytanie);
  21.  
  22.         if (mysql_affected_rows() > 0)
  23.             echo 'uzytkownik zostal dodany';
  24.         else
  25.             echo 'nie zostal dodany';
  26.     }
  27. }
  28. else {
  29.  echo &#092;"Nick zajety\";
  30. }
  31. ?>


Ale i tak nie dziala...pojawia sie: "nie zostal dodany".

pomocy!

Ja mam UNIKALNY :-) bo mam PL, wiec to chyba to winksmiley.jpg

Ten post edytował MarcinJarek 23.08.2004, 16:35:09


--------------------
Go to the top of the page
+Quote Post
Yarecki
post 23.08.2004, 17:22:58
Post #18





Grupa: Zarejestrowani
Postów: 166
Pomógł: 0
Dołączył: 1.04.2004
Skąd: Gdynia

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


Czemu nie użyjesz or die( mysql_error() ) przy mysql_query ?


--------------------
Nigdy nie kłóć się z głupim, ludzie mogą nie dostrzec różnicy.
Go to the top of the page
+Quote Post
Synaps
post 23.08.2004, 17:42:46
Post #19





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 1.12.2003
Skąd: Gdynia

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


Rozwiązanie jest raczej proste moim zdaniem , zapytanie typu insert powinno wyglądać tak

  1. INSERT INTO uzytkownicy (login, haslo, imie, nazwisko, mail, typ, DATA) VALUES ('$login' , '$haslo' , '$imie', '$nazwisko', '$mail', 'testowani', '$data')


nazwy pól nie powinny być w '' .


--------------------
MySQL said:

You have an error in your SQL syntax near ' `sygnatura` VARCHAR, NOT NULL
Go to the top of the page
+Quote Post
MarcinJarek
post 23.08.2004, 22:28:17
Post #20





Grupa: Zarejestrowani
Postów: 104
Pomógł: 0
Dołączył: 26.10.2003
Skąd: Warszawa

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


Zapisuje, ale haslo podane zapisuje w polu LOGIN a hasla wogule nie wpisuje...


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:08