晚上好!
我一直在努力自己解决这个问题,但我不能。我知道这很简单,但我找不到它。该脚本有效,但是当它出现时会显示一些问题,你会忽略它们并引入数据并且它可以完美地运行。我想我需要一个if条款,但我不知道如何应用。我是新手,我非常感谢你的帮助。非常感谢!
这是问题所在:
Undefined index : busca in ...
Undefined variable busqueda
Faltal error call to a member function fetch array on a non object in ....
我认为当页面打开时,代码运行为空,没有数据,这就是我接收这些消息的原因。谢谢你的帮助
<head>
<title>SISTEMA DE REGISTRO DE PRODUCTOS CTE</title>
<style type="text/css">
#enviar {
text-align: right;
}
.letrasbody {
font-family: Arial, Helvetica, sans-serif;
color: #FFF;
text-align: center;
}
.letra {
color: #000;
font-family: "Lucida Console", Monaco, monospace;
text-align: center;
}
</style>
</head>
<body>
<?php
session_start();
require "conexiondb.php";
?>
<form name="busquedas" method="POST" action="busqueda.php">
<table width="1142" border="0" align="center">
<tr>
<th colspan="2" bgcolor="#0033FF" scope="col"><p> </p>
<p class="letrasbody">SISTEMA DE CONTRO Y REGISTRO DE PRODUCTOS Y SERVICIOS</p>
<p class="letrasbody">CTE </p>
<p> </p></th>
</tr>
<tr>
<td width="491" bgcolor="#FFFFFF"> </td>
<td width="641"> </td>
</tr>
<tr>
<td bgcolor="#FFFFFF" class="letra"><p>Numero de orden o </p>
<p>numero de cedula</p></td>
<td><input type="text" name="busca" id="busca"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" id="buscar" value="Buscar" /></td>
</tr>
</table>
</form>
<?php
$busca = $_POST['busca'];
if ($_SERVER["REQUEST_METHOD"] == "POST"){
if (!empty ($_POST['busca'])){
echo "Indique su busqueda";
}
}
if ($busca!=""){
$busqueda=$con->query("SELECT * FROM clientes C INNER JOIN producto P ON C.serial = P.serial WHERE P.serial like '%".$busca."%' or c.cedula like '%".$busca."%' " );
}
echo "<table border=1>
<tr>
<th>Cliente</th>
<th>Cedula</th>
<th>Orden numero</th>
<th>Email</th>
<th>Barrio</th>
<th>Telefono</th>
<th>Producto</th>
<th>Marca</th>
<th>Almacen</th>
<th>Dano</th>
<th>Fecha de recepcion</th>
<th>Tecnico</th>
<th>Estado</th>
<th>Sede</th>
<th>Fecha de entrega</th>
</tr>";
$rowColors = Array('#A6A6FF','#FFFFFF'); $nRow = 0;
while ($muestra=$busqueda->fetch_array()){
echo '<tr style="background-color:'.$rowColors[$nRow++ % count($rowColors)].';">';
echo '<td>' .$muestra['cliente'].'</td>';
echo '<td>' .$muestra['cedula']. '</td>';
echo '<td>' .$muestra['serial']. '</td>';
echo '<td>' .$muestra['email']. '</td>';
echo '<td>' .$muestra['barrio'].'</td>';
echo '<td>' .$muestra['telefono']. '</td>';
echo '<td>' .$muestra['producto']. '</td>';
echo '<td>' .$muestra['marca']. '</td>';
echo '<td>' .$muestra['almacen']. '</td>';
echo '<td>' .$muestra['dano'].'</td>';
echo '<td>' .$muestra['fecharecepcion']. '</td>';
echo '<td>' .$muestra['tecnico']. '</td>';
echo '<td>' .$muestra['estado']. '</td>';
echo '<td>' .$muestra['sede']. '</td>';
echo '<td>' .$muestra['entregaacliente']. '</td>';
}
mysqli_close ($con)
?>
</body>
</html>
答案 0 :(得分:0)
您正在通过整个页面混合代码,以便在发出POST
请求时以及何时可能没有POST
请求。
例如:如果未发出POST
请求,则$_POST['busca']
未定义,但您在检查POST
请求之前放置了该行。 $busqueda
的情况相同;该变量仅在发出POST
请求时定义,但是当您使用它时,您不会检查该变量。
您应该在发出POST
请求时以及何时不清楚地分隔代码。您还可以初始化变量并在使用它们时检查初始化值。
答案 1 :(得分:0)
这是因为当您首次加载页面时,不会向页面发布任何数据。您可以在尝试对数据执行任何操作之前添加此检查。
<?php
if (isset( $_POST['busca']) // if the data is posted
{
//all your code here.
}
答案 2 :(得分:0)
您的代码中有很多问题。
您必须在生成任何输出之前放置session_start()
。它应该在文件的最开头。
在检查$busca = $_POST['busca'];
之前指定$_SERVER["REQUEST_METHOD"] == "POST"
。因此,当您显示表单时,您正在执行此分配,而不仅仅是在用户提交表单时。但$_POST['busca']
未设定时间,因此您会收到有关Undefined index 'busca'
的警告。
此测试是倒退的:
if (!empty ($_POST['busca'])){
echo "Indique su busqueda";
}
当字段不为空时,您显示错误,但是当 为空时,您应该显示错误,对吗?
您只能在设置$busqueda
时执行查询并指定$busca
。但是后来你有了循环:
while ($muestra=$busqueda->fetch_array()){
即使未设置$busqueda
。这就是为什么你得到Undefined variable $busqueda
错误以及关于在非对象上调用fetch_array
的错误(因为$busqueda
未定义)。
您需要检查脚本的所有逻辑,并确保它仅在给出表单输入时执行用于处理表单的部分。否则它应该只显示空表格。