Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: viher en 5 Noviembre 2010, 16:23 pm



Título: problema update en php
Publicado por: viher en 5 Noviembre 2010, 16:23 pm
hola,estoy haciendo un sistema para editar el contenido de mi web,tengo el siguiente code que no me da error pero no me modifica los datos:

principal
Código
  1. <p align="center"><?php
  2.   include("config.php");
  3.   $link=Conectarse();
  4.   $result=mysql_query("select * from videos order by id desc",$link);
  5. ?>
  6. <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1 align="center">
  7.      <TR><TD>&nbsp;<B>Nombre</B></TD> <TD>&nbsp;<B>ID</B>&nbsp;</TD> <TD>&nbsp;&nbsp;</TD></TR>
  8. <?php      
  9.   while($row = mysql_fetch_array($result)) {
  10.   $id = $row["id"];
  11.      printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td><b><a href='editar_video.php?id=$id'>Editar</a></b></td></tr>", $row["nombre"],$row["id"]);
  12.   }
  13.   mysql_free_result($result);
  14.   mysql_close($link);
  15. ?>
  16. </table> </p>

editar_video.php
Código
  1. <html>
  2. <head>
  3.   <title>Enviar video</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <style type="text/css">
  6. body {
  7. background-color: #FCF;
  8. }
  9. </style>
  10. </head>
  11. <body><h1 align="center">Editar video</h1>
  12. <p>
  13.  <?
  14.   include("config.php");
  15. $id=$_GET['id'];
  16.  $link=Conectarse();
  17.   $result=mysql_query("select * from videos WHERE id=$id",$link);
  18.   while($row = mysql_fetch_array($result)) {
  19.   $id = $row["id"];
  20.   $nombre = $row["nombre"];
  21.   $embed = $row["embed"];
  22.   $img = $row["img"];
  23.   $dur = $row["dur"];
  24.   $porn1 = $row["porn1"];
  25.   $porn2 = $row["porn2"];
  26.   $cat1 = $row["cat1"];
  27.   $cat2 = $row["cat2"];
  28.   }
  29.   mysql_free_result($result);
  30.   mysql_close($link);
  31. ?>
  32. </p>
  33.   <form name="form1" method="post" action="editado.php">
  34.       <p>Nombre del video:
  35.       <input name="nombre" type="text" value="<? echo $nombre ?>" size="40" maxlength="40" />
  36.     </p>
  37.       <p>Código embed del video:
  38.         <label>
  39.           <br>
  40.           <textarea name="textarea" id="textarea" cols="45" rows="5"><? echo $embed ?></textarea>
  41.         </label>
  42.       </p>
  43.       <p>Ruta de la imagen del video:
  44.         <input name="img" type="text" value="<? echo $img ?>" size="50" />
  45.     </p>
  46.       <p>Duración del video:
  47.         <input name="dur" type="text" value="<? echo $dur ?>" size="20" />
  48.     </p>
  49.       <p>Pornstar 1:
  50.         <input name="porn1" type="text" value="<? echo $porn1 ?>" size="40" />
  51.     </p>
  52.       <p>Pornstar 2:
  53.         <input name="porn2" type="text" value="<? echo $porn2 ?>" size="40" />
  54.     </p>
  55.       <p>Categoría del video:
  56.         <label for="select"></label>
  57.         <input name="cat1" type="text" value="<? echo $cat1 ?>" size="40" />
  58.       </p>
  59.       <p>Subcategoría del video:      
  60.         <input name="cat2" type="text" value="<? echo $cat2 ?>" size="40" />
  61.       </p>
  62.       <p>
  63.         <input type="submit" value="Actualizar" name="ir"/>
  64.       </p>
  65. </form>
  66. </body>
  67. </html>

editado.php
Código
  1. <html>
  2. <head>
  3.   <title>Enviar video</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <style type="text/css">
  6. body {
  7. background-color: #FCF;
  8. }
  9. </style>
  10. </head>
  11. <body><h1 align="center">Editar video</h1>
  12. <?
  13.  $host="localhost";
  14. $user="userpass";
  15. $db="bd";
  16.  
  17.        //Aqui recibimos las variables a actualizar
  18.  
  19.   $id=$_POST['id'];
  20.   $porn1=$_POST['porn1'];
  21.   $porn2=$_POST['porn2'];
  22.   $nombre=$_POST['nombre'];
  23.   $embed=$_POST['embed'];  
  24.   $cat=$_POST['cat'];
  25.   $cat2=$_POST['cat2'];
  26.   $img=$_POST['img'];
  27.   $dur=$_POST['dur']." minutos";
  28.  
  29.        //Creamos la conexión
  30.  
  31.        $link = mysql_connect($host, $user, $passwd);
  32. mysql_select_db($db, $link);
  33.  
  34.        //aqui preguntamos si hicieron click en el boton actualizar
  35.        if($_POST['ir']=="Actualizar")
  36.       {
  37.              $sql=mysql_query("update [/videos] set nombre='$nombre', embed='$embed', img='$img', cat1='$cat1', cat2='$cat2', porn1='$porn1', porn2='$porn2', dur='$dur' where [/id]='$id'",$link);
  38.              echo "Actualizado correctamente";
  39.        }
  40.       else
  41.       {
  42.           echo "Error al editar el video.";
  43.        }
  44. ?>
  45. </body>
  46. </html>

que es lo que está mal? gracias


Título: Re: problema update en php
Publicado por: seele en 5 Noviembre 2010, 16:31 pm
primero que nada... tienes los errores de php activos?
agrega los errores de mysql_error() tambien supongo que viene por ahi el asunto

saludos


Título: Re: problema update en php
Publicado por: viher en 5 Noviembre 2010, 16:43 pm
no me da ningún error despues de usar  mysql_error();


Título: Re: problema update en php
Publicado por: seele en 5 Noviembre 2010, 16:46 pm
llegan bien las variables por $_POST, has un print_r

Código:
print_r($_POST);


Título: Re: problema update en php
Publicado por: xassiz~ en 5 Noviembre 2010, 21:32 pm
Ese [/videos] es un error al postear el code no?

Código
  1. if(isset($_POST['ir'])
  2. {
  3.              $sql=mysql_query("UPDATE videos set nombre='$nombre', embed='$embed', img='$img', cat1='$cat1', cat2='$cat2', porn1='$porn1', porn2='$porn2', dur='$dur' where id='$id'",$link);
  4.              echo "Actualizado correctamente";
  5. }
  6.  

Y deberías escapar todas esas variables con mysql_real_escape_string() (http://php.net/manual/es/function.mysql-real-escape-string.php).

Saludos ;)


Título: Re: problema update en php
Publicado por: viher en 6 Noviembre 2010, 16:55 pm
aqui tengo el codigo

Código
  1. <?
  2.  $host="localhost";
  3. $user="user";
  4. $passwd="pass";
  5. $db="bd";
  6.        //Aqui recibimos las variables a actualizar
  7.   $id=$_GET['id'];
  8.   $porn1=$_POST['porn1'];
  9.   $porn2=$_POST['porn2'];
  10.   $nombre=$_POST['nombre'];
  11.   $embed=$_POST['embed'];  
  12.   $cat=$_POST['cat'];
  13.   $cat2=$_POST['cat2'];
  14.   $img=$_POST['img'];
  15.   $dur=$_POST['dur']." minutos";
  16.        //Creamos la conexión
  17.        $link = mysql_connect($host, $user, $passwd);
  18. mysql_select_db($db, $link);
  19.              $sql=mysql_query("UPDATE videos set nombre='$nombre', embed='$embed', img='$img', cat='$cat', cat2='$cat2', porn1='$porn1', porn2='$porn2', dur='$dur's where id='$id'",$link);
  20.              echo "Actualizado correctamente<br>";
  21.  echo $id."<br>";
  22.  echo $nombre."<br>";
  23.  echo $img."<br>";
  24.  echo $cat."<br>";
  25.  echo $cat2."<br>";
  26.  echo $dur."<br>";
  27.  echo $porn1."<br>";
  28.  echo $porn2."<br>";
  29.  echo "<h2 align=center><a href=index.php?id=edit>Editar otro video</a></h2>";
  30. ?>

el problema es que solo me actualiza los registros $nombre y $dur, todos los demás me los actualiza en blanco,a pesar de que las variables las recibe bien en el "echo" del final. porque? gracias!


Título: Re: problema update en php
Publicado por: viher en 9 Noviembre 2010, 21:15 pm
aqui tengo el codigo

Código
  1. <?
  2.  $host="localhost";
  3. $user="user";
  4. $passwd="pass";
  5. $db="bd";
  6.        //Aqui recibimos las variables a actualizar
  7.   $id=$_GET['id'];
  8.   $porn1=$_POST['porn1'];
  9.   $porn2=$_POST['porn2'];
  10.   $nombre=$_POST['nombre'];
  11.   $embed=$_POST['embed'];  
  12.   $cat=$_POST['cat'];
  13.   $cat2=$_POST['cat2'];
  14.   $img=$_POST['img'];
  15.   $dur=$_POST['dur']." minutos";
  16.        //Creamos la conexión
  17.        $link = mysql_connect($host, $user, $passwd);
  18. mysql_select_db($db, $link);
  19.              $sql=mysql_query("UPDATE videos set nombre='$nombre', embed='$embed', img='$img', cat='$cat', cat2='$cat2', porn1='$porn1', porn2='$porn2', dur='$dur's where id='$id'",$link);
  20.              echo "Actualizado correctamente<br>";
  21.  echo $id."<br>";
  22.  echo $nombre."<br>";
  23.  echo $img."<br>";
  24.  echo $cat."<br>";
  25.  echo $cat2."<br>";
  26.  echo $dur."<br>";
  27.  echo $porn1."<br>";
  28.  echo $porn2."<br>";
  29.  echo "<h2 align=center><a href=index.php?id=edit>Editar otro video</a></h2>";
  30. ?>

el problema es que solo me actualiza los registros $nombre y $dur, todos los demás me los actualiza en blanco,a pesar de que las variables las recibe bien en el "echo" del final. porque? gracias!

alguien sabe por que pasa esto? gracias!


Título: Re: problema update en php
Publicado por: Shell Root en 9 Noviembre 2010, 21:34 pm
Intenta visualizar la query,
Código
  1. $sSQL = "UPDATE videos
  2. SET nombre='$nombre', embed='$embed', img='$img', cat='$cat', cat2='$cat2', porn1='$porn1', porn2='$porn2', dur='$dur's
  3. WHERE id='$id'";
  4. PRINT $sSQL;
  5. //$sQuery = mysql_query($sSQL, $link);


Título: Re: problema update en php
Publicado por: viher en 9 Noviembre 2010, 23:21 pm
no me devuelve nada  :-\

Código
  1. <?
  2.  $host="localhost";
  3. $user="rapmadri_general";
  4. $passwd="181302";
  5. $db="rapmadri_graffitiongirls";
  6.        //Aqui recibimos las variables a actualizar
  7.   $id=$_GET['id'];
  8.   $porn1=$_POST['porn1'];
  9.   $porn2=$_POST['porn2'];
  10.   $nombre=$_POST['nombre'];
  11.   $embed=$_POST['embed'];  
  12.   $cat=$_POST['cat'];
  13.   $cat2=$_POST['cat2'];
  14.   $img=$_POST['img'];
  15.   $dur=$_POST['dur']." minutos";
  16.        //Creamos la conexión
  17.        $link = mysql_connect($host, $user, $passwd);
  18. mysql_select_db($db, $link);
  19.              $sql=mysql_query("UPDATE videos set nombre='$nombre', embed='$embed', img='$img', cat='$cat', cat2='$cat2', porn1='$porn1', porn2='$porn2', dur='$dur's where id='$id'",$link);
  20.              echo "Actualizado correctamente<br>";
  21.  echo "<h2 align=center><a href=index.php?id=edit>Editar otro video</a></h2>";
  22.  Print $sql;
  23. ?>


Título: Re: problema update en php
Publicado por: Shell Root en 9 Noviembre 2010, 23:54 pm
Lee el código que te pusé, tiene una diferencia muy grande al que tienes actualmente.  :silbar:


Título: Re: problema update en php
Publicado por: bizco en 10 Noviembre 2010, 00:11 am
muestra por pantalla el mysql_error pq estas haciendo las cosas a ciegas. ¿no hay una s ahi perdida o me lo parece?


Título: Re: problema update en php
Publicado por: viher en 10 Noviembre 2010, 00:17 am
Código
  1. <?
  2.  $host="localhost";
  3. $user="userl";
  4. $passwd="pass";
  5. $db="bd";
  6.        //Aqui recibimos las variables a actualizar
  7.   $id=$_GET['id'];
  8.   $porn1=$_POST['porn1'];
  9.   $porn2=$_POST['porn2'];
  10.   $nombre=$_POST['nombre'];
  11.   $embed=$_POST['embed'];  
  12.   $cat=$_POST['cat'];
  13.   $cat2=$_POST['cat2'];
  14.   $img=$_POST['img'];
  15.   $dur=$_POST['dur']." minutos";
  16.        //Creamos la conexión
  17.        $link = mysql_connect($host, $user, $passwd);
  18. mysql_select_db($db, $link);
  19.              $sSQL = "UPDATE videos SET nombre='$nombre', embed='$embed', img='$img', cat='$cat', cat2='$cat2', porn1='$porn1', porn2='$porn2', dur='$dur' WHERE id='$id'";
  20. PRINT $sSQL;
  21.              echo "Actualizado correctamente<br>";
  22.  echo "<h2 align=center><a href=index.php?id=edit>Editar otro video</a></h2>";
  23. ?>

esto es lo que me devuelve

Código
  1. UPDATE videos SET nombre='a', embed='', img='c', cat='', cat2='h', porn1='e', porn2='f', dur='d minutos minutos's WHERE id='1603'Actualizado correctamente

y embed me sale vacío cuando es el campo que he editado


Título: Re: problema update en php
Publicado por: Shell Root en 10 Noviembre 2010, 00:25 am
Exacto, este es el punto que quiero tocar... Mirad la sentencia SQL, y como bien te lo dijo @bizco, hay una s que interfiere con la query.
Código
  1. UPDATE videos SET nombre='a', embed='', img='c', cat='', cat2='h', porn1='e', porn2='f', dur='d minutos minutos's WHERE id='1603'

debería ser así, y el ID supongo que es númerico o es un varchar?
Código
  1. UPDATE videos SET nombre='a', embed='', img='c', cat='', cat2='h', porn1='e', porn2='f', dur='d minutos minutos' WHERE id=1603


Título: Re: problema update en php
Publicado por: bizco en 10 Noviembre 2010, 00:27 am
viher ahi en eso que pones no veo donde haces la consulta, esta la cadena pero no ejecutas la consulta. de todos modos mira lo que dice Shell Root y acostumbra a manejar los posibles errores y no tenrdras estos problemas.


Título: Re: problema update en php
Publicado por: viher en 10 Noviembre 2010, 00:37 am
Código
  1. <?
  2.  $host="localhost";
  3. $user="rapmadri_general";
  4. $passwd="181302";
  5. $db="rapmadri_graffitiongirls";
  6.        //Aqui recibimos las variables a actualizar
  7.   $id=$_GET['id'];
  8.   $porn1=$_POST['porn1'];
  9.   $porn2=$_POST['porn2'];
  10.   $nombre=$_POST['nombre'];
  11.   $embed=$_POST['embed'];  
  12.   $cat=$_POST['cat'];
  13.   $cat2=$_POST['cat2'];
  14.   $img=$_POST['img'];
  15.   $dur=$_POST['dur']." minutos";
  16.        //Creamos la conexión
  17.        $link = mysql_connect($host, $user, $passwd);
  18. mysql_select_db($db, $link);
  19.               mysql_query("UPDATE videos SET nombre='$nombre', embed='$embed', img='$img', cat='$cat', cat2='$cat2', porn1='$porn1', porn2='$porn2', dur='$dur' WHERE id='$id')",$link);
  20. PRINT $sSQL;
  21.              echo "Actualizado correctamente<br>";
  22.  echo "<h2 align=center><a href=index.php?id=edit>Editar otro video</a></h2>";
  23. ?>

ejecute la consulta pero aun asi sige igual,y como hago para poner los posibles errores? gracias


Título: Re: problema update en php
Publicado por: bizco en 10 Noviembre 2010, 00:45 am
http://php.net/manual/es/function.mysql-query.php ahi te lo explica todo.


Título: Re: problema update en php
Publicado por: Shell Root en 10 Noviembre 2010, 00:57 am
Por ejemplo,
Código
  1. $sLink = mysql_connect('localhost', 'mysql_user', 'mysql_password') or die("Error: ".mysql_error());
  2. #---
  3. mysql_query($sSQL, $sLink) or die("Error: ".mysql_error());


Título: Re: problema update en php
Publicado por: viher en 10 Noviembre 2010, 23:25 pm
Código
  1. <?
  2. $db="bd";
  3.        //Aqui recibimos las variables a actualizar
  4.   $id=$_GET['id'];
  5.   $porn1=$_POST['porn1'];
  6.   $porn2=$_POST['porn2'];
  7.   $nombre=$_POST['nombre'];
  8.   $embed=$_POST['embed'];  
  9.   $cat=$_POST['cat'];
  10.   $cat2=$_POST['cat2'];
  11.   $img=$_POST['img'];
  12.   $dur=$_POST['dur']." minutos";
  13.        //Creamos la conexión
  14.        $sLink = mysql_connect('localhost', 'user', 'pass') or die("Error: ".mysql_error());
  15. mysql_select_db($db, $sLink);
  16.              $sSQL = "UPDATE videos SET nombre='$nombre', embed='$embed', img='$img', cat='$cat', cat2='$cat2', porn1='$porn1', porn2='$porn2', dur='$dur' WHERE id='$id'" or die("Error: ".mysql_error());
  17. PRINT $sSQL;
  18.              echo "Actualizado correctamente<br>";
  19.  echo "<h2 align=center><a href=index.php?id=edit>Editar otro video</a></h2>";
  20. ?>

sige sin actualizarse pero no me devuelve ningún error



Título: Re: problema update en php
Publicado por: bizco en 10 Noviembre 2010, 23:38 pm
si no haces el query logico que no haga nada.


Título: Re: problema update en php
Publicado por: viher en 11 Noviembre 2010, 15:31 pm
Código
  1. <?
  2. $db="db";
  3.        //Aqui recibimos las variables a actualizar
  4.   $id=$_GET['id'];
  5.   $porn1=$_POST['porn1'];
  6.   $porn2=$_POST['porn2'];
  7.   $nombre=$_POST['nombre'];
  8.   $embed=$_POST['embed'];  
  9.   $cat=$_POST['cat'];
  10.   $cat2=$_POST['cat2'];
  11.   $img=$_POST['img'];
  12.   $dur=$_POST['dur']." minutos";
  13.        //Creamos la conexión
  14.        $sLink = mysql_connect('localhost', 'user', 'pass') or die("Error: ".mysql_error());
  15. mysql_select_db($db, $sLink);
  16.              $sSQL = "UPDATE videos SET nombre='$nombre', embed='$embed', img='$img', cat='$cat', cat2='$cat2', porn1='$porn1', porn2='$porn2', dur='$dur' WHERE id='$id'" or die("Error: ".mysql_error());
  17.  mysql_query($sSQL, $sLink) or die("Error: ".mysql_error());
  18. PRINT $sSQL;
  19.              echo "Actualizado correctamente<br>";
  20.  echo "<h2 align=center><a href=index.php?id=edit>Editar otro video</a></h2>";
  21. ?>

el problema que he visto es que he modificado el campo "embed" y me lo modifica pero en blanco,no recive bien el texto a modificar y se queda en blanco

esto es lo que me devuelve el PRINT $sSQL

Código
  1. UPDATE videos SET nombre='a', embed='', img='c', cat='', cat2='f', porn1='e', porn2='g', dur='d minutos minutos' WHERE id='1626'Actualizado correctamente


Título: Re: problema update en php
Publicado por: Shell Root en 11 Noviembre 2010, 19:12 pm
Poné la estructura de la base de datos, quiero ver el tipo de campo que es ID. Cuando ejecutas la consulta, te printea algún error?


Título: Re: problema update en php
Publicado por: viher en 11 Noviembre 2010, 22:49 pm
la estructura de ID es "int(10)" y no me printea ningún error


Título: Re: problema update en php
Publicado por: Shell Root en 12 Noviembre 2010, 00:26 am
Me lo suponia, como es un valor Entero, deberá pasarse como el valor que es, es decir, no es lo mismo hacer
Código
  1. SELECT * FROM tblPoC WHERE (id = "1")
qué
Código
  1. SELECT * FROM tblPoC WHERE (id = 1)

Intentad printear la consulta SQL y la ejecutas directamente desde el motor de base de datos. A ver si se ingresa correctamente o es problema del códigp PHP.


Título: Re: problema update en php
Publicado por: viher en 12 Noviembre 2010, 11:15 am
he ejecutado la siguiente consulta en phpmyadmin

Código
  1. UPDATE videos SET nombre='aaa', embed='bbbb', img='ccccc', cat='ddddd', cat2='eeeee', porn1='fffff', porn2='gggg', dur='hhhh' WHERE id=1648

y me lo ha actualizado correctamente

http://img819.imageshack.us/img819/9144/phpmyadmin.jpg

y quité las comillas de la consulta sql del codigo php pero sige devolviendo lo que modifico en blanco y se actualiza en blanco


Título: Re: problema update en php
Publicado por: Shell Root en 13 Noviembre 2010, 04:15 am
Esa consulta es mucho más diferente que la que tenias.
Código
  1. UPDATE videos SET nombre='a', embed='', img='c', cat='', cat2='f', porn1='e', porn2='g', dur='d minutos minutos' WHERE id='1626'

Vuelve a printear la query y verifica en el motor de base de datos.


Título: Re: problema update en php
Publicado por: ~ Yoya ~ en 13 Noviembre 2010, 05:26 am
Quizas los errores no se muestran porque tiene la directiva display_erros (http://www.php.net/manual/es/errorfunc.configuration.php#ini.display-errors) del PHP.INI Off