[英]Problems with arrays: Notice: Undefined offset: 0
我得到了这个php代码,我正在尝试将HTML表转换为数组,然后进行mysqli查询,但是我不知道如何
我有此变量$aDataTableDetailHTML[][]
,其中第一个[]
有表中带有td
的tr的数量,第二个[]
有其各自tr
的td
<?php
$htmlContent = file_get_contents("FrmClientes.php");
$DOM = new DOMDocument();
@$DOM->loadHTML($htmlContent);
$Header = $DOM->getElementsByTagName('th');
$Detail = $DOM->getElementsByTagName('td');
//#Get header name of the table
foreach($Header as $NodeHeader)
{
$aDataTableHeaderHTML[] = trim($NodeHeader->textContent);
}
//print_r($aDataTableHeaderHTML); die();
//#Get row data/detail table without header name as key
$i = 0;
$j = 0;
foreach($Detail as $sNodeDetail)
{
$aDataTableDetailHTML[$j][] = trim($sNodeDetail->textContent);
$i = $i + 1;
$j = $i % count($aDataTableHeaderHTML) == 0 ? $j + 1 : $j;
}
//print_r($aDataTableDetailHTML); die();
//print_r($aDataTableDetailHTML[0][3]); die();
//#Get row data/detail table with header name as key and outer array index as row number
for($i = 0; $i < count($aDataTableDetailHTML); $i++)
{
for($j = 0; $j < count($aDataTableHeaderHTML); $j++)
{
$aTempData[$i][$aDataTableHeaderHTML[$j]] = $aDataTableDetailHTML[$i][$j];
}
}
$aDataTableDetailHTML = $aTempData; unset($aTempData);
//print_r($aDataTableDetailHTML); die();
//print_r($aDataTableDetailHTML[0][0]); die();
$CON = mysqli_connect("localhost","root","","BDfactura") or die ("error");
$cadena = "INSERT INTO ItemXVenta (NroVenta, IdArticulo, Cantidad, ValorVenta) VALUES ";
for($k=0; $k < count($aDataTableDetailHTML); $k++)
{
$cadena.="('".null."', '".$aDataTableDetailHTML[$k][0]."', '".$aDataTableDetailHTML[$k][3]."', '".$aDataTableDetailHTML[$k][2]."'),";
}
echo json_encode(array('cadena' => $cadena));
?>
这是HTML代码
<div class="table-responsive" id="adicionados">
<table class="table" id="tabla">
<thead>
<tr>
<th>ID Articulo</th>
<th>Descripcion</th>
<th>Valor Venta</th>
<th>Cantidad</th>
<th>Subtotal</th>
</tr>
</thead>
<tbody>
<tr>
<td id="Sid">ID</td>
<td id="Sdescripcion">Descripcion</td>
<td id="Svlrventa">VLR</td>
<td id="Scantidad">CANTIDAD</td>
<td id="Ssubtotal">TOTAL</td>
</tr>
<tr>
<td id="Sid">dw</td>
<td id="Sdescripcion">ads</td>
<td id="Svlrventa">ads</td>
<td id="Scantidad">da</td>
<td id="Ssubtotal">ad</td>
</tr>
</tbody>
</table>
</div>
这是输出
注意:未定义的偏移量:/ opt / lampp / htdocs / ProyectoClasesPHP中的0,位于第11行,2018年4月4日/ Guardar Factura.php
注意:未定义的偏移量:/ opt / lampp / htdocs / ProyectoClasesPHP 3 in 11/11/2018 / Guardar Factura.php,第48行
注意:未定义偏移量:第48行/ opt / lampp / htdocs / ProyectoClasesPHP 2中的11/2018 / Guardar Factura.php
注意:未定义的偏移量:/ opt / lampp / htdocs / ProyectoClasesPHP中的0,位于第11行,2018年4月4日/ Guardar Factura.php
注意:未定义的偏移量:/ opt / lampp / htdocs / ProyectoClasesPHP 3 in 11/11/2018 / Guardar Factura.php,第48行
注意:未定义偏移量:第48行/ opt / lampp / htdocs / ProyectoClasesPHP 2中的11/2018 / Guardar Factura.php
{"cadena":"INSERT INTO ItemXVenta (NroVenta, IdArticulo, Cantidad, ValorVenta) VALUES ('', '', '', ''),('', '', '', ''),"}
在错误行中检查Isset。 isset()函数用于检查是否设置了变量。如果测试变量包含NULL值,则isset()函数将返回false。
for($i = 0; $i < count($aDataTableDetailHTML); $i++)
{
for($j = 0; $j < count($aDataTableHeaderHTML); $j++)
{
if(isset($aDataTableDetailHTML[$i][$j])){
$aTempData[$i][$aDataTableHeaderHTML[$j]] = $aDataTableDetailHTML[$i][$j];
}
}
}
我解决了这个问题,固定代码如下所示:
<?php
$htmlContent = file_get_contents("FrmClientes.php");
$DOM = new DOMDocument();
@$DOM->loadHTML($htmlContent);
$Header = $DOM->getElementsByTagName('th');
$Detail = $DOM->getElementsByTagName('td');
//#Get header name of the table
foreach($Header as $NodeHeader)
{
$aDataTableHeaderHTML[] = trim($NodeHeader->textContent);
}
//print_r($aDataTableHeaderHTML); die();
//#Get row data/detail table without header name as key
$i = 0;
$j = 0;
foreach($Detail as $sNodeDetail)
{
$aDataTableDetailHTML[$j][] = trim($sNodeDetail->textContent);
$i = $i + 1;
$j = $i % count($aDataTableHeaderHTML) == 0 ? $j + 1 : $j;
}
//print_r($aDataTableDetailHTML); die();
//print_r($aDataTableDetailHTML[0][3]); die();
//#Get row data/detail table with header name as key and outer array index as row number
for($i = 0; $i < count($aDataTableDetailHTML); $i++)
{
for($j = 0; $j < count($aDataTableHeaderHTML); $j++)
{
$aTempData[$i][$aDataTableHeaderHTML[$j]] = $aDataTableDetailHTML[$i][$j];
}
}
$aDataTableDetailHTML = $aTempData; unset($aTempData);
//print_r($aDataTableDetailHTML); die();
//print_r($aDataTableDetailHTML[0][0]); die();
$CON = mysqli_connect("localhost","root","","BDfactura") or die ("error");
$cadena = "INSERT INTO ItemXVenta (NroVenta, IdArticulo, Cantidad, ValorVenta) VALUES ";
for($k=0; $k < count($aDataTableDetailHTML); $k++)
{
$cadena.="('".null."', '".$aDataTableDetailHTML[$k]["ID Articulo"]."', '".$aDataTableDetailHTML[$k]["Cantidad"]."', '".$aDataTableDetailHTML[$k]["Valor Venta"]."'),";
}
echo json_encode(array('cadena' => $cadena));
//var_dump($aDataTableDetailHTML);
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.