Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Jezeli istnieje rekord to nie dodaje.
Forum PHP.pl > Forum > Przedszkole
flaq1991
Witam mógłby ktoś mi pomóc ? potrzebuję przerobić ten skrypt tak żeby sprawdzał czy rekord o podanym loginie istnieje jeżeli tak to go nie doda oto skrypt :

  1. <?php
  2. $con = mysql_connect("host","login","haslo");
  3. if (!$con)
  4. {
  5. die('Nie moge polaczyc: ' . mysql_error());
  6. }
  7. mysql_select_db("baza", $con);
  8. $sql="INSERT INTO uzytkownicy (Login, Haslo)
  9. VALUES
  10. ('$_GET[Login]','$_GET[Haslo]')";
  11. if (!mysql_query($sql,$con))
  12. {
  13. die('Error: ' . mysql_error());
  14. }
  15. echo "Udalo sie !";
  16. ?>
sajegib
google ma dla ciebie milion gotowców, sposobów jest wieeeele, możesz np przeprojektowac tabele i zrobić konkretne pole UNIQUE ; )
flaq1991
Szukałem na google ale nic konkretnego znaleźć nie mogłem dlatego napisałem tutaj biggrin.gif
kubek3898
  1. $result = mysql_query("SELECT * FROM uzytkownicy WHERE login='$_GET['login']'");
  2.  
  3. if(mysql_num_rows($result)!=0) echo 'Już istnieje konto z takim loginem!';
flaq1991
Nie idzie wywalają jakieś syntaxy nie wiem co jest ;/

  1. <?php
  2. $con = mysql_connect("","","");
  3. if (!$con)
  4. {
  5. die('Nie moge polaczyc: ' . mysql_error());
  6. }
  7. mysql_select_db("", $con);
  8.  
  9.  
  10. $query = ("SELECT * FROM uzytkownicy WHERE login='$_GET['login']'");
  11. $result = mysql_query($query) or die(mysql_error());
  12.  
  13. if (mysql_num_rows($result) )
  14. {
  15. print 'Jest już w tabeli';
  16. }
  17. else
  18. {
  19. print 'Pomyslnie dodano';
  20. }
  21.  
  22. $sql="INSERT INTO uzytkownicy (Login, Haslo)
  23. VALUES
  24. ('$_GET[Login]','$_GET[Haslo]')";
  25.  
  26. if (!mysql_query($sql,$con))
  27. {
  28. die('Error: ' . mysql_error());
  29. }
  30. echo "Udalo sie !";
  31.  
  32. ?>
Posio
  1. $query = "SELECT * FROM uzytkownicy WHERE login = '".$_GET['login']."'";


Jak wywala SYNTAXY to je czytaj i naucz się rozumieć to co wyskakuje... robisz niepotrzebny SPAM.
flaq1991
Zrobiłem kod w ten sposób i pisze że dodano do bazy lecz nic nie dodaje wiecie dlaczego ? sad.gif

  1. <?php
  2. $con = mysql_connect("","","");
  3. if (!$con)
  4. {
  5. die('Nie moge polaczyc: ' . mysql_error());
  6. }
  7. mysql_select_db("", $con);
  8.  
  9.  
  10. $query = "SELECT * FROM uzytkownicy WHERE login = '".$_GET['login']."'";
  11. $result = mysql_query($query) or die(mysql_error());
  12.  
  13. if (mysql_num_rows($result) )
  14. {
  15. print 'Jest już w tabeli';
  16. }
  17. else
  18. {
  19. $query ="INSERT INTO uzytkownicy (Login, Haslo)
  20. VALUES
  21. ('$_GET[Login]','$_GET[Haslo]')";
  22. print 'Pomyslnie dodano';
  23. }
  24.  
  25. ?>
_Borys_
Przecież wyżej tobie pisał jak się wstawia
  1. $query ="INSERT INTO uzytkownicy (Login, Haslo) VALUES ('{$_GET['Login']}','{$_GET['Haslo']}')";
flaq1991
Dobrze poprawiłem to lecz nic nie dodaje jak powinno pisze tylko ze pomyślnie ; o

  1. <?php
  2. $con = mysql_connect("","","");
  3. if (!$con)
  4. {
  5. die('Nie moge polaczyc: ' . mysql_error());
  6. }
  7. mysql_select_db("", $con);
  8. $query = "SELECT * FROM uzytkownicy WHERE login = '".$_GET['login']."'";
  9. $result = mysql_query($query) or die(mysql_error());
  10. if (mysql_num_rows($result) )
  11. {
  12. print 'Jest już w tabeli';
  13. }
  14. else
  15. {
  16. $query ="INSERT INTO uzytkownicy (Login, Haslo) VALUES ({$_GET['Login']},{$_GET['Haslo']})";
  17. print 'Pomyslnie dodano';
  18. }
  19.  
  20. ?>
kamil_lk
bo nie wykonujesz tego zapytania.. użyj funkcji mysql_query przy zapytaniu
  1. $query =mysql_query("INSERT INTO uzytkownicy (Login, Haslo) VALUES ({$_GET['Login']},{$_GET['Haslo']})");
  2. if($query) print 'Pomyślnie dodano';
  3. else print 'Wystąpił błąd';
flaq1991
kamil_lk pisze że wystąpił błąd nie wiem dlaczego ...
kamil_lk
To dopisz po zapytaniu or die(mysql_error()) i będziesz wiedział dlaczego.

  1. $query =mysql_query("INSERT INTO uzytkownicy (Login, Haslo) VALUES ({$_GET['Login']},{$_GET['Haslo']})") or die(mysql_error());
flaq1991
kod wygląda tak :

  1. <?php
  2. $con = mysql_connect("","","");
  3. if (!$con)
  4. {
  5. die('Nie moge polaczyc: ' . mysql_error());
  6. }
  7. mysql_select_db("", $con);
  8. $query = "SELECT * FROM uzytkownicy WHERE login = '".$_GET['login']."'";
  9. $result = mysql_query($query) or die(mysql_error());
  10. if (mysql_num_rows($result) )
  11. {
  12. print 'Rekord już istnieje !....';
  13. }
  14. else
  15. {
  16. $query =mysql_query("INSERT INTO uzytkownicy (Login, Haslo) VALUES ({$_GET['Login']},{$_GET['Haslo']})") or die(mysql_error());
  17. if($query) print 'Pomyślnie dodano';
  18. else print 'Wystapil error';
  19. }
  20. ?>


a taki error wywaliło
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
kamil_lk
Cytat(Posio @ 24.02.2013, 22:53:34 ) *
Jak wywala SYNTAXY to je czytaj i naucz się rozumieć to co wyskakuje... robisz niepotrzebny SPAM.
flaq1991
Pisze że mam błąd w pierwszej lini tylko gdzie może tam być błąd skoro jest tam <?php ? ;o
kamil_lk
Nie. Jest błąd składniowy zapytania.

  1. $query = mysql_query("INSERT INTO `uzytkownicy`(`Login`, `Haslo`) VALUES('".$_GET['Login']."', '".$_GET['Haslo']."'") or die(mysql_error());
flaq1991
jednak nie, nadal występuje ten sam error
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Posio
a może warto respektować wielkość liter zmiennych / tablic - zawartości ? <facepalm>
_Borys_
Nawiasu brakuje przed or w poście @kamil_lk. Swój poprzedni post też poprawiłem, teraz powinno działać.
flaq1991
Zrobiłem dokładnie tak :

$query =mysql_query("INSERT INTO uzytkownicy (Login, Haslo) VALUES ({$_GET['Login']},{$_GET['Haslo']})") or die(mysql_error());
I jest nadal to samo nie wiem już co jest ...
_Borys_
Sprawdzałeś czy napewno z dużych liter Haslo Login zwraca $_GET, wyświetl sobie print_r($_GET); i zobacz czy nie ma z małych liter i czy w ogóle zwraca coś, tak samo czy w bazie są duże litery sprawdź.
Popraw też zapytanie, mówiłem że poprawiłem w swoim pierwszym poście, muszą być apostrofy przed i za{}
flaq1991
Nie wiem już sam już mi sie spać chce od 1h sie męczę z tym... poszukam jakiegoś innego skryptu na google ;/

Jednak nic nie mogę znaleźć możecie mi pomóc ? :/
_Borys_
Musi działać, pokaż co zwraca tablica $_GET po wypełnieniu formularza
print_r($_GET);
flaq1991
Wyskakuje takie coś:

Array ( [Login] => test1 [Haslo] => test2 )

i dodam jeszcze raz kod źródłowy skryptu :

  1. <?php
  2. $con = mysql_connect("","","");
  3. if (!$con)
  4. {
  5. die('Nie moge polaczyc: ' . mysql_error());
  6. }
  7. mysql_select_db("", $con);
  8.  
  9. $query1 = "SELECT * FROM uzytkownicy WHERE Login = '".$_GET['Login']."'";
  10. $result = mysql_query($query1) or die(mysql_error());
  11. if (mysql_num_rows($result) )
  12. {
  13. print 'Rekord już istnieje !....';
  14. }
  15. else
  16. {
  17. $query =mysql_query("INSERT INTO uzytkownicy (Login, Haslo) VALUES ('{$_GET['Login']}','{$_GET['Haslo']}'");
  18. if($query) print 'Pomyślnie dodano';
  19. else
  20. print 'Wystapil error';
  21. print_r($_GET);
  22. }
  23. ?>
_Borys_
Nawias
sorry moja wina
  1. $query =mysql_query("INSERT INTO uzytkownicy (Login, Haslo) VALUES ('{$_GET['Login']}','{$_GET['Haslo']}')");


ale lepiej filtrować wyniki wprowadzana z formularza
przykład
  1. $Login = mysql_real_escape_string($_GET['Login']);
  2. $Haslo = mysql_real_escape_string($_GET['Haslo']);
  3. $query =mysql_query("INSERT INTO uzytkownicy (Login, Haslo) VALUES ($Login,$Haslo)");

Pozatym hasło w bazie powinno być hashowane.
flaq1991
Okej wszystko działa dzięki ci exclamation.gif smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.