Foros del Web » Programando para Internet » PHP »

Envio de variable

Estas en el tema de Envio de variable en el foro de PHP en Foros del Web. Me estoy volviendo loco con un script de php que va a acabar conmigo. Creo que es una tonteria pero se me resiste... A ver ...
  #1 (permalink)  
Antiguo 31/10/2003, 07:16
Gux
 
Fecha de Ingreso: octubre-2003
Mensajes: 58
Antigüedad: 20 años, 6 meses
Puntos: 0
Envio de variable

Me estoy volviendo loco con un script de php que va a acabar conmigo. Creo que es una tonteria pero se me resiste...
A ver si alguien me puede echar un cable. Explico el asunto:

Solicito unos productos de una base de datos por medio de la sentencia sql "select from $table..."
Me saca los registros correctamente y ahora viene mi problema.
Las variables correspondientes a esos registros las quiero enviar a otra página junto a una nueva variable en la que pretendo introducir las cantidades. Pues bien, no consigo que esa variable me coja la cifra que introduzco a través de un form.

¿Alguno sabe cómo puedo hacerlo? Espero haberme explicado bien, de todas formas, para que quede más claro adjunto la parte del codigo que interesa:

<?php

include("variableprods.php");
$sql="select * from $table where(tipo = '$tipo')";
$result=mysql_db_query($basedatos,$sql,$link);
while($row=mysql_fetch_array($result))
{

echo("<tr>
<td width='120' valign='top' align='center'>
<img src='thumbnails/producto.jpg' border='0'>
</td>
<td width='340' valign='top'>$row[tipo]<br>
<small>$row[descripcion]
</td>
<td width='60' align='center' valign='top'>$row[precio]
</td>
<td width='50' valign='top' align='center'>
<input TYPE='value' NAME='agregar' VALUE='1' SIZE='3'>
</td>
<td width='70' valign='top'>
<input TYPE='submit' VALUE='Añadir' >
<input type='hidden' name='tipo' value='$row[tipo]'>
<input type='hidden' name='precio' value='$row[precio]'>
</td>
</tr>");

}
?>

Mi problema es que no me envia la variable $agregar.

Muchas gracias.

Última edición por Gux; 31/10/2003 a las 08:22
  #2 (permalink)  
Antiguo 31/10/2003, 07:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y donde haces el <form ... > </form> ..? Que método usas (method= ) .. y como las recoges en tu otro script?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 31/10/2003, 07:34
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
No tienes puestas las etiquetas de form

has puesto mal el input de agregar, pones:

<input TYPE='value' NAME='agregar' VALUE='1' SIZE='3'>

y deberias poner, suponiendo que quieras un campo de texto

<input TYPE='text' NAME='agregar' VALUE='1' SIZE='3'>
  #4 (permalink)  
Antiguo 31/10/2003, 07:43
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Y si son varios registros, y quieres realizar el cambio para todos a la vez, esos campos se deben llamar distinto para cada registro, o pasarlos como arrays poniendo [] al final del nombre de cada campo. Una de las ultimas FAQs habla del tema.

Ademas, veo fallos de sintaxis, tanto PHP como HTML. De PHP pones en el medio de la cadena ") que lo cierra. Y de HTML te faltan un par de ' que cierran valores de atributos.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 31/10/2003, 07:48
Gux
 
Fecha de Ingreso: octubre-2003
Mensajes: 58
Antigüedad: 20 años, 6 meses
Puntos: 0
Perdón, como el form lo tengo más arriba en el codigo se me ha pasado ponerlo, pero está. Suelo utilizar el method='post' pero ya he probado con get ara ver si envia la variable y no lo hace.
Respecto a la segunda respuesta, es indiferente el type='text' o el type='value' en mi caso ya que lo que hay que introducir en el casillero es un número. De todas maneras tb he probado con type='text' y nada de nada.

Lo que me llama la atención es que si en lugar de hacer llamada a la base de datos pongo elementos fijos si funciona. Esto es, si elimino la sentencia sql y en lugar de poner $row[tipo] pongo Libros, en lugar de $row[descripcion] pongo libro1 y en lugar de $row[precio] pongo 20 € funciona correctamente.

Muchas gracias a los que habeis respondido.
  #6 (permalink)  
Antiguo 31/10/2003, 08:21
Gux
 
Fecha de Ingreso: octubre-2003
Mensajes: 58
Antigüedad: 20 años, 6 meses
Puntos: 0
Josemi, no te he entendido muy bien pero me parece que mi problema puede tener que ver con lo qeu tu dices ya que son varios los registros que obtengo de la llamada a la base de datos. ¿Me podrías explicar mejor como puedo solucionar el problema?¿En que FAQ puedo encontrar la solución?

Por cierto, los errores que me comentabas ya están solucionados. Muchísimas gracias.

Un saludo.
  #7 (permalink)  
Antiguo 31/10/2003, 09:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si solventastes ya esos problemas .. ahora pon el código completo corregido (incluido los <form ..> ... </form>) para ver como quedó y sobre todo indica si hay algún tipo de error (de PHP/Mysql) o que es lo que no hace correctamente.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 31/10/2003, 09:43
Gux
 
Fecha de Ingreso: octubre-2003
Mensajes: 58
Antigüedad: 20 años, 6 meses
Puntos: 0
Este es el codigo:

<form NAME="itemsform" action='estado.php'>
<table border="1" cellspacing="0" width="640" bgcolor="#E0E0E0" bordercolor="#FFFFFF" class="td">

<?php

include("variableprods.php");
$sql="select * from $table where(tipo = '$tipo')";
$result=mysql_db_query($basedatos,$sql,$link);
while($row=mysql_fetch_array($result))
{

echo("<tr>
<td width='120' valign='top' align='center'>
<img src='thumbnails/producto.jpg' border='0'>
</td>
<td width='340' valign='top'>$row[tipo]<br>
<small>$row[descripcion]
</td>
<td width='60' align='center' valign='top'>$row[precio]
</td>
<td width='50' valign='top' align='center'>
<input TYPE='value' NAME='agregar' VALUE='1' SIZE='3'>
</td>
<td width='70' valign='top'>
<input TYPE='submit' VALUE='Añadir' >
<input type='hidden' name='tipo' value='$row[tipo]'>
<input type='hidden' name='precio' value='$row[precio]'>
</td>
</tr>");

}
?>

</table>
</form>

En la pagina "estado.php" pido que me muestre tipo, descripcion,precio y cantidad($agregar), pero este último no me llega.

Ej:

Tipo Descripcion Precio Cantidad Total
LIbro LIbro1 25€ NaN.NaN

Como puedes ver no me llega la cantidad con lo que el total tampoco sale.


Mucas gracias.
  #9 (permalink)  
Antiguo 31/10/2003, 09:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
1) El formulario te falta definir el metodo de envio de tus variabels .. Si no lo indicas se asume GET ..

<form .... method="GET" o "POST">

2) Sería recomendable (si usas PHP 4.1.0 o superior) que uses los array superglobales $_GET... $_POST .. etc (en las FAQ's de este foro .. de las primeras tienes una explicación al respecto).

3) Esto ...

<input TYPE='value' NAME='agregar' VALUE='1' SIZE='3'>

Ya te dijeron como tiene que ser ... (jercer te lo explicó)

En general.. tienes más problemas con el uso de formulario HTML que con PHP .. Te recomiendo ver algo sobre forumularios antes de meterte de lleno con PHP .. eso es la base.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 19:15.