Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » Lukas12p 23:36
 » ReeX 23:35
 » Flo 23:34
 » Kool@ 23:24
 » Shark20 23:21
 » dugi 23:20
 » rulezDC 23:13
 » Qjanusz 23:13
 » Wojtekar 22:48
 » Wedrowiec 22:42
 » Conan Bar 22:41
 » DYD 22:39
 » Pawiano 22:38
 » Wedelek 22:29
 » rbxxxx 22:25
 » stefan_nu 22:22
 » Curro 22:20
 » Holyboy 22:17
 » fiskomp 22:10
 » DJopek 22:10

 Dzisiaj przeczytano
 41100 postów,
 wczoraj 25974

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2024
A R C H I W A L N A   W I A D O M O Ś Ć
    

jak zrobić zapytanie w sql? , Hawaj 24/01/08 20:10
Witam,

Mam oto taki problem:

tabela w oraclu: czas->kolumny to data i godzina.
Jak zrobić zapytanie (przez php) które przy dodaniu daty i godziny (poprzez metodę POST z wykorzystaniem foramularza) porówna dodany tą metodą rekord w tabeli i jeśli data i godzina będzie taka sama jak rekord istniejący wyświetli "taka data i godzina już jest" w przeciwnym przypadku "nie ma tej daty i godziny"

Trochę z tym namieszałem, ale pewnie będziecie wiedzieli o co chodzi.

Grzebałem troszkę o necie, ale nic nie znalazłem na ten temat.
dzięki za odpowiedzi

  1. pytanie, co masz na myśli , bwana 24/01/08 22:36
    1. jak napisać zapytanie w oracle sql?
    2. jak wysłać zapytanie do bazy?

    Najprościej otworzyć kursor:

    select 1 from czas where data=parametr_data and czas=parametr_czas

    i sprawdzić, czy przy fetchowaniu rekordu wystąpi NO_DATA_FOUND.

    W ogóle, żeby połączyć php z oraklem, na maszynie na której działa php muszą być zainstalowane biblioteki klienckie oracle (oci.dll jak sądzę, w każdym razie powinien być to o ile wiem, oracle client), włączona jakaś biblioteka php odpowiedzialna za komunikację z bazami oracle no i skonfigurowany tns_names. Piszę ogólnikowo, bo być może to wszystko wiesz/masz zrobione - jeśli nie, to od tego zacznij.

    "you don't need your smile when I cut
    your throat"

  2. ... , Hawaj 24/01/08 23:09
    Już mi działa jak dam zapytanie co napisałeś:
    $s = oci_parse($nc,"SELECT DATA, GODZINA FROM CZAS WHERE DATA='$data' AND GODZINA='$godzina' ");

    oci_execute($s,OCI_DEFAULT);

    tylko jak teraz dopisać w php:
    żeby- jak będzie taki rekord wyświetliło "rekord istnieje"
    lub "rekord nie istnieje'

    1. ... , vezyr 24/01/08 23:47
      Nie korzystałem nigdy z Oracle, ale może to zadziała:
      $s = oci_parse($nc,"SELECT DATA, GODZINA FROM CZAS WHERE DATA='$data' AND GODZINA='$godzina' ");
      oci_execute($s,OCI_DEFAULT);
      if(oci_num_rows($s) > 0)
      echo "rekord istnieje";
      else
      echo "rekord nie istnieje";

      http://www.vezyr.pl

  3. ... , Hawaj 25/01/08 09:17
    tak niestety nie działa

    1. To może tak? , Conroy 25/01/08 11:08
      [...]
      $results = oci_execute($s,OCI_DEFAULT);
      if(oci_num_rows($results) > 0)
      [..]

      http://flickr.com/photos/myhacien
      da

      1. Re: To może tak? , vezyr 26/01/08 16:32
        To Ci raczej nie zadziała. Cytat z dokumentacji php dla funkcji oci_execute:
        Zwracane wartości
        Zwraca TRUE w przypadku sukcesu, FALSE w przypadku porażki.

        A dla funkcji oci_num_rows:
        int oci_num_rows ( resource $statement )
        Gets the number of rows affected during statement execution.

        Dziwne, że nie działa, bo w przykładach do tej funkcji jest nawet napisany kod, który tworzy (kopiuje) tabelę i wypełnia ją danymi z innymi tabeli, a na koniec wyświetla ilość wierszy nowej tabeli:
        $conn = oci_connect("scott", "tiger");
        $stmt = oci_parse($conn, "create table emp2 as select * from emp");
        oci_execute($stmt);
        echo oci_num_rows($stmt) . " rows inserted.<br />";

        http://www.vezyr.pl

        1. (cd) , vezyr 26/01/08 16:39
          Na boardzie chyba nie ma opcji edycji własnych postów, to dopiszę jeszcze małą uwagę.
          Spróbuj wykonać zapytanie tak:
          oci_execute($s);
          czyli bez tego OCI_DEFAULT. Ew. jeżeli stosujesz OCI_DEFAULT, próbuj wykonywać tuż po nim funkcję oci_commit, czyli tak:
          oci_execute($s,OCI_DEFAULT);
          oci_commit ($connection);
          co jest równoważne wykonaniu oci_execute bez opcji OCI_DEFAULT.

          http://www.vezyr.pl

    
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL