Foros del Web » Programando para Internet » PHP »

Problemilla con Php

Estas en el tema de Problemilla con Php en el foro de PHP en Foros del Web. Hola chicos: tengo un problema con un fichero en php que me está dando muchos quebraderos de cabeza, en otro foro han conseguido acercarse a ...
  #1 (permalink)  
Antiguo 20/06/2011, 04:54
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Problemilla con Php

Hola chicos: tengo un problema con un fichero en php que me está dando muchos quebraderos de cabeza, en otro foro han conseguido acercarse a la solución pero todavía no tengo la definitiva ayuda que necesito. (lo habia colgado en otro lugar este problema pero me he dado cuenta a posteriori que era un lugar erroneo)

Basicamente tengo un fichero que se llama productobeta.php que tiene varios checkbox que envian información a otro fichero que se llama resumen.php

El fichero productobeta.php manda la información

<td class="r6" width=50 style="border:0px solid black">
<input type="checkbox" name="articulo[]" value="
<?php echo $registro['articulo']?>

y luego un input que lleva toda la información a resumen.php

El fichero resumen.php es el siguiente

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<link rel="stylesheet" href="text.css" type="text/css" media="all">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Page-Enter" content="RevealTrans (Duration=3, Transition=12)">
<meta http-equiv="Page-Enter" content="RevealTrans (Duration=3, Transition=12)">
<title>Resumen</title>
</head>
<body topmargin="0" leftmargin="0" text="" bgcolor="" marginheight="0" marginwidth="0">
<div id="content">
<div id="cabecera">
<a href="index.html"><img alt="Logotipo (40K)" src="objetos/logotipo.bmp"></a>
</div>
<div id="navegacion">
<ul>
<div align="center">
<table class="ancho80" width="100%" border="0" cellpadding="00" cellspacing="0">
<tbody>
<tr>
<td class="a2"><p><font color=white >></font><font type="Aircraft regular">Registro: ACCESO</font></p></td>
<td class="a3"><p><b><a href="http://www.celea.es/asociados.php">ASOCIADOS</a> /<a href="http://www.celea.es/clientes.php">CLIENTES</a></b></p></td>
<td class="a4"><p><a href="http://www.celea.es/productos.php">PRODUCTOS</a></p></td>
<td class="a5"><p><a href="http://www.celea.es/contactar.php">CONTACTO</a></p></td>
</tr>
</tbody>
</table>
</div>
</ul>
</div>
</div>
<fonf face="Verdana">
<div align="center">
<div class="nuevo">
<h1>Resumen</h1>

<div class="otro">


<table class="pruebas" cellspacing="4px" cellpadding="1px">
<tr>
<td class="r1" width=40 style="border:0px solid white" BGCOLOR="D3D3D3" valign="center">
</td>
<td class="r2" width=90 style="border:1px solid white" BGCOLOR="white" valign="center">
<b>Artículo</b>
</td>
<td class="r3" width=340 style="border:1px solid white" BGCOLOR="white" valign="center">
<b>Descripción</b>
</td>
<td class="r4" width=50 style="border:0px solid white" BGCOLOR="white" valign="center">
<b>Foto</b>
</td>
<td class="r5" width=120 style="border:1px solid white" BGCOLOR="white" valign="center">
<b>Codigo EAN</b>
</td>
<td class="r6" width=50 style="border:1px solid white" BGCOLOR="white" valign="center">
<b></b>
</td>
<td>
</td>
</tr>
</table>
</div>
<?php
echo "<pre>";
print_r($_POST['articulo']);
echo "</pre>";
?>
// simple comprobación para ver que si que se reciben todos los datos de los checkbox (si que llegan)
<?

mysql_connect('servidor', 'usuario','password')or die ('Ha fallado la conexi&oacute;n: '.mysql_error());
mysql_select_db('basededatos)or die ('Error al seleccionar la Base de Datos: '.mysql_error());
mysql_select_db("articulozona");

$articulo = $_POST['articulo'];
$arr_len = count($articulo);
$sql = "SELECT * FROM articulozona WHERE ";
for($i = 0; $i < $arr_len; $i++) { // Ahora sí es for
$sql .= "articulo='" .$articulo[$i]. "' AND ";
}
$sql = trim($sql, ' AND');


print $sql;
$resultado = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
while ($registro=mysql_fetch_assoc($resultado)) {
?>

<div align="center">
<table class="pruebas" cellspacing="4px" cellpadding="1px">
<tr>
<td class="r1" width=40 style="border:0px solid black">
<?php
echo "<a href='descargas.php?articulo=$registro[articulo]'><img src='objetos/descargar-pdf.png'></a>";
?>
</td>
<td class="r2" width=90 style="border:1px solid black">
<FONT FACE="arial" SIZE=1.5>
<?php
echo "<b>".$registro['articulo'];
?>
</font>
</td>
<td class="r3" width=340 style="border:1px solid black">
<FONT FACE="arial" SIZE=1.5>
<?php
echo "<b>".$registro['descripcion'];
?>
</font>
</td>
<td class="r4" width=50 style="border:0px solid white" BGCOLOR="white">
<FONT FACE="arial" SIZE=1.5>
<?php
echo "<a href='fotos.php?articulo=$registro[articulo]'><img src='objetos/camara1.jpg' 'height=30px'.'width=30px'></a>";
?>
</font>
</td>
<td class="r5" width=120 style="border:1px solid black">
<FONT FACE="arial" SIZE=1.5>
<?php
echo "<b>".$registro['ean']."</b>";
?>
</font>
</td>
<td class="r6" width=50 style="border:0px solid black">
</td>
<td>
</td>
</tr>
</table>
</div>
<?php
}

?>

</font>
</div>
</font>
</body>
</html>

El problema es que posteriormente la consulta se hace pero en lugar de extraerme lo que yo quiero de la base de datos, directamente me lleva el siguiente texto.

SELECT * FROM articulozona WHERE articulo=' 33031410-01'

¿Qué es lo que le falta? ¿Qué es lo que le sobra?

Antes de nada muchas gracias por la ayuda
  #2 (permalink)  
Antiguo 20/06/2011, 05:44
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Problemilla con Php

pues primero te muestra esto

SELECT * FROM articulozona WHERE articulo=' 33031410-01'

porque tienes

print $sql;

aparte tenias algunos ; que faltaban y algunas concatenaciones

Código PHP:
<td class="r6" width=50 style="border:0px solid black">
<input type="checkbox" name="articulo[]" value="
<?php echo $registro['articulo']; ?>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<link rel="stylesheet" href="text.css" type="text/css" media="all">
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Page-Enter" content="RevealTrans (Duration=3, Transition=12)">
<meta http-equiv="Page-Enter" content="RevealTrans (Duration=3, Transition=12)">
<title>Resumen</title>
</head>
<body topmargin="0" leftmargin="0" text="" bgcolor="" marginheight="0" marginwidth="0">
<div id="content">
<div id="cabecera">
<a href="index.html"><img alt="Logotipo (40K)" src="objetos/logotipo.bmp"></a>
</div>
<div id="navegacion">
<ul>
<div align="center">
<table class="ancho80" width="100%" border="0" cellpadding="00" cellspacing="0">
<tbody>
<tr>
<td class="a2"><p><font color=white >></font><font type="Aircraft regular">Registro: ACCESO</font></p></td>
<td class="a3"><p><b><a href="http://www.celea.es/asociados.php">ASOCIADOS</a> /<a href="http://www.celea.es/clientes.php">CLIENTES</a></b></p></td>
<td class="a4"><p><a href="http://www.celea.es/productos.php">PRODUCTOS</a></p></td>
<td class="a5"><p><a href="http://www.celea.es/contactar.php">CONTACTO</a></p></td>
</tr>
</tbody>
</table>
</div>
</ul>
</div>
</div>
<fonf face="Verdana">
<div align="center">
<div class="nuevo">
<h1>Resumen</h1>

<div class="otro">


<table class="pruebas" cellspacing="4px" cellpadding="1px">
<tr>
<td class="r1" width=40 style="border:0px solid white" BGCOLOR="D3D3D3" valign="center">
</td>
<td class="r2" width=90 style="border:1px solid white" BGCOLOR="white" valign="center">
<b>Artículo</b>
</td>
<td class="r3" width=340 style="border:1px solid white" BGCOLOR="white" valign="center">
<b>Descripción</b>
</td>
<td class="r4" width=50 style="border:0px solid white" BGCOLOR="white" valign="center">
<b>Foto</b>
</td>
<td class="r5" width=120 style="border:1px solid white" BGCOLOR="white" valign="center">
<b>Codigo EAN</b>
</td>
<td class="r6" width=50 style="border:1px solid white" BGCOLOR="white" valign="center">
<b></b>
</td>
<td>
</td>
</tr>
</table>
</div>
<?php
echo "<pre>";
print_r($_POST['articulo']);
echo 
"</pre>";

// simple comprobación para ver que si que se reciben todos los datos de los checkbox (si que llegan)


mysql_connect('servidor''usuario','password')or die ('Ha fallado la conexi&oacute;n: '.mysql_error());
mysql_select_db('basededatos')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
mysql_select_db("articulozona");

$articulo $_POST['articulo'];
$arr_len count($articulo);
$sql "SELECT * FROM articulozona WHERE ";
for(
$i 0$i $arr_len$i++) { // Ahora sí es for
$sql .= "articulo='" .$articulo[$i]. "' AND ";
}
$sql trim($sql' AND');


print 
$sql;
$resultado mysql_query($sql) or die ("No se pudo ejecutar la consulta");
while (
$registro=mysql_fetch_assoc($resultado)) {
?>

<div align="center">
<table class="pruebas" cellspacing="4px" cellpadding="1px">
<tr>
<td class="r1" width=40 style="border:0px solid black">
<?php
echo "<a href='descargas.php?articulo='".$registro['articulo']."'><img src='objetos/descargar-pdf.png'></a>";
?>
</td>
<td class="r2" width=90 style="border:1px solid black">
<FONT FACE="arial" SIZE=1.5>
<?php
echo "<b>".$registro['articulo'];
?>
</font>
</td>
<td class="r3" width=340 style="border:1px solid black">
<FONT FACE="arial" SIZE=1.5>
<?php
echo "<b>".$registro['descripcion'];
?>
</font>
</td>
<td class="r4" width=50 style="border:0px solid white" BGCOLOR="white">
<FONT FACE="arial" SIZE=1.5>
<?php
echo "<a href='fotos.php?articulo='".$registro['articulo']."'><img src='objetos/camara1.jpg' 'height=30px'.'width=30px'></a>";
?>
</font>
</td>
<td class="r5" width=120 style="border:1px solid black">
<FONT FACE="arial" SIZE=1.5>
<?php
echo "<b>".$registro['ean']."</b>";
?>
</font>
</td>
<td class="r6" width=50 style="border:0px solid black">
</td>
<td>
</td>
</tr>
</table>
</div>
<?php
}

?>

</font>
</div>
</font>
</body>
</html>

si sigue sin funcionar debes ir revisando bien si hay respuesta segun la consulta
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #3 (permalink)  
Antiguo 20/06/2011, 09:02
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problemilla con Php

te lo agradezco pero donde faltaban y donde sobraban? :D
  #4 (permalink)  
Antiguo 20/06/2011, 10:42
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Problemilla con Php

yo pegue tu codigo arreglando algunas cosas (no me fije bien si son todas)
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #5 (permalink)  
Antiguo 21/06/2011, 01:34
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problemilla con Php

Creo que he encontrado el problema que era doble.

Por un lado

$articulo = $_POST['articulo'];
$arr_len = count($articulo);
$sql = "SELECT * FROM articulozona WHERE ";
for($i = 0; $i < $arr_len; $i++) { // Ahora sí es for
$sql.="articulo='".$articulo[$i]."' OR ";
}
$sql =trim($sql,'OR ');
$resultado = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
print $sql;
while($registro = mysql_fetch_assoc($resultado)) {

Era OR en lugar de AND, y luego el segundo problema es el que no encuentro solución ni explicación, ya que en casa en el Mozilla me funcionaba y en el Mozilla del curro no me "rula"

Creo que tiene que ver con que no hace del todo bien el "trim"

SELECT * FROM articulozona WHERE articulo=' 33031010-01' OR articulo=' 19015000' OR articulo=' 19015100'

En los tres casos hay un espacio en lugar de

SELECT * FROM articulozona WHERE articulo='33031010-01' OR articulo='19015000' OR articulo='19015100'

y no sé que hacer para quitar ese espacio...
  #6 (permalink)  
Antiguo 21/06/2011, 07:35
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Problemilla con Php

prueba cambiando esto

$sql .= "articulo='" .$articulo[$i]. "' OR ";

por esto

$sql .= "articulo='" .trim($articulo[$i]). "'OR ";
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:54.