Foros del Web » Programando para Internet » PHP »

No logro hacer un query del último id

Estas en el tema de No logro hacer un query del último id en el foro de PHP en Foros del Web. Pues eso... Estoy desesperado porque he intentado filtrar con el where, usar el mysql_insert_id(), y alguna otra cosa, y nada me funciona. Realmente el asunto ...
  #1 (permalink)  
Antiguo 12/04/2011, 15:34
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años, 7 meses
Puntos: 1
Busqueda No logro hacer un query del último id

Pues eso... Estoy desesperado porque he intentado filtrar con el where, usar el mysql_insert_id(), y alguna otra cosa, y nada me funciona. Realmente el asunto es algo más complejo, porque es un blog en el que tengo que pinchar en el texto del comentario (como hipervínculo) para que se abra el mismo formulario en otra página, y ahí tengo otro problema porque necesitaría hacer un post para la página "local" y un get para la de comentarios, y lo del id era para recuperar la última inserción (que es lo que me interesa). En fin, aquí va el código:



<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
</head>
<body>
<?php
function Conectarse()
{
if (!($link=mysql_connect("x.x.x","x","x")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("x",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}

$link=Conectarse();
/*echo "Conexión con la base de datos conseguida.<br>";*/
mysql_close($link); //cierra la conexion
?>
</body>
</html>



<html xmlns="http://www.w3.org/1999/xhtml">

<head>
</head>
<body>
<?php
$nombre=$_POST['nombre'];
$email=$_POST['email'];
$categori=$_POST['categori'];

{
mysql_connect("x","x","x");
mysql_select_db("x");

mysql_query("INSERT INTO tabla(nombre,email,categori) VALUES('$nombre','$email','$categori')");

}
?>
<form id="form1" name="form1" method="post" action="" onclick="this.value=''">
<input name="categori" input type="hidden" type="text" id="categori" value="prueba" size="15">
<table cellpadding="0" cellspacing="0" width="607" height="178">
<!-- MSTableType="layout" -->
<tr>
<td valign="top" height="178" width="607">
<table width="607" border="1">
<tr>
<td width="160">Nombre</td>
<td width="431">
<input name="nombre" type="text" id="nombre" value="Tu nombre" size="20" onclick="this.value=''"/></td>
</tr>
<tr>
<td>texto</td>
<td><label>
<input name="email" type="text" id="email" size="96" />
</label></td>
</tr>
<tr>
<td width="160">Categor</td>
<td width="431">
&nbsp;</td>
</tr>
<tr>
<td height="23">&nbsp;</td>
<td height="23">
&nbsp;
<select name="prueba" onchange="javascript:document.form1.categori.value =(document.form1.prueba.value)">
<option value="Categoría">Categoría</option>
<option value='<a href="http://www.url.com/directorio/muñecas.php">muñecas</a>'>Muñecas</option>
<option value='<a href="http://www.url.com/directorio/ositos.php">ositos</a>'>Ositos</option>
<option value='<a href="http://www.url.com/directorio/juguetes.php">juguetes</a>'>Juguetes</option>

</select>
</td>
</tr>
<tr>
<td height="23">&nbsp;</td>
<td height="23">
<p align="center"><input type="submit" value="Enviar" name="Enviar"></td>
</tr>
<tr>
<td height="23">&nbsp;</td>
<td height="23">

&nbsp;</td>
</tr>
</table>
</form>

</tr>
</table>
<p>&nbsp;</p>

<table border="0" cellspacing=10 cellpadding=0 style="font-size: 8pt"><tr>
<td><font face="verdana"><b>Id</b></font></td>
<td><font face="verdana"><b>Nombre</b></font></td>
<td><font face="verdana"><b>texto</b></font></td>
<td><font face="verdana"><b>categori</b></font></td>

</tr>

<?php
$link = @mysql_connect("x","x","x")
or die ("Error al conectar a la base de datos.");
@mysql_select_db("x", $link)
or die ("Error al conectar a la base de datos.");

$query = "SELECT f.id, f.nombre, f.email, f.categori " .
"FROM tabla f " .
"WHERE f.email NOT IN ('Europa')";
$result = mysql_query($query);
$numero = 0;

while($row = mysql_fetch_array($result))
{
echo "<tr><td width=\"25%\"><font face=\"verdana\">" .
$row["id"] . "</font></td>";
echo "<td width=\"25%\"><font face=\"verdana\">" .
$row["nombre"] . "</font></td>";
echo "<td width=\"25%\"><font face=\"verdana\">" .
$row["email"] . "</font></td>";
echo "<td width=\"25%\"><font face=\"verdana\">" .
$row["categori"] . "</font></td>";
}

mysql_free_result($result);
mysql_close($link);
?>
</table>



Me da rabia porque yo puedo cambiar los post por get y me hace lo que quiero... pero también necesitaría poder mantener el post normal en la misma página y, al pinchar en algún hipervínculo que esté en el propio texto del comentario u en otro lado, el get en la otra. Ayuda, pleaseee, ya no sé qué hacerr... :'(
  #2 (permalink)  
Antiguo 12/04/2011, 16:53
Avatar de Unxky28  
Fecha de Ingreso: marzo-2006
Mensajes: 82
Antigüedad: 18 años, 8 meses
Puntos: 1
Respuesta: No logro hacer un query del último id

Primero coloca tu codigo en los tags de :
Código PHP:
Ver original
  1. codigo aqui colocalo , en tu editor hay una lista que dice Highlight
porque así no se entiende tu código,

Segundo no entiendo que quieres hacer, relajate, respira y despues haz bien tu pregunta.

Saludos.
__________________
El Futuro esta en Tus Manos...
  #3 (permalink)  
Antiguo 12/04/2011, 17:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: No logro hacer un query del último id

Y en especia, postea en el foro correcto.
Este es el foro de Base de Datos, y no estás preguntando nada que tenga que ver con SQL, sino con PHP o HTML, y esos son temas de otros foros.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 13/04/2011, 08:29
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: No logro hacer un query del último id

Cita:
Iniciado por Unxky28 Ver Mensaje
Primero coloca tu codigo en los tags de :
Código PHP:
Ver original
  1. codigo aqui colocalo , en tu editor hay una lista que dice Highlight
porque así no se entiende tu código,

Segundo no entiendo que quieres hacer, relajate, respira y despues haz bien tu pregunta.

Saludos.
No sabía lo del highlight, perdón. Es la 1era vez que posteo aquí.

Vaya, creía que me había explicado lo suficientemente bien... Intentaré hacer preguntas más largas y explicativas la próxima bien.

De relajación voy bien, gracias.
  #5 (permalink)  
Antiguo 13/04/2011, 08:32
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: No logro hacer un query del último id

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Y en especia, postea en el foro correcto.
Este es el foro de Base de Datos, y no estás preguntando nada que tenga que ver con SQL, sino con PHP o HTML, y esos son temas de otros foros.
Pues es curioso, pero la mayoría de mis respuestas las he encontrado "googleando" por el buscador de Yahoo haciendo referencia a MySql, entonces no creo que vaya tan desencaminado. Pregunto acerca de la última inserción de una base de datos... entonces no creo que vaya tan errado. El HTML es consecuencia del formulario, y he puesto el código entero precisamente para que nadie me diga que no se entiende lo que quiero hacer.
  #6 (permalink)  
Antiguo 13/04/2011, 08:48
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: No logro hacer un query del último id

Reinicializo mi pregunta... Voy a hacer varias preguntas, la 1era es la que me gustaría resolver en 1er término, y las otras me gustaría resolverlas en la medida de lo posible, pero tampoco espero ni mucho menos que me respondáis a todo.

1- No consigo obtener mi última id (inserción) de mi base de datos MySql para poder operar posteriormente con ella en PHP.

2- Me gustaría saber cómo transformar en hipervínculo el texto de un formulario (o sea, una inserción de texto) antes de darle al botón de enviar (submit)... o hacer lo que sea para que al hacer el submit se transforme en hipervínculo.

3- Me gustaría saber qué tendría que hacer para que ese hipervínculo fuera el "get" de un formulario (entonces el usuario pincharía ahí con el ratón y le llevaría a una página tipo http://www.mipagina.com/formulario.php1234).


El código entero es este:


Código PHP:
Ver original
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title></title>
  5. </head>
  6. <body>
  7. <?php
  8. function Conectarse()
  9. {
  10. if (!($link=mysql_connect("x.x.x","x","x")))
  11. {
  12. echo "Error conectando a la base de datos.";
  13. exit();
  14. }
  15. if (!mysql_select_db("x",$link))
  16. {
  17. echo "Error seleccionando la base de datos.";
  18. exit();
  19. }
  20. return $link;
  21. }
  22.  
  23. $link=Conectarse();
  24. /*echo "Conexión con la base de datos conseguida.<br>";*/
  25. mysql_close($link); //cierra la conexion
  26. ?>
  27. </body>
  28. </html>
  29.  
  30.  
  31.  
  32. <html xmlns="http://www.w3.org/1999/xhtml">
  33.  
  34. <head>
  35. </head>
  36. <body>
  37. <?php
  38. $nombre=$_POST['nombre'];
  39. $email=$_POST['email'];
  40. $categori=$_POST['categori'];
  41.  
  42. {
  43. mysql_connect("x","x","x");
  44.  
  45. mysql_query("INSERT INTO tabla(nombre,email,categori) VALUES('$nombre','$email','$categori')");
  46.  
  47. }
  48. ?>
  49. <form id="form1" name="form1" method="post" action="" onclick="this.value=''">
  50. <input name="categori" input type="hidden" type="text" id="categori" value="prueba" size="15">
  51. <table cellpadding="0" cellspacing="0" width="607" height="178">
  52. <!-- MSTableType="layout" -->
  53. <tr>
  54. <td valign="top" height="178" width="607">
  55. <table width="607" border="1">
  56. <tr>
  57. <td width="160">Nombre</td>
  58. <td width="431">
  59. <input name="nombre" type="text" id="nombre" value="Tu nombre" size="20" onclick="this.value=''"/></td>
  60. </tr>
  61. <tr>
  62. <td>texto</td>
  63. <td><label>
  64. <input name="email" type="text" id="email" size="96" />
  65. </label></td>
  66. </tr>
  67. <tr>
  68. <td width="160">Categor</td>
  69. <td width="431">
  70. &nbsp;</td>
  71. </tr>
  72. <tr>
  73. <td height="23">&nbsp;</td>
  74. <td height="23">
  75. &nbsp;
  76. <select name="prueba" onchange="javascript:document.form1.categori.value =(document.form1.prueba.value)">
  77. <option value="Categoría">Categoría</option>
  78. <option value='<a href="http://www.url.com/directorio/muñecas.php">muñecas</a>'>Muñecas</option>
  79. <option value='<a href="http://www.url.com/directorio/ositos.php">ositos</a>'>Ositos</option>
  80. <option value='<a href="http://www.url.com/directorio/juguetes.php">juguetes</a>'>Juguetes</option>
  81.  
  82. </select>
  83. </td>
  84. </tr>
  85. <tr>
  86. <td height="23">&nbsp;</td>
  87. <td height="23">
  88. <p align="center"><input type="submit" value="Enviar" name="Enviar"></td>
  89. </tr>
  90. <tr>
  91. <td height="23">&nbsp;</td>
  92. <td height="23">
  93.  
  94. &nbsp;</td>
  95. </tr>
  96. </table>
  97. </form>
  98.  
  99. </tr>
  100. </table>
  101. <p>&nbsp;</p>
  102.  
  103. <table border="0" cellspacing=10 cellpadding=0 style="font-size: 8pt"><tr>
  104. <td><font face="verdana"><b>Id</b></font></td>
  105. <td><font face="verdana"><b>Nombre</b></font></td>
  106. <td><font face="verdana"><b>texto</b></font></td>
  107. <td><font face="verdana"><b>categori</b></font></td>
  108.  
  109. </tr>
  110.  
  111. <?php
  112. $link = @mysql_connect("x","x","x")
  113. or die ("Error al conectar a la base de datos.");
  114. @mysql_select_db("x", $link)
  115. or die ("Error al conectar a la base de datos.");
  116.  
  117. $query = "SELECT f.id, f.nombre, f.email, f.categori " .
  118. "FROM tabla f " .
  119. "WHERE f.email NOT IN ('Europa')";
  120. $result = mysql_query($query);
  121. $numero = 0;
  122.  
  123. while($row = mysql_fetch_array($result))
  124. {
  125. echo "<tr><td width=\"25%\"><font face=\"verdana\">" .
  126. $row["id"] . "</font></td>";
  127. echo "<td width=\"25%\"><font face=\"verdana\">" .
  128. $row["nombre"] . "</font></td>";
  129. echo "<td width=\"25%\"><font face=\"verdana\">" .
  130. $row["email"] . "</font></td>";
  131. echo "<td width=\"25%\"><font face=\"verdana\">" .
  132. $row["categori"] . "</font></td>";
  133. }
  134.  
  135. mysql_close($link);
  136. ?>
  137. </table>


Gracias por vuestras respuestas.
  #7 (permalink)  
Antiguo 13/04/2011, 09:46
Avatar de bocho0610  
Fecha de Ingreso: enero-2010
Ubicación: <? echo "Santiago, Chile"; ?>
Mensajes: 341
Antigüedad: 14 años, 11 meses
Puntos: 26
Respuesta: No logro hacer un query del último id

Antes que nada buscate un buen libro de php y leelo, analizalo y tomate el tiempo de entenderlo tambien buscate uno sobre html.

Código PHP:
Ver original
  1. $ssql=mysql_query("SELECT id FROM tabla ORDER BY DESC LIMIT 1");

Asi lograrias obtener el ultimo id que esta insertado en la base de datos, como es solo un dato no necesitas manejarlo con un while.

Lo otros ni idea ya que no se que pretendes hacer.
__________________
Sigueme en Twitter!
Septimoarte.cl <-- Un mundo en cine.
  #8 (permalink)  
Antiguo 13/04/2011, 11:08
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años, 7 meses
Puntos: 1
Gracias, bocho. Creo que es algo exajerado leerme un libro de html... Intentaré comprarme uno de PHP. ¿Cuál me recomiendas? ¿La biblia del PHP?

Pruebo y comento.

Lo que pretendo hacer es un sistema de blog al estilo de jodidavida . com (pero el rollo sería totalmente diferente)

Pues sigo haciendo algo mal... La sustituyo por la linea 118, y nada (pero no me da error de ningún tipo). También la he puesto justo debajo de esa linea (porque también me interesa recuperar datos de email, nombre y demás), y nada.

No sé, me debe faltar alguna linea o algo. En fin, sigo investigando.

Última edición por jpinedo; 13/04/2011 a las 16:08 Razón: combinar
  #9 (permalink)  
Antiguo 13/04/2011, 13:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: No logro hacer un query del último id

Cita:
Iniciado por konvulsion Ver Mensaje
Pues es curioso, pero la mayoría de mis respuestas las he encontrado "googleando" por el buscador de Yahoo haciendo referencia a MySql, entonces no creo que vaya tan desencaminado. Pregunto acerca de la última inserción de una base de datos... entonces no creo que vaya tan errado. El HTML es consecuencia del formulario, y he puesto el código entero precisamente para que nadie me diga que no se entiende lo que quiero hacer.
Botones, links, $_POST, $_GET, páginas, paginados, etc., no existen en MySQL. Son de PHP, por eso te lo dije.


Podrías probar este segmento:
Código PHP:
<?php

$link 
= @mysql_connect("x""x""x")
        or die(
"Error al conectar a la base de datos.");
$db mysql_select_db("x"$link)
        or die(
"Error al conectar a la base de datos.");

$query "SELECT f.id, f.nombre, f.email, f.categori " .
        
"FROM tabla f " .
        
"WHERE f.email NOT IN ('Europa')";
$result mysql_query($query$db);
if (!
$result) {
    
$numero 0;
    while (
$row mysql_fetch_array($result)) {
        echo 
"<tr><td width=\"25%\"><font face=\"verdana\">" .
        
$row["id"] . "</font></td>";
        echo 
"<td width=\"25%\"><font face=\"verdana\">" .
        
$row["nombre"] . "</font></td>";
        echo 
"<td width=\"25%\"><font face=\"verdana\">" .
        
$row["email"] . "</font></td>";
        echo 
"<td width=\"25%\"><font face=\"verdana\">" .
        
$row["categori"] . "</font></td>";
    }

    
mysql_free_result($result);
}
else {echo 
"Error en la ejecución de la consulta: ".mysql_error($link);}
mysql_close($link);
?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 13/04/2011, 14:02
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 10 meses
Puntos: 155
Respuesta: No logro hacer un query del último id

Cita:
Iniciado por bocho0610 Ver Mensaje
Antes que nada buscate un buen libro de php y leelo, analizalo y tomate el tiempo de entenderlo tambien buscate uno sobre html.

Código PHP:
Ver original
  1. $ssql=mysql_query("SELECT id FROM tabla ORDER BY DESC LIMIT 1");

Asi lograrias obtener el ultimo id que esta insertado en la base de datos, como es solo un dato no necesitas manejarlo con un while.

Lo otros ni idea ya que no se que pretendes hacer.
en desacuerdo con este metodo , ¿que pasa si otro usuario registra un dato? obtendria el ultimo insertado , pero no el dato que se acaba de insertar con

http://mx.php.net/manual/es/function...-insert-id.php

se obtiene el ultimo insertado pero por conexion asi que no se mezclan con otras inserciones
  #11 (permalink)  
Antiguo 13/04/2011, 18:00
 
Fecha de Ingreso: abril-2011
Mensajes: 39
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: No logro hacer un query del último id

gnzsoloyo, con ese código no me aparece ninguna id.

mogurbon, eso parece que funciona... pero en cada inserción que hago sólo me aparece el número de id (y todos, no el último, aunque el echo sí que me marca el último). Pero bueno, parece que ya tengo algo funcional para empezar.

A ver, dejad que os muestre algo:

http://www.technabled.com/2009/06/how-to-multi-level-comments-in-php.html

Me podría servir perfectamente... pero tendría que saber cómo hacer que el comentario del 1er post apareciera en otra página generada en ese preciso instante (no sé si sería con auto_increment de MySql o con GET, o con las 2 cosas, es el lío que tengo).

Luego faltaría encontrar la manera de acortar el multi-nivel de ese 1er comentario anidado, que eso no creo que presente mucho problema.

¿Alguna idea?

Gracias a todos.

Última edición por konvulsion; 13/04/2011 a las 21:02

Etiquetas: blog, identificador, inserción, mysql, ultimo
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 11:42.