Utilizare date extrase din MySQL in PHP

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
snd
Mesaje:9

Utilizare date extrase din MySQL in PHP

Am un tabel, sa zicem de forma:

Cod: Selectaţi tot

ip          port    coloana3    coloana4   etc.
1.0.0.0.0   11111   valoare3    valoare4   etc.
2.0.0.0.0   22222   valoare3    valoare4   etc.
3.0.0.0.0   33333   valoare3    valoare4   etc.
Cum as putea pune intr-un cod php valorile de la coloanele ip / port ex:

Cod: Selectaţi tot

$ip = "";
$port = "";

steell Mesaje:190
Faci un select in tabel si cu while accesezi fiecare rand si preiei din el ce coloane vrei.
Ex:

Cod: Selectaţi tot

$select = "SELECT * FROM `tabel`";
$verifica = mysql_query($select);
if ($verifica) {
  while ($row = mysql_fetch_array($verifica, MYSQL_ASSOC)) {
    echo 'ip: '.$row['ip'].' port: '.$row['port'].'<br />';
  }
} 

snd Mesaje:9
Eu am nevoie ca valorile ip/port sa fie un fel de variabile pt. $ip/$port, nu sa afiseze direct datele din tabel prin "echo", deoarece eu trebuie sa ma folosesc de $ip/$port mai departe in script.
De ex., pot pune o valoare pt. $ip = "92.81.20.10" si pt $port = "27015" si scriptul face ceea ce trebuie.
Eu am o baza de date cu o lista de ip-uri / port-uri, cum as putea sa fac ca $ip/$port sa extraga din db aceste valori ?

MarPlo Mesaje:4343
Salut
Daca vrei sa pastrezi in php, in variabile, o lista cu ip si port-uri asociate extrase din baza de date, poti face asa in bucla WHILE() care parcurge datele extrase.

Cod: Selectaţi tot

$ip_port = array();
while(...) {
  $ip_port[$row['ip']] = $row['port'];
}
$ip_port va contine o lista /array cu: $ip_port['ip-ul'] = 'portul asociat'.
Apoi folosesti acest array cum stii in scriprtul php.
Ex.:

Cod: Selectaţi tot

$ip_port['92.81.20.10'] = 27015;
 

snd Mesaje:9
Pt. inceput multumesc pentru raspunsuri si pt. ca ati corectat titlul...
Acum sa va explic mai indetaliat de ce am eu nevoie, asa poate reusiti sa ma ajutati mai mult.

Asta este baza de date cu lista de ip-uri (in cazul acesta DNS-uri) si port-urile asociate:
i.imgur.com/0klxhOL.png
In baza de date se pot insera date printr-un formular si se afiseaza intr-un tabel:
i.imgur.com/6uWyTpo.png

Cu ajutorul unui script php care poate oferii anumite statistici despre serverul respectiv (ip:port=server), statistici precum playeri, harta etc. vreau sa introduc in tabel, in alte coloane aceste statistici oferite de acel script php. Deci vreau ca pe baza ip-urilor/port-urilor din baza de date de mai sus sa ofere aceste statistici..

Asa arata scriptul php

Cod: Selectaţi tot

<?php
include('include/tsq.class.php'); // fisierul care arata statisticile harta/playeri etc.

$host=AICI AR TREBUI SA EXTRAGA DIN BAZA DE DATE COLOANA "IP"
$port=AICI AR TREBUI SA EXTRAGA DIN BAZA DE DATE COLOANA "PORT"

$_Query=new tsq($host,$port);
$_Template=new tst('template');
$_Query->getchallenge()->getdetails()->getplayers();
$_Template->AddVars(Array(
        "HOST_VALUE"        =>    $host,
        "PORT_VALUE"        =>    $port,
        "HOST_NAME"            =>    'ip',
        "PORT_NAME"            =>    'port',
        "FORM_METHOD"        =>    'get',
        "FORM_ACTION"        =>    $_SERVER['PHP_SELF'],
        "SERVER_PLAYERS"    =>    $_Query->error>0?'Dead':$_Query->details->pplayers.' / '.$_Query->details->tplayers,
        "SERVER_MAP"        =>    $_Query->error>0?'Server down':$_Query->details->map        
        ));
$_Players=$_Query->players;
?>
Apoi in tabel, daca pun

Cod: Selectaţi tot

<?=$_Query->details->map?>
afiseaza mapa, iar

Cod: Selectaţi tot

<?=$_Query->error>0?'Dead':$_Query->details->pplayers.' / '.$_Query->details->tplayers?>
afiseaza playerii

Se pot afisa in alt mod? Poate nu gandesc eu bine ce vreau sa fac .
Cam asta e ideea, daca eu pun niste valori la $host= / $port=
functioneaza, dar eu vreau sa imi afiseze pentru fiecare rand din baza de date...

MarPlo Mesaje:4343
Nu stiu sigur, dar poate merge asa in bucla while() care parcurge datele cu ip/port extrase din baza de date:

Cod: Selectaţi tot

$_Query=new tsq($host,$port);
$_Template=new tst('template');
$_Query->getchallenge()->getdetails()->getplayers();

// Aici comanda sql si codul pt extragere ip/port din baza de date
// parcurge datele extrase
while(...) {
  $host = $row['ip'];
  $port = $row['port'];
  $_Template->AddVars(Array(
    "HOST_VALUE"        =>    $host,
    "PORT_VALUE"        =>    $port,
    "HOST_NAME"            =>    'ip',
    "PORT_NAME"            =>    'port',
    "FORM_METHOD"        =>    'get',
    "FORM_ACTION"        =>    $_SERVER['PHP_SELF'],
    "SERVER_PLAYERS"    =>    $_Query->error>0?'Dead':$_Query->details->pplayers.' / '.$_Query->details->tplayers,
    "SERVER_MAP"        =>    $_Query->error>0?'Server down':$_Query->details->map        
  ));
}
Sau incearca sa adaptezi /combini cu ce stii si ideile care iti vin.

snd Mesaje:9
Am schimbat scriptul ce oferea statistici .. mi se parea ca este prea complicat .. am gasit ceva mai optimizat .. dar tot de acelasi lucru am nevoie.
Am incercat asa

Cod: Selectaţi tot

// Variabilele cu numele coloanelor
$col1 = 'ip';
$col2 = 'port';

// Interogarea SQL folosind si variabile
$interogare = "SELECT `$col1`, `$col2` FROM `server`";
$rezultat = mysql_query($interogare);
if (mysql_errno()) {
    echo "". mysql_errno(). " : ". mysql_error(). "";
} 
if (mysql_num_rows($rezultat) == 0) {
    echo '0 / 0';
}
else {
    while ($rand = mysql_fetch_array($rezultat, MYSQL_ASSOC)) {
 $server_ip = $rand['ip'];
 $server_port = $rand['port'];
    }
} 
Functioneaza, dar problema e ca apare numai primul rand din fiecare coloana din tabel si se repeta ... eu vreau sa le arate pe toate.

MarPlo Mesaje:4343
Codul de mai sus nu afiseaza randurii de tabel, poate problema e in alta parte in cod.
Ar trebui sa ai in bucla while() si codul de afisare, care foloseste $server_port si $server_ip, caci dupa while() aceste variabile au doar valorile din ultimul rand parcurs.

Subiecte similare