Consulta PHP-MySQL

Hola a todos, En una página tengo un formulario en el que los usuarios pueden introducir una fecha (en formato americano) y, al hacer clic en...

La FAQ Consulta PHP-MySQL tiene

Pertenece a la categoría:
Pregunta
Hola a todos,


En una página tengo un formulario en el que los usuarios pueden introducir una fecha (en formato americano) y, al hacer clic en el botón de enviar, pueden ver todas las entradas de la base de datos que coinciden con esa fecha.


Tengo el formulario, la base de datos, el script PHP pero hay algo que no me funciona. El error de PHP es:


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/home/radiomarina.com/web/intranet/informatius/veure_agenda.php on line 23


Os envío el código del formulario y del script PHP a ver si alguien me puede ayudar porque ya no sé dónde puede estar el error. Muchas gracias de antemano.


Formulario:





<table width="600" height="62" align="center" cellpadding="0" cellspacing="0">



<form action="veure_agenda.php" method="post" name="miForm">



<tr>



<td width="133" height="30" class="tabla1">Data inici:</td>



<td width="358" height="30" class="tabla1"> <input name="data_inici" class="area" size="15"></td>



<tr>



<td height="30" colspan="2" class="tabla1"><input type="submit" name="submit" value="Consultar">



<input type="reset" name="borrar" value="Esborrar"></td>



</form>



</table>





Script PHP:



<?php



if(isset($submit)):



include ("connect.php");



$data_inici = $HTTP_GET_VARS['data_inici'];



$sql = "select * from 'agenda' where data_inici=".$data_inici;



$resultado = mysql_query ($sql);



while ($fila = mysql_fetch_array($resultado)) {



echo '<table width="800" cellpadding="0" cellspacing="0">';



echo ' <tr><td height="15"><span class="titulo">'.$fila["poble"].'</span></td></tr>';



echo ' <tr><td height="10" valign="top"><span class="textimprimir">'.$fila["hora"].'</span> <span class="text2negretaimprimir">'.$fila["titol"].'</span></td></tr>';



echo ' <tr><td><span class="textimprimir">'.$fila["descripcio"].'</span></td></tr>';



echo '<tr><td height="5" valign="top"><font color="#CCCCCC"><strong>........................................................................................................................................................................................................</strong></font></td></tr></table>';



}



endif;



?>

Respuesta de Cristian Avila Montalvo
puedes cambiar estas dos líneas.


$sql = "select * from 'agenda' where data_inici=".$data_inici;

$resultado = mysql_query ($sql);



Por



$sql = "select * from agenda where data_inici='$data_inici';

$resultado = mysql_query ($sql) or die (mysql_error() . "- Query -" . $sql);


Si así te sigue dando error al menos ya tendrás una idea más clara del porqué se produce, y no te olvides a demás tomar los $_POST no los $_GET puesto que el form lo mandas por post.
Volver al árbol de categoríasVolver al árbol de categorías

Comentarios

Gustavo Aquino

04/8/2009
Anidado correcto de comillas.
No olvidar de la última comilla doble (") en la primera línea a modificar.

ciberwap

18/8/2009
puede ser
tal vez tu consulta quedaria mejor asi y utilizando $_POST

$data_inici = $_POST['data_inici'];

$sql = mysql_result("SELECT * FROM agenda WHERE data_inici='$data_inici' ");

while ($fila = mysql_fetch_array($sql)) {

$data = $fila["nombrecampo"];

echo $data;

}

[CiberWap.Net]

cesar_luis-498906

18/8/2009
enviando con POST recibiendo co GET
Creo que el error radica ahi, ademas esta usando variables obsoletas: usa $_POST[]

Fernando Romero

18/8/2009
2 cosas POST y sql
El formulario está ok, ahora en el codigo php prueba esto:
<?php

if($_POST['submit']):

include ("connect.php");
/**
*AKI PODRIAS CAMBIAR ESTO

$data_inici = $HTTP_GET_VARS['data_inici'];
*
*por esto:
*/
$data_inici = $_POST['data_inici'];
$sql = "select * from 'agenda' where data_inici=".$data_inici;

$resultado = mysql_query ($sql) or die(mysql_error());

while ($fila = mysql_fetch_array($resultado)) {

echo '<table width="800" cellpadding="0" cellspacing="0">';

echo ' <tr><td height="15"><span class="titulo">'.$fila["poble"].'</span></td></tr>';

echo ' <tr><td height="10" valign="top"><span class="textimprimir">'.$fila["hora"].'</span> <span class="text2negretaimprimir">'.$fila["titol"].'</span></td></tr>';

echo ' <tr><td><span class="textimprimir">'.$fila["descripcio"].'</span></td></tr>';

echo '<tr><td height="5" valign="top"><font color="#CCCCCC"><strong>........................................................................................................................................................................................................</strong></font></td></tr></table>';

}

endif;

?>

-----------
Como dijo Cristian con la funcion die(mysql_error()) tú puedes ver cual es el último error devuelto en mysql (si existiera).

Te recomiendo que hagas un echo del sql para verificar si el sql está completo o no.

Es mejor que cojas los datos con $_POST["<valor>"] o $_GET["<valor>"] así tienes mejor control de lo que haces y de como envias los datos

Alograg

18/8/2009
Corrigiendo tu codigo
Quiero resaltar que tu código tiene muchos errores y no soporta estándares de la W3C.
Errores de programación;
1. El formulario lo estas mandando por POST, no por GET
2. Si tu campo (data_inici) es un campo de fecha MySQL, el formato es 'YYYY-MM-DD'.
3. En la consulta debes ponerle comillas, para que lo pueda comparar con la fecha.
4. Usas mysql_fecha_array, pero utilizas la variable como si hubieras usado mysql_fetch_assoc.
5. No tienes ningún protector contra ataques de consulta.
Errores en codigo y estándares de W3C;
1. Metes form dentro de una tabla.
2. Usas tablas para cosas que no son datos tabulares.
3. Usas clases pero sigues definiendo cosas en el tag.
4. Usas etiqueta font.
5. Usas una tabla para cada registro.
6. Quieres usar un dato tabular en otra reprecentacion visual usando tablas.
Como lo haría yo:
Form.html
<form action="veure_agenda.php" method="post" name="miForm">
<label for="data_inici">Fecha:</label> <input id="data_inici" name="data_inici"/>(YYYY-MM-DD)<br />
<button type="submit">Enviar</button> <button type="reset">Limpiar forma</button>
</form>
veure_agenda.php
<?php
if(isset($_POST['$data_inici'])){
include_once("connect.php");
$sql="SELECT * FROM agenda WHERE data_inici='".mysql_real_escape_string($_POST['$data_inici'])."'";
$resultado=mysql_query($sql);
while($fila=mysql_fetch_assoc($resultado)){
?>
<h3><?php print $fila["poble"];?></h3>
<p><span class="textimprimir"><?php print $fila["hora"];?></span> <span class="text2negretaimprimir"><?php print $fila["titol"];?></span><br />
<?php print $fila["descripcio"];?> </p>
<hr />
<?php
}
?>
Espero esto te ayude a que leas y seas mejor programador.

PIERO

19/8/2009
BIEN
tal vez tu consulta quedaria mejor asi y utilizando $_POST

$data_inici = $_POST['data_inici'];

$sql = mysql_result("SELECT * FROM agenda WHERE data_inici='$data_inici' ");

while ($fila = mysql_fetch_array($sql)) {

$data = $fila["nombrecampo"];

echo $data;

}

fastelio

19/8/2009
eroor de variable
puede ser que tu base de datos tenga un formato mal en la fecha en la que indicates los raracteres

liliana

15/6/2010
consultas de mysql en php
tengo dos tablas una de empleados y otra pagos necsito hacer una consulta entre las dos tablas
FAQ relacionadas
Volver al árbol de categoríasVolver al árbol de categorías