Foros del Web » Programando para Internet » PHP »

funcion

Estas en el tema de funcion en el foro de PHP en Foros del Web. Hola: Realize el siguiente metodo para poder ver desde una tabla todos los nombres , y sin que se repitan: <?php //FUNCION QUE SACA DE ...
  #1 (permalink)  
Antiguo 14/03/2005, 18:22
 
Fecha de Ingreso: abril-2004
Ubicación: Concepcion
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 0
funcion

Hola:
Realize el siguiente metodo para poder ver desde una tabla todos los nombres , y sin que se repitan:
<?php
//FUNCION QUE SACA DE UNA TABLA TODOS LOS NOMBRES DE CLIENTES, EN FORMA ORDENA Y SIN REPETIR CLIENTES

function ver_deudores($nombre,$conectar){
echo"
<select name=\"$nombre\" size=1>
<option value='NULL' selectd>-----";
//SACANDO DE LA BASE DE DATOS "DEUDORES".
$z=0;
$tabla="select nombre from deudores order by nombre";
$tabla_result=mysql_query($tabla,$conectar) or die ('No se puede obtener datos de la tabla');
//Se muestra el nombre de cada deudor
while($fila=mysql_fetch_array($tabla_result)){
$z++;
$paso[$z+1]=$fila["nombre"];
$deudor=$paso[$z+1];
if($deudor!=$paso[$z]){
$deudor=$fila["nombre"];
echo "<option value='$deudor'>$deudor";
}
}
echo "
</select>";
}
?>
Cuando no esta como funcion, el envio del $_POST funciona, el problema que como funcion no se como diseñarla, porque asi como esta no corre, ya que el $_POST['$nombre'] no puede ir asi,entonces tendria que ser $_POST['nombre'] , pero entonces no podria ser, ya que la variable es $nombre, no se si se entiende.
  #2 (permalink)  
Antiguo 14/03/2005, 18:31
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 23 años, 3 meses
Puntos: 9
Pues mas facil:
Código PHP:
$nombre=$_POST['nombre'];
ver_deudores($nombre$conectar); 
  #3 (permalink)  
Antiguo 14/03/2005, 20:54
 
Fecha de Ingreso: abril-2004
Ubicación: Concepcion
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 0
Desacuerdo

Cita:
Iniciado por lado2mx
Pues mas facil:
Código PHP:
$nombre=$_POST['nombre'];
ver_deudores($nombre$conectar); 
No, estas mal. La complicacion es que en <input type="text" name="esta no puede ser $variable">
porque si no , no sale desde el form como $_POST['variable']. Esto tampoco es asignable a una variable, porque si no le estarias dando el valor de un form de donde $_POST['variable'] sale de un <input type='text' name='variable>
  #4 (permalink)  
Antiguo 14/03/2005, 21:59
Avatar de Keitaro  
Fecha de Ingreso: marzo-2005
Ubicación: Mi Casa
Mensajes: 33
Antigüedad: 19 años, 8 meses
Puntos: 0
Ordenando el código, para yo entenderlo
Código PHP:
function ver_deudores($nombre,$conectar)
{
// hago todo lo de php antes del browser...
$z=0;
$tabla="select nombre from deudores order by nombre";
$tabla_result=mysql_query($tabla,$conectar) or die ('No se puede obtener datos de la tabla');
?>
<select name="$nombre" size=1>
<option value="NULL" selectd>-----</option>
<?
//Se muestra el nombre de cada deudor
while($fila=mysql_fetch_array($tabla_result))
{
  
$z++;
  
$paso[$z+1]=$fila["nombre"];
  
$deudor=$paso[$z+1];
  if(
$deudor!=$paso[$z])
  {
    
$deudor=$fila["nombre"];
    
?><option value='$deudor'><?=$deudor?><?
  
}
}
?></select><?
}
?>
Ya leyendo el código te faltaron todos los </option> a cada opción!...

Chequea eso por favor...

Eso... Aunque no creo que ese sea el problema...

Sayonara
  #5 (permalink)  
Antiguo 15/03/2005, 03:15
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
No seria mas facil q desde la consulta mostrases todos los nombres sin repetirse.
Código PHP:
$tabla="select DISTINCT nombre from deudores order by nombre"
$tabla_result=mysql_query($tabla,$conectar) or die ('No se puede obtener datos de la tabla'); 
entonces para llenar el select podrias hacer algo asi:
Código PHP:
<select name="$nombre" size=1>
<?PHP
//consulta para crear el COMBOBOX
$result mysql_query("select DISTINCT nombre from deudores order by nombre");
//mostrar resultados
while ($row=mysql_fetch_array($result))
{
 echo (
"<OPTION VALUE=".$row['nombre']." SELECTED>".$row['nombre']."\n");
}                    
?>                
</select>
no ser si era esto lo q querias...

Última edición por sergi_climent; 15/03/2005 a las 03:18
  #6 (permalink)  
Antiguo 15/03/2005, 15:02
 
Fecha de Ingreso: abril-2004
Ubicación: Concepcion
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 0
Ya entonces la cosa quedo asi:
Todo dentro de un form:
<?php
for($i=0;$i<=2;$i++){
echo "
<TR>
<TD>";
//OBTENER LA LISTA DE NOMBRES SIN REPETIR
$tabla="select DISTINCT nombre from deudores order by nombre";
$tabla_result=mysql_query($tabla,$conectar) or die ('No se puede obtener datos de la tabla');
echo "
<select name='deudor[]' size=1>
<option value='NULL' selected>------";
//ENVIAR VARIABLE POR EL FORM
//consulta para crear el COMBOBOX
$result = mysql_query("select DISTINCT nombre from deudores order by nombre");
//mostrar resultados
while ($row=mysql_fetch_array($result)){
echo ("<OPTION VALUE=".$row['nombre'].">".$row['nombre']."\n");
}

echo"
</select>
?>
Ahora no puedo capturar el envio, con foreach:
foreach($_POST['deudor'] as $temp){
echo $temp;
}
Me marca un error de asignacion de variable
Alguna idea?, gracias

Última edición por sombra_cl; 15/03/2005 a las 15:06
  #7 (permalink)  
Antiguo 15/03/2005, 16:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Si pones el error "textual" será mejor ..

Un saludo,
  #8 (permalink)  
Antiguo 15/03/2005, 16:47
 
Fecha de Ingreso: abril-2004
Ubicación: Concepcion
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 0
Cita:
Iniciado por Cluster
Si pones el error "textual" será mejor ..

Un saludo,
Ya ok, el codigo tal cual:
<html>
<form name="form_iframe" method="post" action="resultados_llacolen.php" target="resultados_iframe">
<?php
for($i=0;$i<=2;$i++){
echo "
<TR>
<TD>";
//OBTENER LA LISTA DE NOMBRES SIN REPETIR
$tabla="select DISTINCT nombre from deudores order by nombre";
$tabla_result=mysql_query($tabla,$conectar) or die ('No se puede obtener datos de la tabla');


echo "
<select name='deudor[]' size=1>
<option value='NULL' selected>------";
//ENVIAR VARIABLE POR EL FORM
//consulta para crear el COMBOBOX
$result = mysql_query("select DISTINCT nombre from deudores order by nombre");
//mostrar resultados
while ($row=mysql_fetch_array($result)){
echo ("<OPTION VALUE=".$row['nombre'].">".$row['nombre']."\n");
}

echo"
</select>
</TD>

<TD>&nbsp;&nbsp;&nbsp;</TD>

<!--COMENTARIOS-->
<TD>
<input type='text' name='comentario[]' size=12 onKeyPress='return blockEnter(event)'>
</TD>

<TD>&nbsp;&nbsp;&nbsp;</TD>

<!--MONTO DEUDA-->
<TD>
$<input type='text' name='deuda[]' size=11 onKeyPress='return blockEnter(event)'>
</TD>
</TR>";
}
?>
<input type="submit" value="Previsualizar">
</form>
</html>

PAGINA DONDE LLEGA EL FORM
<?php
if(isset($_POST['deudor'])){
foreach($_POST['deudor'] as $temp){
echo $temp;
}
}
unset($temp);
if(isset($_POST['comentario'])){
foreach($_POST['comentario'] as $temp){
echo $temp;
}
}
?>
eso es todo, el error es de asignamiento al foreach. Pero solo con deudores, no ocurre con la otra variable $_POST['comentario'], esa llega perfecta.

Última edición por sombra_cl; 16/03/2005 a las 10:38
  #9 (permalink)  
Antiguo 16/03/2005, 01:30
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Una pregunta, ¿donde esta el control de name="deudores[]"? Porque yo veo name="deudor[]", name="comentario[]" y name="deuda[]", pero ninguno name="deudores[]".

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 16/03/2005, 10:40
 
Fecha de Ingreso: abril-2004
Ubicación: Concepcion
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 0
Cita:
Iniciado por josemi
Hola,

Una pregunta, ¿donde esta el control de name="deudores[]"? Porque yo veo name="deudor[]", name="comentario[]" y name="deuda[]", pero ninguno name="deudores[]".

Saludos.
Perdon , fue un error de copiar el codigo, ya lo repare, asi que ese no es el problema. Por alguna razon el $_POST['deudor'] no llega y el $_POST['comentario'] llega sin ningun problema. Gracias
  #11 (permalink)  
Antiguo 16/03/2005, 14:24
 
Fecha de Ingreso: abril-2004
Ubicación: Concepcion
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 0
este es el error que sale:
Warning: Invalid argument supplied for foreach() in linea (es la linea en el foreach de $_POST['deudor']
  #12 (permalink)  
Antiguo 16/03/2005, 15:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Haz un print_r() a $_POST y observa que estructura generas desde tu formulario cara a PHP:

Código PHP:
echo "<pre>";
print_r($_POST);
echo 
"</pre>"
ahí veras definidos todos tus arrays que generas .. sus nombres y valores .. o si alguna variable no es un array y es de otro tipo.

Un saludo,
  #13 (permalink)  
Antiguo 16/03/2005, 15:11
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
foreach en un campo select no multiple??? Tenes un problema con los conseptos. Aparte esto esta mal "<select name='deudor[]' size=1>" es en todo caso "<select name='deudor'>", y para levantarlo con un simple $_POST["deudor"] ya esta...si entendi mal disculpas.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #14 (permalink)  
Antiguo 16/03/2005, 15:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por nicolaspar
foreach en un campo select no multiple??? Tenes un problema con los conseptos. Aparte esto esta mal "<select name='deudor[]' size=1>" es en todo caso "<select name='deudor'>", y para levantarlo con un simple $_POST["deudor"] ya esta...si entendi mal disculpas.
El detalle es que genera N de esos SELECT (fijate en el for() que ahí por ahí ..) por eso usa la notación "[]" como nombre de un <select> .. eso define (por lo menos a PHP) que ahí irá un array con las opciones que seleccione de cada uno de esos N que ahí compone.

Un saludo,
  #15 (permalink)  
Antiguo 16/03/2005, 15:45
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
ahora comprendi...:( (por que da tanta fiaja lee todo el codigo?:P)
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #16 (permalink)  
Antiguo 17/03/2005, 08:42
 
Fecha de Ingreso: abril-2004
Ubicación: Concepcion
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 0
Cita:
Iniciado por Cluster
Haz un print_r() a $_POST y observa que estructura generas desde tu formulario cara a PHP:

Código PHP:
echo "<pre>";
print_r($_POST);
echo 
"</pre>"
ahí veras definidos todos tus arrays que generas .. sus nombres y valores .. o si alguna variable no es un array y es de otro tipo.

Un saludo,
Ya hice lo que me dijiste, y aparecen todos los $_POST bien .Ahora el foreach no me permite recibir $_POST['deudor'], la razon no la se, sin embargo para recibir $_POST['comentario'] no tiene problemas. Entonces como puedo recibir el $_POST['deudor']???, gracias
  #17 (permalink)  
Antiguo 17/03/2005, 09:34
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Podrás postear lo que te imprime el print_r?
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #18 (permalink)  
Antiguo 17/03/2005, 12:08
 
Fecha de Ingreso: abril-2004
Ubicación: Concepcion
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 0
Cita:
Iniciado por nicolaspar
Podrás postear lo que te imprime el print_r?
Ya son 3 por cada $_POST, pero solo llene 2:
[deudor] => Array
(
[0] => prueba1
[1] => prueba2
[2] => NULL
)
[comentario] => Array
(
[0] => comentario 1
[1] => comentario 2
[2] =>
)
Como ven son lo mismo, pero no se porque el foreach no toma el $_POST['deudor'] .Hay otra forma de tomar el $_POST['deudor'] ?

Última edición por sombra_cl; 17/03/2005 a las 12:10
  #19 (permalink)  
Antiguo 17/03/2005, 15:00
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
haciendo un for, convinado de un isset...pero creo que es lo mismo. Hay algo que esta mal, y tendrás que debuguear para encontrar que es. Te recomiendo hacer:
if(is_array($_POST['deudor'])){echo "si<hr>";}else{ echo "problem";} #Si es un array, todo bien
foreach($_POST['deudor'] as $temp){
prinr_r($temp); #Tal vez haya mas adentro
}

De seguro que tenes un error, configura el php.ini para que te muestre todo, incluyendo los warnings.
Depues es cosas de probar donde esta el error.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #20 (permalink)  
Antiguo 17/03/2005, 16:47
 
Fecha de Ingreso: abril-2004
Ubicación: Concepcion
Mensajes: 72
Antigüedad: 20 años, 7 meses
Puntos: 0
Cita:
Iniciado por nicolaspar
haciendo un for, convinado de un isset...pero creo que es lo mismo. Hay algo que esta mal, y tendrás que debuguear para encontrar que es. Te recomiendo hacer:
if(is_array($_POST['deudor'])){echo "si<hr>";}else{ echo "problem";} #Si es un array, todo bien
foreach($_POST['deudor'] as $temp){
prinr_r($temp); #Tal vez haya mas adentro
}

De seguro que tenes un error, configura el php.ini para que te muestre todo, incluyendo los warnings.
Depues es cosas de probar donde esta el error.
Eso salio:
problem
Warning: Invalid argument supplied for foreach() in
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 13:04.