Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Warunek w tablicy row w przypadku wykrycia duplikatów
-danieljoz-
post
Post #1





Goście







Witam napisałem skrypt w php który ma pobierac dane z jednych tabel a nastepnie zapisywac je w innej tabeli przykład skryptu wygląda tak
  1. #!/usr/bin/php-cgi
  2. <?php
  3. $con = mysql_connect("localhost","root","123qwe");
  4.  
  5. mysql_select_db("lms", $con);
  6. mysql_query("TRUNCATE TABLE radcheck");
  7. mysql_query("TRUNCATE TABLE radreply");
  8.  
  9. $result = mysql_query("select n.id AS nid, n.name, inet_ntoa(n.ipaddr) AS ipaddr, n.passwd, n.chkmac, m.mac, c.id AS cid
  10. FROM nodes n
  11. JOIN macs m ON (m.nodeid = n.id)
  12. JOIN customers c ON (c.id = n.ownerid)");
  13.  
  14. while ($row = mysql_fetch_array($result)) {
  15.  
  16.  
  17. if ($row["mac"] == "00:00:00:00:00:00")
  18. {
  19. mysql_query("INSERT INTO radcheck VALUES (NULL, \"$row[name]$row[cid]\", \"Password\", \"==\", \"$row[passwd]\")");
  20. mysql_query("INSERT INTO radcheck VALUES (NULL, \"$row[name]$row[cid]\", \"NAS-IP-Address\", \":=\", \"192.168.0.1\")");
  21. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-IP-Address\", \":=\", \"$row[ipaddr]\")");
  22. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Service-Type\", \":=\", \"Framed-User\")");
  23. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-Protocol\", \":=\", \"PPP\")");
  24. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-IP-Netmask\", \"=\", \"255.255.255.255\")");
  25. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-Routing\", \":=\", \"Broadcast-Listen\")");
  26. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-Compression\", \":=\", \"Van-Jacobsen-TCP-IP\")");
  27. }
  28. elseif ($row["chkmac"] == "0")
  29. {
  30. mysql_query("INSERT INTO radcheck VALUES (NULL, \"$row[name]$row[cid]\", \"Password\", \"==\", \"$row[passwd]\")");
  31. mysql_query("INSERT INTO radcheck VALUES (NULL, \"$row[name]$row[cid]\", \"NAS-IP-Address\", \":=\", \"192.168.0.1\")");
  32. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-IP-Address\", \":=\", \"$row[ipaddr]\")");
  33. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Service-Type\", \":=\", \"Framed-User\")");
  34. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-Protocol\", \":=\", \"PPP\")");
  35. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-IP-Netmask\", \"=\", \"255.255.255.255\")");
  36. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-Routing\", \":=\", \"Broadcast-Listen\")");
  37. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-Compression\", \":=\", \"Van-Jacobsen-TCP-IP\")");
  38. }
  39. else
  40. {
  41. mysql_query("INSERT INTO radcheck VALUES (NULL, \"$row[name]$row[cid]\", \"calling-station-id\", \"==\", \"$row[mac]\")");
  42. mysql_query("INSERT INTO radcheck VALUES (NULL, \"$row[name]$row[cid]\", \"Password\", \"==\", \"$row[passwd]\")");
  43. mysql_query("INSERT INTO radcheck VALUES (NULL, \"$row[name]$row[cid]\", \"NAS-IP-Address\", \":=\", \"192.168.0.1\")");
  44. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-IP-Address\", \":=\", \"$row[ipaddr]\")");
  45. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Service-Type\", \":=\", \"Framed-User\")");
  46. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-Protocol\", \":=\", \"PPP\")");
  47. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-IP-Netmask\", \"=\", \"255.255.255.255\")");
  48. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-Routing\", \":=\", \"Broadcast-Listen\")");
  49. mysql_query("INSERT INTO radreply VALUES (NULL, \"$row[name]$row[cid]\", \"Framed-Compression\", \":=\", \"Van-Jacobsen-TCP-IP\")");
  50. }
  51. }
  52. ?>


Zapytanie zwraca mi taką wartosc:

  1. 1 KLIENT1 192.168.0.2 zrqRKZDtYSYFjDFF 1 00:00:00:00:00:00 1
  2. 2 KLIENT2 192.168.0.104 dino1988 1 00:00:00:00:00:00 2
  3. 6 KLIENT3 192.168.0.8 sEgClbb2CRX6N0p6 1 00:00:00:00:00:00 6
  4. 9 KLIENT4 192.168.0.70 9wXDK6u3BK6cgHOZ 1 00:00:00:00:00:00 9
  5. 11 KLIENT5 192.168.0.13 yE2jt527Gz7C572w 1 00:00:00:00:00:00 11
  6. 17 KLIENT6 192.168.0.19 OYsFBSpWybFWqyHh 1 00:00:00:00:00:00 17
  7. 20 KLIENT7 192.168.0.62 M3iR3tcBI5kXFws4 1 00:00:00:00:00:00 20
  8. 28 KLIENT8 192.168.0.30 4v1W5urDIRJIELie 1 00:00:00:00:00:00 28
  9. 31 KLIENT9 192.168.0.33 jSaz8lELBY8FuFud 1 00:00:00:00:00:00 31
  10. 33 KLIENT10 192.168.0.35 GEOlZdS4eucIYr2j 1 00:00:00:00:00:00 33
  11. 38 KLIENT11 192.168.0.40 garmonbozia123 1 00:00:00:00:00:00 38
  12. 39 KLIENT12 192.168.0.41 u0cBVaRK67VC6DOf 1 00:00:00:00:00:00 39
  13. 48 KLIENT13 192.168.0.157 arEAFljJ8puEDPl3 1 00:00:00:00:00:00 45
  14. 49 KLIENT14 192.168.0.137 dino1988 1 00:00:00:00:00:02 2
  15. 49 KLIENT14 192.168.0.137 dino1988 1 00:00:00:00:00:01 2



Jak widac skrypt wyciąga mi 2x klienta14 róznią się jedynie ostatnim rekordem

więc przy dodaniu do tabeli radcheck klienta14 wyglada to tak:

  1. 27 KLIENT14 Password == dino1988
  2. 28 KLIENT14 NAS-IP-Address := 192.168.0.1
  3. 29 KLIENT14 calling-station-id == 00:00:00:00:00:01
  4. 30 KLIENT14 Password == dino1988



Chciałbym dodac warunek if który sprawdzał by czy wynik w petli row np
$row[name] powtarza się to w tedy kiedy warunek zostanie spelniony ma dodac rekordy do bazy radcheck w nastepujacy sposob:

  1. 27 KLIENT14 Password == dino1988
  2. 28 KLIENT14 NAS-IP-Address := 192.168.0.1
  3. 29 KLIENT14 calling-station-id == 00:00:00:00:00:02
  4. 30 KLIENT14 calling-station-id == 00:00:00:00:00:01
  5. 31 KLIENT14 Password == dino1988


czyli dodac jeden raz wpis tylko z 2x rekordem calling-station-id z 1 i 2 mackiem

a nie jak to teraz jest w taki sposob

  1. 28 KAMIL2 calling-station-id == 00:00:00:00:00:02
  2. 29 KAMIL2 Password == dino1988
  3. 30 KAMIL2 NAS-IP-Address := 192.168.0.1
  4. 31 KAMIL2 calling-station-id == 00:00:00:00:00:01
  5. 32 KAMIL2 Password == dino1988
  6. 33 KAMIL2 NAS-IP-Address := 192.168.0.1


bardzo prosiłbym o wskazówki

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dan-j2
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 31.05.2009

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


Witam w tym problem że to nie zadziała gdyż tabele radcheck i radreply sa przy każdym wywołaniu skryptu czyszczone poprzez truncate a warunek jest wywoływany jeszcze zanim coś do tych tabel zostanie dodane ale mimo wszystko zrobiłem tak jak pisałeś lecz niestety nic to nie dało dalej sa dodawane wpisy tak jak były czyli jak mac sa 2 różne w tabeli dla tego klienta to wpis wyglada tak:

  1. | 281 | KLIENT14 | calling-station-id | == | 00:00:00:00:00:01 |
  2. | 282 | KLIENT14 | Password | == | dino1988 |
  3. | 283 | KLIENT14 | NAS-IP-Address | := | 192.168.0.1 |
  4. | 288 | KLIENT14 | calling-station-id | == | 00:00:00:00:00:03 |
  5. | 289 | KLIENT14 | Password | == | dino1988 |
  6. | 290 | KLIENT14 | NAS-IP-Address | := | 192.168.0.1 |


Zamiast zrobic to tak

  1. | 281 | KLIENT14 | calling-station-id | == | 00:00:00:00:00:01 |
  2. | 288 | KLIENT14 | calling-station-id | == | 00:00:00:00:00:03 |
  3. | 282 | KLIENT14 | Password | == | dino1988 |
  4. | 283 | KLIENT14 | NAS-IP-Address | := | 192.168.0.1 |


Ten post edytował dan-j2 19.02.2013, 00:29:10
Go to the top of the page
+Quote Post

Posty w temacie


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: 17.10.2025 - 17:41