Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z połączeniem do bazy sqlite, Serwer nie może połączyć się do pliku z bazą
divx_divine
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 30.10.2011

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


Witam. Chciałbym mieć możliwość ingerowania w plik serwera sqlite na pewnym serwerze gry. Serwer pewnej gry jest oparty na języku squirrel. Do zaimplementowania bazy używamy modułu sq_lite. Rozszerzenie pliku z serwerem to .sqlite. I teraz nie wiem jak się połączyć. Próbowałem różnych metod, np. sqlite_open. Jednak połączenie zakończone niepowodzeniem, oto komunikat:

  1. Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database in \sq\index.php on line 3
  2. file is encrypted or is not a database


Bardzo mi zależy na możliwość w ingerowanie bazy przez stronę internetową i nie wiem jak na to wszystko poradzić. Niestety w grę nie wchodzi mysql.

@edit: podrzucam kod, którego teraz użyłem do połączenia z bazą:
  1. <?php
  2.  
  3. if ($db = sqlite_open('serwer.sqlite', 0666, $sqliteerror)) {
  4.  
  5. $result = sqlite_query($db,'select bar from foo');
  6. var_dump(sqlite_fetch_array($result));
  7. } else {
  8. die ($sqliteerror);
  9. }
  10. ?>
  11. ?>


@edit2:

Podrzucam jeszcze przykładową bazę, może komuś się uda połączyć.
Serwer.sqlite

Ten post edytował divx_divine 18.05.2012, 20:31:23
Go to the top of the page
+Quote Post
BaN
post
Post #2





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


To jest baza w formacie SQLite 3, musisz używać metod klasy SQLite3
Go to the top of the page
+Quote Post
divx_divine
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 30.10.2011

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


Okej, dzięki wielkie za pomoc. Teraz mogę przeglądać dane z bazy.
Tylko teraz pojawia się pewien problem. Chciałem wyciągnąć z bazy odpowiednie rekordy, wykryte przez zapytanie, bez nazw pól, oraz "Array (Dane)"
Np korzystając z SQLite3:: query mam taki efekt:

Kod, który użyłem
  1. <?php
  2. $db = new SQLite3('serwer.sqlite');
  3.  
  4.  
  5. $results = $db->query("SELECT Name,Level FROM stats Where Name='gracz'");
  6. while ($row = $results->fetchArray()) {
  7. var_dump($row);
  8. }
  9. $db->close();
  10. ?>


Efekt:
  1. array(4) { [0]=> string(5) "gracz" ["Name"]=> string(5) "gracz" [1]=> int(9) ["Level"]=> int(9) }



Efekt, jaki chciałbym uzyskać:
  1. gracz 1


Albo ewentualnie, żeby każde różne pole było inną zmienną, które potem mógłbym swobodnie formatować np.

  1. <?php
  2. //jakiś kod, łączący się z bazą, wykonujący zapytanie, tworzący z każdego pola zmienną
  3.  
  4. $name=["Wynik1pola"];
  5. $level=["Wynik2pola"];
  6.  
  7. echo "<b>Nick:</b> " . $name . "<br /> <b>Level:</b>" . $level;
  8. ?>



Czy dałoby się uzyskać taki efekt?
Go to the top of the page
+Quote Post
Quantum
post
Post #4





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


  1. echo $row['name'], ' ', $row['level'];

wstaw do pętli, a jakbyś chciał zrobić drugim sposobem to przed pętlą:
  1. $players = array();

w pętli:
  1. array_push($players, array($row['name'], $row['level']));

i możesz sobie swobodnie użyć w kodzie:
  1. ...
  2.  
  3. foreach ($players as $player) {
  4. echo $player[0], ' ', $player[1], '<br/>';
  5. }

Go to the top of the page
+Quote Post
divx_divine
post
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 30.10.2011

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


Cytat(Quantum @ 19.05.2012, 20:13:36 ) *
...wstaw do pętli, a jakbyś chciał zrobić drugim sposobem to przed pętlą...


O takie coś właśnie mi chodziło. Dokładnie taki efekt chciałem uzyskać. Quantum, gdybyś mógł jeszcze zerknąć, czy wszystko dobrze wstawiłem, tak jak zalecałeś, bo nie jestem pewny czy dobrze załapałem. Jestem początkujący w php. (IMG:style_emoticons/default/smile.gif)

  1. <?php
  2. $db = new SQLite3('serwer.sqlite');
  3.  
  4.  
  5. echo "<hr /><br /><strong>Zobacz: </strong><br/>";
  6.  
  7.  
  8. $Names = array();
  9. $results = $db->query("SELECT ID,Name,Cost,Owner FROM cars WHERE Owner='Brak'");
  10. while ($row = $results->fetchArray()) {
  11. array_push($Names, array($row['ID'], $row['Name'], $row['Cost']));;
  12. }
  13.  
  14. foreach ($Names as $Name) {
  15. echo '<b>ID: </b>', $Name[0], ' ', ' <b>Model: </b>', $Name[1], ' <b>Cena: </b>', $Name[2], '$ <br/>';
  16. }
  17.  
  18. echo "<hr>";
  19.  
  20. $db->close();
  21. ?>
Go to the top of the page
+Quote Post
BaN
post
Post #6





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


Moim zdaniem nie ma sensu robić dwóch pętli, po drugie nie ma sensu aby baza zwracała wyniki zapytania z indeksami numerycznymi i tekstowymi, zatem
  1. $db = new SQLite3('serwer.sqlite');
  2. echo "<hr /><br /><strong>Zobacz: </strong><br/>";
  3. $results = $db->query("SELECT ID,Name,Cost,Owner FROM cars WHERE Owner='Brak'");
  4. while ($row = $results->fetchArray(SQLITE3_ASSOC)) {
  5. echo '<b>ID: </b>', $row['ID'], ' ', ' <b>Model: </b>', $row['Name'], ' <b>Cena: </b>', $row['Cost'], '$ <br/>';
  6. }
  7. $db->close();
  8. echo "<hr />";
Go to the top of the page
+Quote Post
divx_divine
post
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 30.10.2011

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


Okej, będe korzystać z Twojego zapytania, Ban. Wielkie dzięki za pomoc. Mam jeszcze jedno pytanie, w pliku, którym wykonuję zapytanie i wyświtlam je w przeglądarce, nie wyświetla polskich znaków, mimo tego, że przekonwertowałem plik na UTF-8. Nie wie ktoś, gdzie mógłby leżeć problem?
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 16.10.2025 - 19:39