0

我正在尝试使用cytoscape基于mysql数据库的网络显示,我有两个表,一个包含名称(device_id),ipSN意味着网络中每个设备的序列号(PK),另一个有关系的信息:origin's SN destiny's SNinterfaceport

我做了这三个查询:

$query = 'SELECT * FROM dispositivos';
$result = mysql_query($query) or die('Consulta fallida: ' . mysql_error());
$numdispositivos = mysql_num_rows($result);

然后我尝试创建一个 for 循环来根据表中的行数创建节点:

 var numerodispositivos = "<?php echo $numdispositivos; ?>";

使用此循环即时绘制节点:

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')
                }
            });

我想用“dispositivos”的主键命名这些节点,但我不知道如何逐行遍历表或如何提取该信息。

有什么帮助吗?

提前致谢

4

1 回答 1

0

您可以尝试使用包含主键的数组,php而不仅仅是行数(您需要指定主键是什么):

$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);

然后可以在 JS 中回显生成的 JSON 数组(i循环中的主键在哪里),允许您运行一个for循环,然后您可以从中提取主键字符串/数字:

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')
        }
    });
}

您可能还想移至mysqliPDO代替mysql.

于 2017-07-17T21:41:37.343 回答