【问题标题】:Export data from 2 database in XML files从 XML 文件中的 2 个数据库中导出数据
【发布时间】:2016-05-19 05:46:23
【问题描述】:

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

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

对于我的学校项目,我需要对我公司的 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>

感谢您在未来的帮助。

【问题讨论】:

    标签: php html xml database export


    【解决方案1】:

    如错误消息所述,第 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 时不必再转换它

    【讨论】:

    • 现在我遇到了另一个错误:注意:未定义的属性:第 34 行的 C:\xampp\htdocs\xmlv3.php 中的 PDOStatement::$nom 注意:未定义的属性:PDOStatement::$prenom in C:\xampp\htdocs\xmlv3.php 在第 35 行 注意:尝试在第 36 行的 C:\xampp\htdocs\xmlv3.php 中获取非对象的属性 第 37,38 和 39 行相同 致命错误:未捕获异常 'DOMException' 在 C:\xampp\htdocs\xmlv3.php:39 中带有消息“无效字符错误”堆栈跟踪:#0 C:\xampp\htdocs\xmlv3.php(39): DOMDocument->createElement('name , totalsize...', '') #1 {main} 在第 39 行的 C:\xampp\htdocs\xmlv3.php 中抛出
    • 您实施了哪些建议的解决方案?
    • $currentTrack->appendChild($domtree->createElement('nom',$nom->nom));对于 34 到 46 之间的所有车道
    • 我建议你使用我最后的建议
    • 致命错误:在 C:\xampp\htdocs\xmlv3.php 第 7 行调用未定义方法 PDOStatement::fetch_object()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    相关资源
    最近更新 更多