Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Dynamicznie aktulizowana tablica i zapis do bazy
Forum PHP.pl > Forum > Przedszkole
damekr
Witam,
Jako iż w temacie php i mysql raczkuje potrzebuje Waszej pomocy. Mam problem jak zapisać do bazy danych określone dane. Przykładowo mam kod:

  1. <?php
  2. $username = 'user';
  3. $password = 'pass';
  4. $url = 'http://192.168.1.15/Status_Wireless.live.asp';
  5.  
  6. 'http' => array(
  7. 'header' => "Authorization: Basic " . base64_encode("$username:$password")
  8. )
  9. ));
  10. $data = file_get_contents($url, true, $context); //pobieranie zawartości strony
  11. echo $data."<br/>"."<br/>"; //wyświetlanie wszystkiego
  12.  
  13. $data_sort=strstr($data, "active_wireless"); //obcinanie wszystkiego przed active_wireless
  14. $data1=substr($data_sort,18);//obcinanie active wireless
  15.  
  16.  
  17.  
  18. $data_sort1=explode("','", $data1);
  19. print_r($data_sort1);echo '<pre/>'; //wyswietlanie całego info
  20. $ilosc_tab=count($data_sort1); //zliczanie ilości danych w tablicy
  21.  
  22.  
  23. $petla=$ilosc_tab/9; //ilosc przejść pętli w zależności od ilości danych
  24.  
  25.  
  26. $mac_start=0; //początkowy element tablicy mac wszystkich elementów
  27. $uptime_start=2; //początkowy element tablicy uptime wszystkich elementów
  28.  
  29.  
  30. if ($petla>0)
  31. {
  32. for ($m=0; $m<$petla; $m++)
  33. {
  34. $mac[$m]=$data_sort1[$mac_start]."<br/>";
  35. $mac_start+=9; //inkrementacja co 9 elementów
  36. echo $t."<br/>";
  37. echo $mac[$m];
  38. //print_r ($mac);
  39. $uptime[$m]=$data_sort1[$uptime_start]."<br/>";
  40. $uptime_start+=9;
  41. echo $uptime[$m];
  42.  
  43.  
  44.  
  45. }
  46.  
  47.  
  48. }
  49.  
  50. else
  51. {
  52. echo "Brak podłączonych użytkowników"."<br/>";
  53. }
  54.  
  55.  
  56.  
  57.  
  58. print_r ($mac);
  59. print_r ($uptime);
  60.  
  61. ?>


Pobiera on z lokalnego routera tylko takie dane jak mac i uptime. Zależy mi aby do bazy danych trafiały takie dane jak:
mac - jeśli nie istnieje w bazie, jeśli istnieje to aktualizuj tylko uptime
uptime - aktualizowane na bieżąco

W tym momencie kod po aktualizacji wyświetla mi mac + uptime aktywnego użytkownika. Chciałbym żeby czas podłączenia danego użytkownika trafiał do bazy danych, najlepiej z rozbiciem w jakich dniach ile. Myślę że wprawionemu developerowi nie zajmie długo podpowiedzenie mi jak to zrobić. Mam pewien pomysł polegający na:
-dynamiczne sprawdzanie czy w bazie istnieje mac ( istnieje - dodaj tylko uptime ); (nie istnieje - dodaj mac i uptime)
Z tym że jak to zrobić w kodzie- pętli.

Skrypt chciałbym jakoś zapętlić żeby pobierał dane z routera co 5s np. i aktualizował bazę danych.

Pozdrawiam serdecznie i dziękuje za odpowiedzi.
ilidir
jak zapętlisz skrypt a nastepnie na przykład serwer przestanie działać to będziesz musiał ponownie uruchomić skrypt ręcznie. Jest takie coś jak CRON na serwerach który daje możliwość uruchomienie danego na przykład skryptu co określoną jednostkę czasu aleniestety najmniejszy czas to 1 minuta.

a co do twojego pytania:
1. Musisz utworzyć bazę danych z użytkownikiem i hasłem
2. Utworzyć tabele i kolumny na przykład ID, MAC, UPTIME
2. Podłączyć się do serwera z bazą danych @mysql_connect
3. Podłączyć się do bazy danych @mysql_select_db
4.Wykonać zapytanie mysql_query("SELECT ID FROM <tabela> WHERE MAC = '$mac'");
5.Sprawdzamy czy mac istnieje
if(mysql_num_rows($ID)==0){
WYKONUJESZ TUTAJ INSERTA DO BAZY DANYCH
}
else {
TUTAJ WYKONUJESZ KOD UPDATE JEŻELI MACISTNIEJE
}

Podane powyżej rozwiązanie od punktu 4 wstawiasz w swoją pętle.
damekr
Witam, dziękuje bardzo za odpowiedź jednak chyba coś źle robię ponieważ dodałem kod:
  1. $ID = mysql_query("SELECT ID FROM users WHERE mac='$mac[$m]'");
  2. echo $ID."<br/>";
  3. if (mysql_num_rows($ID)==0)
  4. {
  5. echo "nie ma maca"."<br/>";
  6. }
  7. else
  8. {
  9. echo "jest mac"."<br/>";
  10. }


Oczywiście pomijam połączenie do bazy i wybieranie bo to działa. Czy nie powinno być tak jak zapisałem powyżej?

Pozdrawiam


/edit

Próbuje na wszystkie strony i nie działa. Poniżej kod do jakiego udało mi się dojść:
  1. $mc=$mac[0];
  2. $sql= mysql_query("SELECT * FROM users WHERE mac='".$mc."'");
  3. echo "$mc.";
  4. if (mysql_num_rows($sql) > 0)
  5. {
  6. echo "Jest taki wynik";
  7. }
  8. else
  9. {
  10. echo "Nie ma takeigo wyniku";
  11. }


Dodam że echo $mc wyświetla mac znajdujący się w bazie.
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.