Duda y problema con PHP

Buenas, estaba aqui trasteando con php, y me ha surgido un problemilla, a ver comento, tengo estos 3 archivos:
bbddconex.php --> Es el que utilizo para conectarme a la bbdd
<?php

// set your infomation.
$dbhost='localhost';
$dbusername='root';
$dbuserpass='';
$dbname='profesores';

// connect to the mysql database server.
$link_id = mysql_connect ($dbhost, $dbusername, $dbuserpass);

if (!mysql_select_db($dbname, $link_id)) die(mysql_error());

?>

entrada.html --> Es la entrada de datos mediante un formulario
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>

<form action="insert.php" method="post">

<table width="599" border="0">
<tr>
<td width="200"><div align="right"><em>Nombre:</em></div></td>
<td width="389"><input type="text" name="nombre" maxlength="30" size="40"/></td>
</tr>
<tr>
<td><div align="right"><em>Primer Apellido:</em></div></td>
<td><input type="text" name="apellido1" maxlength="30" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Segundo Apellido:</em></div></td>
<td><input type="text" name="apellido2" maxlength="30" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>N.I.F:</em></div></td>
<td><input type="text" name="nif" maxlength="10" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Correo electrónico:</em></div></td>
<td><input type="text" name="email" maxlength="30" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Teléfono:</em></div></td>
<td><input type="text" name="telefonopersonal" maxlength="10" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Página Web:</em></div></td>
<td><input type="text" name="webpersonal" maxlength="30" size="40" /></td>
</tr>
</table>

<br />
<br />
<br />

<table width="599" border="0">
<tr>
<td width="200"><div align="right"><em>Correo electrónico:</em></div></td>
<td width="389"><input type="text" name="emailtrabajo" maxlength="30" size="40"/></td>
</tr>
<tr>
<td><div align="right"><em>Teléfono:</em></div></td>
<td><input type="text" name="telefonotrabajo" maxlength="10" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Página Web:</em></div></td>
<td><input type="text" name="webtrabajo" maxlength="30" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Cargo:</em></div></td>
<td><input type="text" name="cargo" maxlength="10" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Asignaturas:</em></div></td>
<td><textarea name="asignaturas" rows="10" cols="40"></textarea></td>
</tr>
</table>

<br />
<br />
<br />
<table align="center">
<tr>
<td><input type="submit" name="Submit" value="ENVIAR FORMULARIO"></td>
<td><input type="reset" name="reset" value="LIMPIAR FORMULARIO"></td>
</tr>
</table>
</form>
<br />
<br />
<br />
</body>
</html>


insert.php --> Es el script que se encarga de insertar en bbdd los datos.

<html>
<head>
<title></title>
</head>
<body>
<?php
include ("bbddconex.php");

$sql = "INSERT INTO profesor (nombre, apellido1, apellido2, nif, email, emailtrabajo, telefonopersonal, telefonotrabajo, webpersonal, webtrabajo, cargo, asignaturas, activo) ". "VALUES ('$nombre', '$apellido1', '$qapellido2', '$nif', '$email', '$emailtrabajo', '$telefonopersonal', '$telefonotrabajo', '$webpersonal', '$webtrabajo', '$cargo', '$asignaturas', 'Activo')";
$result = mysql_query($sql);
echo "¡Gracias! Hemos recibido sus datos.\n";


?>
</body>
</html>


Bien, aparentemente todo esta ok, pero los datos no se introducen en la bbdd salvo el campo "Activo" es como si las variables no se pasaran del formulario al script, por eso este campo activosi se graba, ya que es un dato directamente, y no una variable.

A ver si me podeis decir por que pasa esto o cual podria ser la solución

Gracias
Las variables las estás pasando mediante un formulario (método POST), por tanto para meterlas en la base de datos sería $_POST[variable], y no directamente $variable
Muchas gracias, era eso, ahora ya va :P voy a seguir peleandome con esto :P
daniel_5 escribió:Muchas gracias, era eso, ahora ya va :P voy a seguir peleandome con esto :P


De nada ;)
Bueno sigo aqui trasteando, y como no mas dudas y mas loco me vuelo :P

Ahora la cuestion es editar esos campos.

El archivo de conexión a la bbdd es el mismo

Luego tengo
mostrardatoscompletos.php ---> Se encarga de mostrar los datos de la tabla, y de añadir al final de ella un enlace por cada elemento con su ID para modificarlo.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; chaset=ISO-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>
<body bgcolor="#FFFFCC">
<?php
include ("bbddconex.php");

$result = mysql_query("SELECT id, nombre, apellido1, apellido2, nif, email, emailtrabajo, telefonopersonal, movilpersonal, telefonotrabajo, telefonopersonal, webpersonal, webtrabajo, cargo, asignaturas FROM profesor");

if ($row = mysql_fetch_array($result))
{
echo "<table border = '0' style='border-width:thin'> \n";
echo "<tr>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Nombre</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Primer Apellido</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Segundo Apellido</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>N.I.F</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Email</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Email Trabajo</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Telf. Personal</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>M&oacute;vil Personal</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Telf. Trabajo</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>M&oacute;vil Trabajo</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Web Personal</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Web Trabajo</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Cargo</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Asignaturas</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Ver</td>
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Editar</td>   
<td bgcolor='#D6E3FC' style='font-weight:bold; font-style:oblique'>Eliminar</td>         
</tr> \n";
do
{
echo
"<tr><td>".$row["nombre"].
"</td><td>".$row["apellido1"].
"</td><td>".$row["apellido2"].
"</td><td>".$row["nif"].
"</td><td><a href=mailto:".$row["email"].">".$row["email"]."</a>".
"</td><td><a href=mailto:".$row["emailtrabajo"].">".$row["emailtrabajo"]."</a>".
"</td><td>".$row["telefonopersonal"].
"</td><td>".$row["movilpersonal"].
"</td><td>".$row["telefonotrabajo"].
"</td><td>".$row["moviltrabajo"].
"</td><td><a href=http://".$row["webpersonal"]. " target='_blank'>".$row["webpersonal"]."</a>".
"</td><td><a href=http://".$row["webtrabajo"]. " target='_blank'>".$row["webtrabajo"]."</a>".
"</td><td>".$row["cargo"].
"</td><td>".$row["asignaturas"].
"</td><td>"
?>   
<?php
$ID = $row["id"] ;
$ID --;
?>
<a href="mostrarprofindivual.php?idw=<?php echo $ID ?>">Ver Asignatura</a>
<?php echo "</td><td>" ?>
<a href="modificardatos.php?idw=<?php echo $ID ?>">Editar</a>
<?php echo "</td><td>" ?>
<a href="elimin.php?idw=<?php echo $ID ?>">Eliminar</a>
<?php echo "</td></tr> \n";
}
while ($row = mysql_fetch_array($result));
echo "</table> \n";
}
else
{
echo "¡ No se ha encontrado ningún registro !";
}

?>
</body>
</html>


modificardatos.php ---> Este archivo genera una ficha de los campos a editar, dependiendo del ID pasado muestra unos datos u otros

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
<?php
include ("bbddconex.php");

$result = mysql_query("SELECT id, nombre, apellido1, apellido2, nif, email, emailtrabajo, telefonopersonal, movilpersonal, telefonotrabajo, moviltrabajo, telefonopersonal, webpersonal, webtrabajo, cargo, asignaturas FROM profesor");

?>

<body bgcolor="#FFFFCC">
<fieldset style="border:1px solid blue; background-color:#D6E3FC">
<legend style="font-weight:bold; font-style:oblique">Datos Personales</legend>

<form action="modific.php?idw=<?php echo $idw + 1 ?>" method="post"  >

<table width="599" border="0">
<tr>
<td width="200"><div align="right"><em>Nombre:</em></div></td>
<td width="389"><input type="text" name="nombre" value="<?php echo mysql_result($result, $_GET["idw"], "nombre") ?>" maxlength="30" size="40"/></td>
</tr>
<tr>
<td><div align="right"><em>Primer Apellido:</em></div></td>
<td><input type="text" name="apellido1" value="<?php echo mysql_result($result, $_GET["idw"], "apellido1") ?>" maxlength="30" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Segundo Apellido:</em></div></td>
<td><input type="text" name="apellido2" value="<?php echo mysql_result($result, $_GET["idw"], "apellido2") ?>" maxlength="30" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>N.I.F:</em></div></td>
<td><input type="text" name="nif" value="<?php echo mysql_result($result, $_GET["idw"], "nif") ?>" maxlength="10" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Correo electrónico:</em></div></td>
<td><input type="text" name="email" value="<?php echo mysql_result($result, $_GET["idw"], "email") ?>" maxlength="30" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Teléfono Personal:</em></div></td>
<td><input type="text" name="telefonopersonal" value="<?php echo mysql_result($result, $_GET["idw"], "telefonopersonal") ?>" maxlength="10" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Móvil Personal:</em></div></td>
<td><input type="text" name="movilpersonal" value="<?php echo mysql_result($result, $_GET["idw"], "movilpersonal") ?>" maxlength="10" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Página Web:</em></div></td>
<td><input type="text" name="webpersonal" value="<?php echo mysql_result($result, $_GET["idw"], "webpersonal") ?>" maxlength="30" size="40" /></td>
</tr>
</table>
</fieldset>
<br />
<br />
<br />
<fieldset style="border:1px solid blue; background-color:#D6E3FC">
<legend style="font-weight:bold; font-style:oblique">Datos del Trabajo</legend>
<table width="599" border="0">
<tr>
<td width="200"><div align="right"><em>Correo electrónico:</em></div></td>
<td width="389"><input type="text" name="emailtrabajo" value="<?php echo mysql_result($result, $_GET["idw"], "emailtrabajo") ?>" maxlength="30" size="40"/></td>
</tr>
<tr>
<td><div align="right"><em>Teléfono Trabajo:</em></div></td>
<td><input type="text" name="telefonotrabajo" value="<?php echo mysql_result($result, $_GET["idw"], "telefonotrabajo") ?>" maxlength="10" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Móvil Trabajo:</em></div></td>
<td><input type="text" name="moviltrabajo" value="<?php echo mysql_result($result, $_GET["idw"], "moviltrabajo") ?>" maxlength="10" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Página Web:</em></div></td>
<td><input type="text" name="webtrabajo" value="<?php echo mysql_result($result, $_GET["idw"], "webtrabajo") ?>" maxlength="30" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Cargo:</em></div></td>
<td><input type="text" name="cargo" value="<?php echo mysql_result($result, $_GET["idw"], "cargo") ?>" maxlength="30" size="40" /></td>
</tr>
<tr>
<td><div align="right"><em>Asignaturas:</em></div></td>
<td><textarea name="asignaturas" value="<?php echo mysql_result($result, $_GET["idw"], "asignaturas") ?>" rows="10" cols="40"></textarea></td>
</tr>
</table>
</fieldset>
<br />
<br />
<br />
<table align="center">
<tr>
<td><input type="Submit" name="enviar" value="Modificar informaci&oacute;n"></td>
</tr>
</table>
<p>&nbsp;</p>
</form>
<br />
<br />
<br />
</body>
</html>


modific.php ---> Este archivo es el que generaría la consulta Mysql

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
</body>
</html>

<?php

include ("bbddconex.php");

if (isset ($_GET["idw"]))
{
// process form
//$idw --;
//echo $idw ;
//$sql = "SELECT * FROM asignatura WHERE id = $idw"
//$result = mysql_query($sql);
$sql = "UPDATE profesor SET nombre='$_POST[nombre]', apellido1='$_POST[apellido1]', apellido2='$_POST[apellido2]', nif='$_POST[nif]', email='$_POST[email]', emailtrabajo='$_POST[emailtrabajo]', telefonopersonal='$_POST[telefonopersonal]', movilpersonal='$_POST[movilpersonal]', telefonotrabajo='$_POST[telefonotrabajo]', moviltrabajo='$_POST[moviltrabajo]', webpersonal='$_POST[webpersonal]', webtrabajo='$_POST[webtrabajo]', cargo='$_POST[cargo]', asignaturas='$_POST[asignaturas]' WHERE id=$idw";
$result = mysql_query($sql);

}
else
{
echo "Debe especificar un 'id'.\n";
}
?>
</body>
</html>


En teoría todo funciona OK hasta que se deben de modificar los campos en la bbdd, los datos se muestran bien, las fichas se recuperan correctamente, pero al llegar a la parte de modificar los datos, no lo hace, es como si todo hubiera ido correcto, pero no es asi, creo que el problema sigue estando en el paso del ID, pero no doy con ello. Tampoco se me muestar niongun error de php o de mysql.

Gracias
La variable idw te la imprime bien? Yo la pondría con WHERE id='$_GET[idw]'
Buenas, que va la variable idw no la pone bien, la cuestión es que entre modificardatos.php y modific.php no se pasa la variable, ya que al poner un echo $_GET["idw"]; en modific.php siempre me imprime 1, aun así no modifica ese registro ni poniendo WHERE id='$_GET[idw]'

Gracias :)
Una pregunta, ¿cuando tu envías el formulario para modificar los datos, en la URL te sale la variable bien? Es que si no hay un problema al enviar el formulario
Buenas, parece que ya me funciona, no se por que pero directamente no me pilla la variable pasada por parámetro, y tengo que asignarsela a otra en el propio archivo de edición, haciendo esto si que me funciona sin problemas.

Saludos y gracias
daniel_5 escribió:Buenas, parece que ya me funciona, no se por que pero directamente no me pilla la variable pasada por parámetro, y tengo que asignarsela a otra en el propio archivo de edición, haciendo esto si que me funciona sin problemas.

Saludos y gracias


Me alegro de que te funcione :D, si tienes otra duda pregúntala
Seguimos con la historia esta :P

Ahora resulta que quiero cargar un Combo Box desde una BBDD MySQL, pue sbien, en principio, me lo carga bien, pero no desde donde yo quiero. pongo el codigo y luego comento.

Formulario donde se cargan los combobox
<?php
include ("../bbddconex.php");

$coord = mysql_query("SELECT id, nombre, apellido1, apellido2, activo FROM profesores WHERE activo != 'NULL'");
$otrprof = mysql_query("SELECT id, nombre, apellido1, apellido2, activo FROM profesores WHERE activo != 'NULL'");


$rowcoord = mysql_fetch_array($coord);
$rowotrprof = mysql_fetch_array($otrprof);


?>

<form action="insert.php" method="post" enctype="multipart/form-data" name="fvalida">
<table width="700" border="0">
<tr>
<td><div align="right"><em>Coordinador:</em></div></td>
<td>
<?php
if ($rowcoord = mysql_fetch_array($coord))
{
echo '<select name= "coordinador"> <option value="Null" selected="selected">';
do
{
echo '<option value= "'.$rowcoord["id"].'">'.$rowcoord["nombre"]." ".$rowcoord["apellido1"]." ".$rowcoord["apellido2"].'</option>';
}
while ($rowcoord = mysql_fetch_array($coord));
echo '</select>';
}
?>
</td>
</tr>
<tr>
<td><div align="right"><em>Otros Profesores:</em></div></td>
<td>
<?php
if ($rowotrprof = mysql_fetch_array($otrprof))
{
echo '<select name= "otrprofesores[]" multiple="multiple" size="5">';
do
{
echo '<option value= "'.$rowotrprof["id"].'">'.$rowotrprof["nombre"]." ".$rowotrprof["apellido1"]." ".$rowotrprof["apellido2"]." ID ".$rowotrprof["id"].'</option>';
}
while ($rowotrprof = mysql_fetch_array($otrprof));
echo '</select>';
}
?>
</td>
</tr>
</table>
</form>


Bien, los datos se cargan, pero no desde el primer elemento de la BBDD, digamos que se salta el primer elemento de la tabla :-?

Alguna solucion, o alguna idea??
A ver, porque no entiendo muy bien. ¿Se salta el id?
Si el ID 1 no lo muestra pero estar está, he encontrado una solucion un tanto chapucera y es hacer que el ID 1 no valga para nada y ponerlo todo a NULL pero no se si se puede mejorar y no hacer esta chapuza mejor XD,

resumiendo

Si el ID va del 1 al 20

En el combo se muestran del 2 al 20

Si va del 1 al 10

En el combo se muestran del 2 al 10 :P
Pon un asterisco a ver si va así. Es decir, en la query, en lugar de enumerar los campos que quieres recuperar de la BBDD, pon un asterisco para que los recupere todos.
No va, ya habia probado :P, me parece que lo voy a dejar asi, total pierdo un registro, y ese no aparecerá por ningun lado

Gracias ;)
15 respuestas