Foros del Web » Programando para Internet » PHP »

Una ayuda, se me resiste el codigo...

Estas en el tema de Una ayuda, se me resiste el codigo... en el foro de PHP en Foros del Web. Hola a todos, a ver quien me puede hechar una mano xq no consigo que funcione, ponerlo en un php con el form y entendereis ...
  #1 (permalink)  
Antiguo 08/05/2005, 13:47
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Una ayuda, se me resiste el codigo...

Hola a todos, a ver quien me puede hechar una mano xq no consigo que funcione, ponerlo en un php con el form y entendereis lo que digo, agregar varios autores o varios temas o varios catalogos y lo entendereis, se me repite el mismo en la lista varias veces:

Código PHP:
<table width="200" border="0">
    <tr>
      <td><div align="center"><strong><span class="style1">AUTORES</span></strong></div></td>
    </tr>
  </table>
  <table width="608" border="0">
    <tr>
      <td><?
                
if (count($_POST['nomCat']) > 0) { 
                    foreach(
$_POST["nomCat"] as $nomCat
                    { 
                        
//echo "<br>DNI: "."$dni"; 
                    
?> 
                        <input type="hidden" name="nomCat[]" value="<? echo $nomCat?>" > 
                    <? 
                    

                } 
              
            if(
count($_POST['nombreAut']) > 0)
            {
                foreach(
$_POST["nombreAut"] as $nomAut)
                {
                    
//echo "<br>DNI: "."$dni";
                
?>
                    <input type="hidden" name="nombreAut[]" value="<? echo $nomAut?>">
    <tr><td>AUTOR: </td><td><? echo $nomAut; echo "<br>"?></td></tr>
                <?
                

            }
        
?> 
       </td>
      <td width="135">Nombre y Apellidos:</td>
      <td width="463"><input type="text" name="nombreAut[]" width="450"></td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="487" border="0">
    <tr>
      <td width="481"><div align="right">
        <input type="submit" name="AnyadirAutor" value="Añadir Autor">
      </div></td>
    </tr>
  </table>
  
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="521" border="0">
    <tr>
      <td width="224" height="38"><div align="center"><strong><span class="style1">CAT&Aacute;LOGO/S ASOCIADOS </span></strong></div></td>
    </tr>
  </table>
  <table width="234" border="0">
    <tr>
      <td><? if (count($_POST['nombreAut']) > 0) { 
                    foreach(
$_POST["nombreAut"] as $nomAut
                    { 
                        
//echo "<br>DNI: "."$dni"; 
                    
?> 
                        <input type="hidden" name="nombreAut[]" value="<? echo $nomAut?>" > 
                    <? 
                    

                } 
                
                if (
count($_POST['nomTema']) > 0) { 
                    foreach(
$_POST["nomTema"] as $nomTema
                    { 
                        
//echo "<br>DNI: "."$dni"; 
                    
?> 
                        <input type="hidden" name="nomTema[]" value="<? echo $nomTema?>" > 
                    <? 
                    

                }  
              
            if(
count($_POST['nomCat']) > 0)
            {
                foreach(
$_POST["nomCat"] as $nomCat)
                {
                    
//echo "<br>DNI: "."$dni";
                
?>
                    <input type="hidden" name="nomCat[]" value="<? echo $nomCat?>" >
    <tr><td>CATÁLOGO: </td><td><? echo $nomCat; echo "<br>"?></td></tr>
                <?
                

            }
        
?> 
       </td>
      <td width="67">Nombre:</td>
        <td width="157"><input type="text" name="nomCat[]"></td>
      </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="499" border="0">
    <tr>
      <td width="481"><div align="right">
          <input type="submit" name="AsignarCatalogo" value="Asignar Catálogo">
      </div></td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td><div align="center"><strong><span class="style1">TEM&Aacute;TICA</span></strong></div></td>
    </tr>
  </table>
  <table width="234" border="0">
    <tr>
      <td><? if (count($_POST['nomCat']) > 0) { 
                    foreach(
$_POST["nomCat"] as $nomCat
                    { 
                        
//echo "<br>DNI: "."$dni"; 
                    
?> 
                        <input type="hidden" name="nomCat[]" value="<? echo $nomCat?>" > 
                    <? 
                    

                }  
                
                if (
count($_POST['nombreAut']) > 0) { 
                    foreach(
$_POST["nombreAut"] as $nomAut
                    { 
                        
//echo "<br>DNI: "."$dni"; 
                    
?> 
                        <input type="hidden" name="nombreAut[]" value="<? echo $nomAut?>" > 
                    <? 
                    

                }              
      
              if(
count($_POST['nomTema']) > 0)
            {
                foreach(
$_POST["nomTema"] as $nomTema)
                {
                    
//echo "<br>DNI: "."$dni";
                
?>
                    <input type="hidden" name="nomTema[]" value="<? echo $nomTema?>" >
    <tr>
                      <td>TEMA: </td>
                      <td><? echo $nomTema; echo "<br>"?></td></tr>
                <?
                

            }
        
?> 
       </td>
      <td width="67">Nombre:</td>
      <td width="157"><input type="text" name="nomTema[]"></td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="499" border="0">
    <tr>
      <td width="481"><div align="right">
        <input type="submit" name="AnyadirTema" value="A&ntilde;adir Tema">
      </div></td>
    </tr>
  </table>
GRACIAS!!!!

PD: esta claro que todo va dentro de un solo form...

Última edición por CapiCapi; 08/05/2005 a las 14:05
  #2 (permalink)  
Antiguo 09/05/2005, 02:00
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Deberías especificar qué errores tienes y qué es lo que pretendes hacer...

Puedo ver que tienes tres textbox's... supongo ingresas un dato, lo enlistas.. pero al vlver a ingresar otro dato te "lo repite varias veces"...

He visto que repites estas líneas:
Código PHP:
if (count($_POST['nomCat']) > 0) {
                    foreach($_POST["nomCat"] as $nomCat)
                    {
                        //echo "<br>DNI: "."$dni";
                    ?>
                        <input type="hidden" name="nomCat[]" value="<? echo $nomCat?>" >
                    <?
                    
}
                }
... vayamos desde el principio... abriendo desde 0 ¿no te da error de índice no definido??... Haces un if (count($_POST['nomCat']... pero si partes de cero $_POST['nomCat'] simplemente no existe aún...

... ok envias un dato... ... mira, como todo lo tienes dentro de un mismo form, todos los datos serán enviados... tendrás campos vacios... ok!, pero así se recojerán... entonces, aunque envies un campo vacio... ahora sí cumplen las partes en las que tienes cosas como esta: if (count($_POST['nomCat']) > 0)... como siempre vaz a recojer los datos, aún estadno vacios ( incisto), siempre se cumplirá dicha condición, entonces entrará en tu foreach e imprimirá los campos ocultos como lo indicas: <input type="hidden" name="nomCat[]" value="<? echo $nomCat; ?>" >... ahora, como repites esas "impresiones" en varias partes de tu formulario... veo dos a simple vista... súmale!, esos dos campos ocultos tendrán los mismos datos (value="...") y un mismo name que "tu textbox visible" (el original)... entonces para la otra que envies se recojerán dos campos con los mismos datos... más tu textbox original... ¿llevamos?? tres... entonces se impimirán 4 campos ocultos con los mismos datos (enviaste 2 pero repites la impresión) que corresponderán a tu primer registro... más 2 nuevos campos igual ocultos con tu nuevo registro... más tu campo original.. ¿llevamos? ... 7! ... etc... ve com estás trabajando... añade que estamos enviando datos de un solo textbox... pero los otros campos vacios igual se irán agregando... no alcanzo a ver si eso igual te duplicaria (nuevamente) los registros... ....

Espero haberme dado a entender... al menos por eso se da el comportamiento de "repetir" registros... solución?? no sé... sesiones?, índices predefinidos?, manejar los campos como formularios independientes?, validaciones del tipo empty($_POST['...'])?, actuar dependiendo del name de un botón clickeado?.... No entendiendo bien lo que buscas... creo todas esas serían soluciones viables... quizá combinaciones de algunas... ... piensalo bien.

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 09/05/2005, 02:28
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Lo nuevo que he hecho ha sido crearme los array al principio de la pagina:

Código PHP:
<form action="AnyadirDoc.php" method="post" enctype="multipart/form-data" name="form1">
<? if (!empty($_POST['nombreAut']))
{
?>
<input type="hidden" name="nombreAut[]" value="<? echo $nomAut?>">
<?
}
?>

<? if (!empty($_POST['nomCat']))
{
?>
<input type="hidden" name="nomCat[]" value="<? echo $nomCat?>" >
<?
}
?>

<? if (!empty($_POST['nomTema']))
{
?>
<input type="hidden" name="nomTema[]" value="<? echo $nomTema?>" ><?
}
?>
Y luego en cada textbox con el boton añadir hago esto:

Código PHP:
 <table width="608" border="0">
    <tr>
      <td><? if(count($_POST['nombreAut']) > 0)
            {
                foreach(
$_POST["nombreAut"] as $nomAut)
                {
                    
//echo "<br>DNI: "."$dni";
                
?>
    <tr><td>AUTOR: </td><td><? echo $nomAut; echo "<br>"?></td></tr>
                <?
                

            }
        
?> 
       </td>
      <td width="135">Nombre y Apellidos:</td>
      <td width="463"><input type="text" name="nombreAut[]" width="450"></td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="487" border="0">
    <tr>
      <td width="481"><div align="right">
        <input type="submit" name="AnyadirAutor" value="Añadir Autor">
      </div></td>
    </tr>
  </table>
  
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="521" border="0">
    <tr>
      <td width="224" height="38"><div align="center"><strong><span class="style1">CAT&Aacute;LOGO/S ASOCIADOS </span></strong></div></td>
    </tr>
  </table>
  <table width="234" border="0">
    <tr>
      <td><? if(count($_POST['nomCat']) > 0)
            {
                foreach(
$_POST["nomCat"] as $nomCat)
                {
                    
//echo "<br>DNI: "."$dni";
                
?>
                    
    <tr><td>CATÁLOGO: </td><td><? echo $nomCat; echo "<br>"?></td></tr>
                <?
                

            }
        
?> 
       </td>
      <td width="67">Nombre:</td>
        <td width="157"><input type="text" name="nomCat[]"></td>
      </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="499" border="0">
    <tr>
      <td width="481"><div align="right">
          <input type="submit" name="AsignarCatalogo" value="Asignar Catálogo">
      </div></td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td><div align="center"><strong><span class="style1">TEM&Aacute;TICA</span></strong></div></td>
    </tr>
  </table>
  <table width="234" border="0">
    <tr>
      <td><? if(count($_POST['nomTema']) > 0)
            {
                foreach(
$_POST["nomTema"] as $nomTema)
                {
                    
//echo "<br>DNI: "."$dni";
                
?>
                    
    <tr>
                      <td>TEMA: </td>
                      <td><? echo $nomTema; echo "<br>"?></td></tr>
                <?
                

            }
        
?> 
       </td>
      <td width="67">Nombre:</td>
      <td width="157"><input type="text" name="nomTema[]"></td>
    </tr>
  </table>
  <table width="200" border="0">
    <tr>
      <td>&nbsp;</td>
    </tr>
  </table>
  <table width="499" border="0">
    <tr>
      <td width="481"><div align="right">
        <input type="submit" name="AnyadirTema" value="A&ntilde;adir Tema">
      </div></td>
    </tr>
  </table>
Mi problema es que se siguen repitiendo... Una ayuda please!!!!
  #4 (permalink)  
Antiguo 09/05/2005, 03:11
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
¿se siguen repitiendo??... .. según yo ni debería de servir .. según yo... si inicias tu script con esto:
Código PHP:
<form action="AnyadirDoc.php" method="post" enctype="multipart/form-data" name="form1">
<? if (!empty($_POST['nombreAut']))
{
?>
<input type="hidden" name="nombreAut[]" value="<? echo $nomAut?>">
<?
}
?>
... ve cómo $nomAut a "esta altura" no ha tomado ningún valor... antes iria el foreach... .. de verdad me extraña que te funcione... ¿lo podrás poner en línea para verlo funcionar??...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 09/05/2005, 03:18
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Me hace cosas raras, mira, esta en linea; accede y me cuentas:
http://158.42.178.140/admin/anyadirdoc.php

Gracias!!!
  #6 (permalink)  
Antiguo 09/05/2005, 03:22
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Los problemas son que solo puedo añadir dos, porque en lugar de añadirselo al array lo que hago es que tome el valor del text y "chafa" a los demas, y otro problema es que en los demas tambien se añaden aunque esten en blanco...
  #7 (permalink)  
Antiguo 09/05/2005, 03:24
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... lo siento.. no puedo acceder... aunque tengo una conexión lenta.. no creo que sea el problema (estoy navegando aquí ahora )... ...

Oyes... ahora se me ocurre... ¿haz intentado adaptar un script de carrito de compras??... algo sencillo, creo te podría servir... me late, no lo sé... me parece que hay uno en desarrolloweb.com ...

Seguiré intentando... Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 09/05/2005, 04:07
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Un script de carrito de compra??? Buffff, no tengo muy claro como ira, de todas formas ahora le hecho un vistazo, si se t ocurre algo dimelo...
  #9 (permalink)  
Antiguo 09/05/2005, 04:21
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Lo del carrito va por sesion, y quiero intentar no hacerlo con sesiones...
  #10 (permalink)  
Antiguo 09/05/2005, 04:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Pero es mejor opción el uso de sesiones... .. como sea.. Oyes, en serio, no me abre tu enlace... ¿?
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 09/05/2005, 05:03
 
Fecha de Ingreso: mayo-2005
Mensajes: 78
Antigüedad: 12 años, 7 meses
Puntos: 0
Pues a mi si, prueba a http://158.42.178.140/usuario y entra como usuario: admin y como pass: admin accede, y luego ves a la izquierda a documentos y añadir...
  #12 (permalink)  
Antiguo 09/05/2005, 05:15
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Nop... simplemente no puede conectarse con http://158.42.178.140 ...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 04:06.