从XML文件中的2个数据库导出数据

时间:2016-02-09 09:48:15

标签: php html xml database export

首先,我会为我糟糕的英语道歉,非常糟糕。

我今天来找你,试图找到解决问题的方法。我解释一下:

对于我的学校项目,我需要在我的公司做一个PC清单,并将其与客户表相关联。为此我有两个数据库,一个用于库存,另一个用于客户信息(名字,姓氏和公司名称)。

所以数据库上的连接很好但是我在从XML文件中的两个数据库导出我的数据时遇到了一些麻烦。我在PHP和其他互联网语言中的表现非常糟糕,因为除了现在我的项目,我从未练过它。

所以代码是:

<?php
include 'connection.php';

$client = $_POST['MagicCash'];
$pc = $_POST['fusioninventory'];

$nom = $bdd->query("SELECT nom FROM client WHERE IDClient= '.$client.'");
$prenom = $bdd->query("SELECT prenom FROM client WHERE IDClient= '.$client.'");
$societe= $bdd->query("SELECT societe FROM client WHERE IDClient='.$client.");
$CPU = $bdd->query("SELECT designation FROM glpi_deviceprocessors WHERE id= '.$pc.'");
$Archs = $bdd->query("SELECT name FROM glpi_plugin_fusioninventory_computerarchs WHERE id= '.$pc.'");
$DD = $bdd ->query("SELECT name, totalsize, freesize FROM glpi_computerdisks WHERE id= '.$pc.'");
$model = $bdd ->query("SELECT name FROM glpi_computermodels WHERE id= '.$pc.'");
$licence = $bdd->query("SELECT os_license_number, os_licenseid FROM glpi_computers WHERE id='.$pc.'");
$GPU = $bdd ->query("SELECT designation FROM glpi_devicegraphiccards WHERE id='.$pc.'");
$DD2 = $bdd ->query("SELECT designation FROM glpi_deviceharddrives WHERE id='.$pc.'");
$RAM = $bdd->query("SELECT designation, frequence FROM glpi_devicememories WHERE id='.$pc.'");
$OS = $bdd->query("SELECT name FROM glpi_operatingsystems WHERE id='.$pc.'");
$SP = $bdd->query("SELECT name FROM glpi_operatingsystemservicepacks WHERE id='.$pc.'");

/* create a dom document with encoding utf8 */
$domtree = new DOMDocument('1.0', 'UTF-8');

/* create the root element of the xml tree */
$xmlRoot = $domtree->createElement("xml");

/* append it to the document created */
$xmlRoot = $domtree->appendChild($xmlRoot);

$currentTrack = $domtree->createElement("inventaire");
$currentTrack = $xmlRoot->appendChild($currentTrack);

/* you should enclose the following two lines in a cicle */
$currentTrack->appendChild($domtree->createElement('nom',$nom));
$currentTrack->appendChild($domtree->createElement('prenom',$prenom));
$currentTrack->appendChild($domtree->createElement('societe',$societe));
$currentTrack->appendChild($domtree->createElement('designation',$CPU));
$currentTrack->appendChild($domtree->createElement('name',$Archs));
$currentTrack->appendChild($domtree->createElement('name, totalsize, freesize',$DD));
$currentTrack->appendChild($domtree->createElement('name',$model));
$currentTrack->appendChild($domtree->createElement('os_license_number, os_licenseid',$licence));
$currentTrack->appendChild($domtree->createElement('designation',$GPU));
$currentTrack->appendChild($domtree->createElement('designation',$DD2));
$currentTrack->appendChild($domtree->createElement('designation',$RAM));
$currentTrack->appendChild($domtree->createElement('name',$OS));
$currentTrack->appendChild($domtree->createElement('name',$SP));

/* get the xml printed */
echo $domtree->saveXML();
?>

我有这个错误:

 Warning: DOMDocument::createElement() expects parameter 2 to be string, object given in C:\xampp\htdocs\xmlv3.php on line 34

Catchable fatal error: Argument 1 passed to DOMNode::appendChild() must be an instance of DOMNode, null given in C:\xampp\htdocs\xmlv3.php on line 34

我告诉你我的HTML代码:     

include 'connection.php';

echo"<br>";

?>
<!DOCTYPE html> 
<html lang="en-AU" class="subpage"> 

<head>
    <meta charset="utf-8" />
    <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.3.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <title>Projet</title>
</head>

<body>
    <form action="xmlv3.php" method="post">
        <label for="MagicCash">Client :</label>
            <select name="MagicCash" id="mc"> 
                <?php 
                    $id = array();
                    global $bdd;
                    $rep = $bdd->query("SELECT * FROM client ORDER BY 'IDClient' DESC");
                    while ($tab = $rep->fetch()){
                        echo '<option name="client" value="'.$tab['IDClient'].'">'.$tab['IDClient'].' - '.$tab['Nom'].' '.$tab['Prenom'].'</option>';
                    }
                ?>
            </select>
        <label for="fusioninventory">PC :</label>
            <select name="fusioninventory" id="fi">
                <?php 
                    $id = array();
                    global $bdd1;
                    $rep = $bdd1->query("SELECT id,designation,frequence FROM glpi_deviceprocessors ORDER BY 'id' DESC");
                    while ($tab1 = $rep->fetch()){

                        echo '<option name="pc" value="'.$tab1['id'].'">'.$tab1['id'].' - '.$tab1['designation'].' '.$tab1['frequence'].'</option>';
                    }
                ?>
            </select>
            <input type="submit" value="Valider">
    </form>
</body>

Thx为你提供未来的帮助。

1 个答案:

答案 0 :(得分:0)

如错误消息所示,第34行对应于:

$currentTrack->appendChild($domtree->createElement('nom',$nom));

从这一行开始,您将从数据库中读取的值传递给createElement函数。此函数需要您传递的字符串和从数据库读取的对象。您可以通过执行以下任何操作来解决此问题:

$currentTrack->appendChild($domtree->createElement('nom',(array)$nom['nom']));
or 
$currentTrack->appendChild($domtree->createElement('nom',$nom->nom));

这适用于第34行以后的所有陈述

或者您可以维护第34行的代码并在查询中执行类似的操作:

 $nom = $bdd->query("SELECT nom FROM client WHERE IDClient= '.$client.'")->fetchColumn();
$prenom = $bdd->query("SELECT prenom FROM client WHERE IDClient= '.$client.'")->fetchColumn();
$societe= $bdd->query("SELECT societe FROM client WHERE IDClient='.$client.")->fetchColumn();
$CPU = $bdd->query("SELECT designation FROM glpi_deviceprocessors WHERE id= '.$pc.'")->fetchColumn();
$Archs = $bdd->query("SELECT name FROM glpi_plugin_fusioninventory_computerarchs WHERE id= '.$pc.'")->fetchColumn();
$DD = $bdd ->query("SELECT name, totalsize FROM glpi_computerdisks WHERE id= '.$pc.'")->fetchColumn();
$model = $bdd ->query("SELECT name FROM glpi_computermodels WHERE id= '.$pc.'")->fetchColumn();
$licence = $bdd->query("SELECT os_license_number FROM glpi_computers WHERE id='.$pc.'")->fetchColumn();
$GPU = $bdd ->query("SELECT designation FROM glpi_devicegraphiccards WHERE id='.$pc.'")->fetchColumn();
$DD2 = $bdd ->query("SELECT designation FROM glpi_deviceharddrives WHERE id='.$pc.'")->fetchColumn();
$RAM = $bdd->query("SELECT designation, frequence FROM glpi_devicememories WHERE id='.$pc.'")->fetchColumn();
$OS = $bdd->query("SELECT name FROM glpi_operatingsystems WHERE id='.$pc.'")->fetchColumn();
$SP = $bdd->query("SELECT name FROM glpi_operatingsystemservicepacks WHERE id='.$pc.'")->fetchColumn();

这将返回一个字符串,因此在创建dom

时不必再转换它