I'm trying to display a network using cytoscape based on a mysql database, I've got two tables, one contains the name (device_id), ip and SN that means serial number (PK) of each device in the network, the otherone has relation's info: origin's SN destiny's SN, interface and port.
I've made those three querys:
$query = 'SELECT * FROM dispositivos';
$result = mysql_query($query) or die('Consulta fallida: ' . mysql_error());
$numdispositivos = mysql_num_rows($result);
then I've tried to make a for loop to create the nodes based on the number of rows at the table:
var numerodispositivos = "<?php echo $numdispositivos; ?>";
using this loop im drawing nodes:
for (var i = 0; i < numerodispositivos; i++) {
cy.add({
data: { id: 'node' + i }
}
);
var source = 'node' + i;
cy.add({
data: {
id: 'edge' + i,
source: source,
target: (i % 2 == 0 ? 'a' : 'b')
}
});
I would like to name those nodes with the primary key of "dispositivos" but i don't know how to iterate through the table row by row or how to extract that info.
Any help?
Thanks in advance
You could try using an array that includes your primary key in php instead of just the number of rows (you'll need to specify what your primary key is):
$j=0;
while ($row = mysql_fetch_array($result)) {
$primary_key = $row["PRIMARY_KEY"];
$php_array[$primary_key] = $j;
$j++;
}
$json_from_php = json_encode($php_array);
Th resulting JSON array could then be echo'd in JS (where i is your primary key in the loop), allowing you to run a for loop that you could then pull primary key strings/numbers from:
var jsonArray = "<?php echo $json_from_php; ?>";
for (var i in jsonArray) {
cy.add({
data: { id: i }
}
);
var source = i;
cy.add({
data: {
id: i,
source: source,
target: (jsonArray[i] % 2 == 0 ? 'a' : 'b')
}
});
}
You probably also want to move to mysqli or PDO instead of mysql.