Foros del Web » Programando para Internet » PHP »

Problemas con switch y formulario

Estas en el tema de Problemas con switch y formulario en el foro de PHP en Foros del Web. Hola chicos! Ya no sé qué hacer, llevo toda la tarde con lo mismo y no consigo hacer que funcione. El caso es que he ...
  #1 (permalink)  
Antiguo 18/08/2006, 11:21
 
Fecha de Ingreso: octubre-2003
Ubicación: FMSite
Mensajes: 336
Antigüedad: 14 años, 1 mes
Puntos: 2
Problemas con switch y formulario

Hola chicos!

Ya no sé qué hacer, llevo toda la tarde con lo mismo y no consigo hacer que funcione.
El caso es que he hecho miles de consultas iguales y sólo me da problemas esta.
Tengo hecho un switch() donde tengo toda la planta del admin. Bien, el problema está al editar la clasificación de la temporada donde edito los partidos jugador, goles a favor etc. tengo hecha una consulta, y dentro de esa consulta se crean formularios, resumiento:
Código PHP:
<table>
<? .......
while(
$row = ..........){ ?>
<form name="form1" method="post" action="?act=admin&pg=edit_club">
<tr>
<td></td>
<td><input type="submit" name="Submit4232" value="Editar" class="texto"></td>
<td>.......</td>
</tr>
</form>
<? ?>
</table>
como veis, el formulario nos llevará a www.dominio.com/?act=admin&pg=edit_club
y si todo fuera bien y nos llevara a esa página, nos pondría un mensaje de Enhorabuena.
El problema es que cuando le doy al botón Editar, me manda a esa página, pero no la muestra, como si no existiera me manda a "default:" donde está el índice del Admin.
Pero si en el navegador ponemos ?act=admin&pg=edit_club, nos muestra el "Enhorabuena".

Porqué sucede esto? Dónde puede estar el error?

Por favor, ojalá puedan ayudarme.

Gracias anticipadas!
__________________
http://www.fmsite.net/
  #2 (permalink)  
Antiguo 18/08/2006, 11:51
 
Fecha de Ingreso: octubre-2005
Mensajes: 85
Antigüedad: 12 años, 1 mes
Puntos: 0
uhm podria ser porke no puedes tener en una misma pagina varios formularios kon el mismo nombre
  #3 (permalink)  
Antiguo 18/08/2006, 12:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y donde está ese "swith()" .. Pon todo el código que uses completo ..

por qué no propagas estas variables:
action="?act=admin&pg=edit_club

En campos hidden de tu formulario . .así todo viajará en el mismo metodo que el resto de datos .. según configures en tu method del formulario .. sea POST o GET y así los tomaras en tu script PHP de proceso.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 18/08/2006, 13:16
 
Fecha de Ingreso: octubre-2003
Ubicación: FMSite
Mensajes: 336
Antigüedad: 14 años, 1 mes
Puntos: 2
Hola,

Gracias a ambos por contestar, ahora paso a pegaros las partes del código:

Código PHP:
<? switch($pg){
default: 
?><center>
        <a href="?act=admin&pg=marcador">Marcador</a> | <a href="?act=admin&pg=noti">Noticias</a> 
        | <a href="?act=admin&pg=fichajes">Fichajes</a> | <a href="?act=admin&pg=clasif">Clasificaci&oacute;n</a> 
      </center>
      <? break;
case 
clasif?>
      <table width="99%" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr> 
          <td width="54%"><FORM ACTION="?act=admin&pg=edit_clasif" METHOD="post" name="form" id="form">
              <strong><font size="2">Seleccione A&ntilde;o</font></strong><br>
              <select name="anyo">
                <option selected>Seleccionar año 
                <option value="2004">2004
                <option value="2005">2005
                <option value="2006">2006
                <option value="2007">2007 
              </select>
              <input name="submit222" type="submit" class="boton" value="Editar">
            </FORM></td>
          <td width="46%"><div align="center"><a href="?act=admin&pg=new_club">Agregar 
              Equipo</a><br>
            </div></td>
        </tr>
      </table>
      <?
      
break;
case 
edit_clasif?>
      <table width="99%" border="0" align="center">
        <tr> 
          <td width="238"> <p><em><font size="2">Nombre</font></em></p></td>
          <td width="31"><em><font size="2" title="Partido Ganado">P.G</font></em></td>
          <td width="34"><em><font size="2" title="Partido Empatado">P.E.</font></em></td>
          <td width="34"><em><font size="2" title="Partido Perdido">P.P.</font></em></td>
          <td width="33"><em><font size="2" title="Goles a Favor">G.F</font></em></td>
          <td width="33"><em><font size="2" title="Goles en Contra">G.C</font></em></td>
          <td width="34"><em><font size="2" title="Puntos">Pts</font></em></td>
          <td width="50"> <div align="center">x</div></td>
        </tr>
        <?  
$i 
0;
$anyo $_POST['anyo'];
if(
$anyo == ''){
$anyo $_GET['anyo']; }
$sql "SELECT * FROM clasif WHERE anyo='$anyo' ORDER BY pts DESC, dif DESC, nombre";
$consulta mysql_db_query($dbname,$sql) or die (mysql_error()); 
while(
$row mysql_fetch_array($consulta)) { ?>
        <form name="form1<? echo $i++; ?>" method="post" action="?act=admin&pg=edit_club">
          <tr> 
            <td height="27"> <input name="nombre" type="text" class="texto" id="nombre" value="<? echo $row['nombre']; ?>" size="30" maxlength="20"> 
              <input name="id" type="hidden" class="texto" id="id3" value="<? echo $row['id']; ?>" size="4" maxlength="3"> 
              <input name="anyo" type="hidden" class="texto" id="id4" value="<? echo $row['anyo']; ?>" size="4" maxlength="3">
              <input name="act" type="hidden" class="texto" id="id6" value="admin" size="4" maxlength="3">
              <input name="pg" type="hidden" class="texto" id="id7" value="edit_club" size="4" maxlength="3"></td>
            <td width="31"><input name="pg" type="text" class="texto" id="pg" value="<? echo $row['pg']; ?>" size="4" maxlength="3"></td>
            <td width="34"><input name="pe" type="text" class="texto" id="pj4" value="<? echo $row['pe']; ?>" size="4" maxlength="3"></td>
            <td><input name="pp" type="text" class="texto" id="pj5" value="<? echo $row['pp']; ?>" size="4" maxlength="3"></td>
            <td><input name="gf" type="text" class="texto" id="gf" value="<? echo $row['gf']; ?>" size="4" maxlength="3"></td>
            <td><input name="gc" type="text" class="texto" id="gc" value="<? echo $row['gc']; ?>" size="4" maxlength="3"></td>
            <td><input name="pts" type="text" class="texto" id="pts" value="<? echo $row['pts']; ?>" size="4" maxlength="3" readonly></td>
            <td><input type="submit" name="Submit4232" value="Editar" class="texto"></td>
          </tr>
        </form>
        <? ?>
        <tr> 
          <td colspan="8">&nbsp;</td>
        </tr>
      </table> 
<?
break;
case 
edit_club:
$id $_POST['id'];
$nombre $_POST['nombre'];
$pg $_POST['pg'];
$pe $_POST['pe'];
$pp $_POST['pp'];
$pj $pg $pe $pp;
$gf $_POST['gf'];
$gc $_POST['gc'];
//$pts = $_POST['pts'];
$pts $pg*$pe;
$dif $gf $gc;
$anyo $_POST['anyo'];
$sql "UPDATE clasif set nombre='$nombre', pj='$pj', pg='$pg', pe='$pe', pp='$pp', gf='$gf', gc='$gc', pts='$pts', dif='$dif' WHERE id='$id'"
$rs mysql_query($sql$conexion) or die("Error al grabar un mensaje: ".mysql_error()); 
echo 
"<center><b>¡Clasificación editada con Éxito! <a href='?act=admin&pg=edit_clasif&anyo=".$anyo."'>Volver</a></b></center>";
      break; } 
?>
Esa es la parte de código donde puede allarse el problema.
Siento mucho que el código no esté formateado.

Bueno, cualquier duda en el código decidme, creo que con lo que expliqué antes os podeis aclarar más o menos.

Muchas gracias por atenderme.

Saludos!
__________________
http://www.fmsite.net/
  #5 (permalink)  
Antiguo 18/08/2006, 15:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé si el "orden de los factores alterará el producto", pero en una construcción tipo "switch" siempre he visto el caso "default:" al final del mismo .. además que es más "natural" bajo mi punto de vista leer y entender tu código así.

Si eso es todo el código que usas . .no veo claro que hagas:
$pg = $_POST['pg'];

en un "case" de ese switch() .. tienes que usar

Código PHP:
switch($_POST['pg']){

case: ...
break;

case: ....
break;

default:
   
el codigo del caso por defecto...

O bien tomas
$pg = $_POST['pg'];

al principio de tu código . .antes de entrar a tu "switch()" .. Lo mismo puede sucederte (me perdí con tanta variable y html por médio) con otras variables.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 19/08/2006, 06:12
 
Fecha de Ingreso: octubre-2003
Ubicación: FMSite
Mensajes: 336
Antigüedad: 14 años, 1 mes
Puntos: 2
Gracias Cluster, ahora funciona :)

No se me ocurrió poner el $_Post[] ni $_GET[] con el switch. Y tampoco sabía que el default se ponía en el final :o

Me queda una duda (nada que ver con esto, pero no creo que merezca la pena abrir un tema para eso solo), tengo una consulta donde saco datos de la BBDD, y en una de estas pongo un if, el siguiente código:

Código PHP:
<? 
$anyo 
$_GET['anyo'];
$sql "SELECT * FROM fichajes WHERE tipo='2' and anyo='$anyo' ORDER BY id DESC";
$con mysql_db_query($dbname$sql) or die(mysql_error());
while (
$row mysql_fetch_array($con)){ 
 echo 
$row['apodo']; ?> 
<? if($row['link'] =! ''){ ?>
                  &nbsp;<a href="<? echo $row['link']; ?>"><img src="../images/ficha.gif" width="7" height="7" border="0"></a> 
<? ?>
Como ves, si $row['link'] tiene contenido, muestra la imagen. $row['link'], en la BBDD tiene links (está comprobado) a fichas de jugadores. Pero cuando abro la página, me carga links como este: www.urldelaweb.net/1

Sabes a qué se puede deber?

Muchas gracias!
__________________
http://www.fmsite.net/
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:01.