Foros del Web » Programando para Internet » PHP »

problema con conexion en mysql

Estas en el tema de problema con conexion en mysql en el foro de PHP en Foros del Web. Hola, creo que el problema (es pequeño) viene por la conexion al entrar en la pagina. La pagina es la siguiente: pagina Y si entrais ...
  #1 (permalink)  
Antiguo 25/08/2003, 12:00
 
Fecha de Ingreso: julio-2003
Ubicación: Benilloba/Valencia
Mensajes: 69
Antigüedad: 20 años, 9 meses
Puntos: 0
problema con conexion en mysql

Hola, creo que el problema (es pequeño) viene por la conexion al entrar en la pagina.

La pagina es la siguiente:
pagina

Y si entrais vereis donde en los cuadros que tiene que aparecer ( y aparece) las consultas a la base de datos, al principio cuando entro por primera vez en la pagina aparecen unos warnings que es lo que no quiero que aparezca. Prefiero que se quede en blanco a que aparezca eso. Alguien sabe por que??

Otra cosa es que cuando escojo el año arriba (el 2004 por ejemplo) y le doy al OK, me muestra bien la informacion que hay en la base de datos pero en la lista de arriba vuelve a aparecer el 2003 y eso es lo que me gustaria quitar, Como lo puedo hacer??

Aqui pongo el codigo de la web (lo siento, no se como se hace para que salga en colores):
<link href="textoweb/campo.css" rel="stylesheet" type="text/css">
<link href="textoweb/areatexto.css" rel="stylesheet" type="text/css">
<html>
<body leftmargin="18" topmargin="18">
<?
//conecto con la base de datos y devulto la conexion a $link
include("conex.php");
$link=Conectarse();
?>
<table width="640" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr>
<td height="31" colspan="4" valign="top"><img src="images/cabecera-mision.gif" width="630" height="25"></td>
<td width="10">&nbsp;</td>
</tr>
<tr>
<td height="22" colspan="4" valign="top"><!--DWLayoutEmptyCell-->&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td width="99" height="64" valign="top" class="campo">A&ntilde;o:</td>
<form name="form1" method="post" action="">
<td width="116" valign="top">
<?
//Realizo la consulta para mostrar el año

$result=mysql_query("Select anyo From mision",$link);

echo '<select name="anyo">';

while ($row=mysql_fetch_array($result))
{echo '<option>'.$row["anyo"];}
?>
</td>
<td width="39" valign="top"><input type="submit" name="Submit3" value="OK"></td>
</form>
<td width="376">&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>

<?
$con_histo="Select historia From mision Where anyo = $anyo";
$res_histo=mysql_query($con_histo,$link);

$con_prefe="Select preferencias From mision Where anyo = $anyo";
$res_prefe=mysql_query("$con_prefe",$link);

$con_facto="Select factores From mision Where anyo = $anyo";
$res_facto=mysql_query("$con_facto",$link);

$con_recu="Select recursos From mision Where anyo = $anyo";
$res_recu=mysql_query("$con_recu",$link);

$con_vent="Select ventajas From mision Where anyo = $anyo";
$res_vent=mysql_query("$con_vent",$link);

?>
<form name="form" method="post" action="act_mision.php">
<input type="hidden" name="anyo" value="<? echo $anyo ?>">
<table width="640" border="0" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr>
<td width="75" height="83" valign="top" class="campo">Historia:</td>
<td width="21" rowspan="5" valign="top"><!--DWLayoutEmptyCell-->&nbsp;</td>
<td colspan="3" valign="top"><textarea name="histo" cols="45" rows="3">
<?
$histo = mysql_result($res_histo,0,"historia");
echo $histo; ?></textarea> </td>
<td width="25">&nbsp;</td>
</tr>
<tr>
<td height="83" valign="top" class="campo">Preferencias actuales:</td>
<td colspan="3" valign="top"><textarea name="prefe" cols="45" rows="3">
<?
$prefe = mysql_result($res_prefe,0,"preferencias");
echo $prefe; ?></textarea> </td>
<td>&nbsp;</td>
</tr>
<tr>
<td height="83" valign="top" class="campo">Factores del entorno:</td>
<td colspan="3" valign="top"><textarea name="facto" cols="45" rows="3">
<?
$facto = mysql_result($res_facto,0,"factores");
echo $facto; ?></textarea> </td>
<td>&nbsp;</td>
</tr>
<tr>
<td height="83" valign="top" class="campo">Recursos de la organizaci&oacute;n:</td>
<td colspan="3" valign="top"><textarea name="recu" cols="45" rows="3">
<?
$recu = mysql_result($res_recu,0,"recursos");
echo $recu; ?></textarea> </td>
<td>&nbsp;</td>
</tr>
<tr>
<td height="83" valign="top" class="campo">Ventajas competitivas</td>
<td colspan="3" valign="top"><textarea name="vent" cols="45" rows="3">
<?
$vent = mysql_result($res_vent,0,"ventajas");
echo $vent; ?></textarea> </td>
<td></td>
</tr>
<tr>
<td height="24"></td>
<td></td>
<td width="120" valign="top"><input type="submit" name="Submit" value="Aceptar"></td></form>

<td width="105" valign="top">
<form name="form2" method="post" action="borrar_mision.php"><input type="submit" name="Submit2" value="Borrar"><input type="hidden" name="anyo" value="<? echo $anyo ?>">
</form></td>
<td width="294">&nbsp;</td>
<td></td>
</tr>
<tr>
<td height="3"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>

</html>

Gracias por todo.
  #2 (permalink)  
Antiguo 25/08/2003, 12:37
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 3 meses
Puntos: 5
Bueno, yo te sugeriría dos cosas...

1.- Haz UNA sola consulta a la BD...
2.- Trae los resultados en un array (fetch)
3.- Muestralos con echo cada uno...

Código PHP:
<?
// 1
$cons_mision="Select historia, preferencias, factores, recursos, ventajas From mision Where anyo = $anyo";
$query_mision=mysql_query($cons_mision);

//2
$res_mision=@mysql_fetch_array($query_mision);

//3
?>

** aqui todo tu html **

<textarea name="histo" cols="45" rows="3">
<?= $res_mision["historia"]; ?></textarea>

** etc etc **
Saludos!!
__________________
Manoloweb
  #3 (permalink)  
Antiguo 25/08/2003, 14:19
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Tu fallo es que la primera vez que se ejecuta el script la variable $anyo (la del select) no esta definida. Por eso las consultas tienen sintaxis incorrecta, mysql_query() devuelve false y da error cualquier intento de acceder a esos recordset. La solucion seria usar un valor por defecto en caso de que no este definida. Pon algo como:
Código PHP:
if (!isset($anyo)) $anyo=2003
al comienzo del script, suponiendo que la primera vez se muestren los valores de ese año.

Para que se quede mascado el año seleccionado, deberias saber que para eso en HTML debes poner el atributo selected en el <option> que quieres que este seleccionado. En este caso:
Código PHP:
 while ($row=mysql_fetch_array($result))
{
  if (
$anyo==$row["anyo"]) {
    echo 
'<option value="'.$row["anyo"].'" selected>'.$row["anyo"].'</option>';
  } else {
    echo 
'<option value="'.$row["anyo"].'">'.$row["anyo"].'</option>';
  }

Ademas, haz lo que comenta Manoloweb.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 25/08/2003, 16:24
 
Fecha de Ingreso: julio-2003
Ubicación: Benilloba/Valencia
Mensajes: 69
Antigüedad: 20 años, 9 meses
Puntos: 0
Ok, muchas gracias, ya pongo lo que me habeis dicho.

Gracias de nuevo.
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:06.