Skocz do zawartości

Prosty skrypt


Daniel Kędzierski

Rekomendowane odpowiedzi

Z uwagi że nie wiedziałem czy dać to do działu Ogłoszenia bowiem bardziej tyczy się to Bazy i PHP.

Szukam kogoś kto napisze prosty skrypt.

Zadania.

BAZA DANYCH w której są 2 TABELE

TABALA A

TABELA B

Skrypt ma za zadanie.

Za pomocą formularza wysyłamy ciąg znaków który.

Sprawdza czy taki ciąg znaków znajduje się w TABELI A, jeżeli się tam znajduje otwiera stronę z komunikatem.

Jeżeli skrypt nie znalazł wpisu w tabeli A, sprawdza czy wpis znajduje się w Tabeli B, jeżeli znajduje się taki wpis skrypt otwiera odpowiednią stronę z komunikatem.

Jeżeli wpisu nie znajdzie w tabeli A i w tabeli B dodaje wpis do tabeli B i informuje użytkownika o poprawnym dodaniu wpisu.

Skrypt nie jest trudny i złożony

Osoby zainteresowane napisaniem proszę o cenę.

pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach


if ( mysql_query("SELECT * FROM tabelaA WHERE `kolumna` LIKE '%".$_GET["query"]."%'"))

{

      print("Jest w A");

}

else

{

          if (mysql_query("SELECT * FROM tabelaB WHERE `kolumna` LIKE '%".$_GET["query"]."%'"))

          {

                     print("jest w B");

           } 

           else

           {

                  mysql_query("INSERT INTO tabelaB (`kolumna`) VALUES ('".$_GET["query"]."');

                  print("dodano do B");

            }

}

Oczywiscie musisz dostosować do strukt.

Odnośnik do komentarza
Udostępnij na innych stronach

Błąd! funkcja mysql_query zwraca TRUE jeśli zapytanie zostało wykonane poprawnie nawet jeśli liczba zwróconych rekordów jest równa ZERO. Co innego jak wykonamy zapytanie dla nieistniejącego pola tabeli wtedy zwróci FALSE.

Aby działało prawidłowo musimy określić ile wyników zwróciło dane zapytanie np. za pomocą funkcji mysq_num_rows($zapytanie)...

if(mysq_num_rows($zapytanie)>0)

{

   //jest poszukiwany ciąg znaków

}

else

{ 

   //brak poszukiwanego ciągu znaków

}

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

dziękuje Wam za pomoc - jeden z kolegów zgłosił się na PM i napisał mi tą wersję MINI skrypu.

Mam sporo takich do napisania więc jeżeli ktoś chętny wykazać swoje możliwości i szuka takiej dorywczej współpracy to proszę info na admin (at) szook.pl

dzięki.

Odnośnik do komentarza
Udostępnij na innych stronach

LIKE '%".$_GET["query"]."%'"

Nie jest to dobre rozwiązanie niestety.

Co będzie jeżeli w bazie będzie wpis "jakiś tekst" i np za pół roku ktoś będzie chciał dodać "mam fajny jakiś tekst" ?

Skrypt nie doda kolejnego rekordu ponieważ taki ciąg znaków już się znajduje. Więc lepiej zrezygnować z LIKE

Odnośnik do komentarza
Udostępnij na innych stronach

Błąd! funkcja mysql_query zwraca TRUE jeśli zapytanie zostało wykonane poprawnie

Przepraszam, oczywiście racja! Moje przeoczenie i uproszczenie. Albo tak, jak zaproponowałeś, albo, jak potrzebne wyniki - if($wynik=mysql_fetch_array($result))

Nie jest to dobre rozwiązanie niestety.

Nie znam specyfiki bazy ani celu, więc to uproszczenie. Za mało informacji do budowy konkretniejszego kodu.

Odnośnik do komentarza
Udostępnij na innych stronach

potrzebne wyniki - if($wynik=mysql_fetch_array($result))
a ten kod, instrukcja warunkowa niby jak ma działać ? Dżyszla zastanów się 5 razy zamin coś napiszesz.

Chciał byś być pomocny, ale przez nieprawidłowe odpowiedzi wprowadzasz w błąd szukających rozwiązań. Przykład z życia ... pyta cię ktoś o drogę a ty mu odpowiadasz choć nie masz pewności, że tam właśnie jest szukana ulica... okazuje się, że nie i szukający traci ileś czasu bo jedzie w niewłaściwym kierunku. Moja rada: jak nie jesteś pewien swoich odpowiedzi to się lepiej wstrzymaj B)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

a ten kod, instrukcja warunkowa niby jak ma działać ?

Jeśli wynik zapytania zwróci zero rekordów, to funkcja mysql_fetch_array zwróci wartość "fałsz". W przeciwnym wypadku będziemy mieli od razu tablicę z pierwszym zwróconym rekordem.

Przepraszam, obiecuję się poprawić na przyszłość. ](*,) :oops:

Cchiałem zrobić w sposób jak najbardziej szablonowy, aby tylko przedstawić idee, ale uprościłem za bardzo.

Co do samego $_GET - wystarczy objąć to w addslashes i powinno być odporne na ataki wprost na zapytanie.

Odnośnik do komentarza
Udostępnij na innych stronach

B)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

zamiast mysql_fetch_array uzyjcie mysql_num_rows. Szybciej sie wykona bo nie konwertuje wyniku na arraya :) czyli to mniej wiecej tak by wygladalo:


function szookaj($szookacz,$tabela='tabelaA')

{

$r=mysql_query('select 1 from '.$tabela.' where `pole` like '%'.$szookacz.'%'  limit 1')

if($r)

if(mysql_num_rows($r)>0)

{

return 1;

}

else

{

return 0;

}

}



$szookacz=addslashes($_GET['szook'])

if(szookaj($szookacz,'tabelaA'))

{

print('jest w A');

}

else

{

if(szookaj($szookacz,'tabelaB'))

{

print('jest w B');

}

else

{

print('nie ma');

}

}

:D

pozycjonuj.png
Odnośnik do komentarza
Udostępnij na innych stronach

Zapewniam kolego, że ta instrukcja zwróci:

Parse error: parse error, unexpected T_ELSE in

A czemu mi nie zwraca?

Zawsze używam takiej składni i zawsze działa. Wycinek choćby jeden:


   $sql_res = mysql_query("SELECT id,status FROM ..... ,$sql1);

   if($sql_row = mysql_fetch_array($sql_res))

   {

   	$loginOK=true;

   	$_SESSION["userid"]=$sql_row["id"];

   	$_SESSION["status"]=$sql_row["status"];

   }

To nie jest porównanie, tylko przypisanie. W 20 miejscach mam taką konstrukcję użytą i wszędzie działa. Jedynym, co jest niezabezpieczone w powyższym kodzie to błąd, który może powstać w wyniku wykonania zapytania sql.

A jeszcze częściej zamist if uzywam while w pętlach. Tam nie ma porównania - tam jest przypisanie!

Przepraszam, faktycznie popełniłem błąd w pierwszym poście, ale nie szukaj go tam, gdzie go nie ma.

Odnośnik do komentarza
Udostępnij na innych stronach

A czemu mi nie zwraca?
Przepraszam Zwracam honory Pierwszy raz jak sprawdzałem wyskakiwał błąd bo sam coś przeoczyłem :D

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Domyślam sie, że o nawias jeden za mało było...

Ok, to jak już wszystko jasne, to chyba możemy zamknać. Raz jeszcze przepraszam za ten błąd i dziękuję za skorygowanie. To było z pośpiechu.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności