Autor Tema: [Ayuda] MySQL y PHP código  (Leído 1156 veces)

Desconectado B4nDidO

  • PHPer@
  • **
  • Mensajes: 58
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
[Ayuda] MySQL y PHP código
« en: 25 de Noviembre de 2012, 15:35:29 pm »
Buenas, pues mi duda esque me fabrique mi propio sistema de noticias, conectado a la db y demás, y la verdad, va bastante bien, la duda viene a la hora de insertar la noticias, yo quiero insertar 1, y lo hago así:
Código: [Seleccionar]
<? $news = mysql_query("Select * from `cms_news` order by id desc limit 1");
while($new = mysql_fetch_array($news)) {?>
Hasta ahí lo hago bien, la cosa esque ahora para insertar la segunda noticia, no se como sería el código, es decir lo que quiero hacer esque se publique una noticia, evitando la primera.

Sé que puedo hacerlo con el anterior código cambiando en order by id desc limit 1 el "1" por el número deseado, pero quiero que la segunda noticia no siga el mismo modelo que la primera.

Espero haberme explicado bien y me ayuden a la mayor brevedad posible, gracias de antemano.

Un saludo, B4nDidO

[EDITO]
Lo que quiero es que aparezcan las noticias, pero evitando siempre la ultima publicada, es decir, que la ultima no salga que salga la que se han escrito antes de esa.

Ejemplo: Hay 50 noticias escritas, llega hasta la ID50, siendo esta id la ultima noticia publicada, pues para que aparezca de la ID49 pa' abajo, evitando la 50
« Última modificación: 25 de Noviembre de 2012, 17:31:50 pm por B4nDidO »
Rock News

Comunidad PHPeros

[Ayuda] MySQL y PHP código
« en: 25 de Noviembre de 2012, 15:35:29 pm »

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] MySQL y PHP código
« Respuesta #1 en: 25 de Noviembre de 2012, 16:27:33 pm »
Tendrías que cambiar la DB y poner un campo llamado "id" (que ya lo tienes), a este le darías la propiedad de auto-increment.
Ya solo sería cuestión de seleccionar por "id".

Código: [Seleccionar]
<? $news = mysql_query("Select * from `cms_news` where id = '2' limit 1");
while($new = mysql_fetch_array($news)) {?>

Pásate por la sección POO para hacer un buen sistema MySQL cuando creas que ya sabes mas o menos bastante de PHP.

Saludos!

Desconectado B4nDidO

  • PHPer@
  • **
  • Mensajes: 58
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] MySQL y PHP código
« Respuesta #2 en: 25 de Noviembre de 2012, 17:32:59 pm »
Tendrías que cambiar la DB y poner un campo llamado "id" (que ya lo tienes), a este le darías la propiedad de auto-increment.
Ya solo sería cuestión de seleccionar por "id".

Código: [Seleccionar]
<? $news = mysql_query("Select * from `cms_news` where id = '2' limit 1");
while($new = mysql_fetch_array($news)) {?>

Pásate por la sección POO para hacer un buen sistema MySQL cuando creas que ya sabes mas o menos bastante de PHP.

Saludos!

Pues, no es lo que pedía, ya que si lo hago así se me mostraría la id 2, y no se me actualizaría cada vez que escribiese una noticia nueva.
Rock News

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] MySQL y PHP código
« Respuesta #3 en: 25 de Noviembre de 2012, 18:48:11 pm »
Bueno xD es jugar con php y mysql:

Código: [Seleccionar]
<? $news = mysql_query("Select * from `cms_news` where id = 'LAST_INSERT_ID()-1' limit 1");
while($new = mysql_fetch_array($news)) {?>

Desconectado B4nDidO

  • PHPer@
  • **
  • Mensajes: 58
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] MySQL y PHP código
« Respuesta #4 en: 26 de Noviembre de 2012, 00:49:28 am »
Bueno xD es jugar con php y mysql:

Código: [Seleccionar]
<? $news = mysql_query("Select * from `cms_news` where id = 'LAST_INSERT_ID()-1' limit 1");
while($new = mysql_fetch_array($news)) {?>

Sigue sin valerme ese código, muestras una noticias que no existe :S
Rock News

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[Ayuda] MySQL y PHP código
« Respuesta #5 en: 26 de Noviembre de 2012, 13:03:07 pm »
No creo que esa query a la BD sea imposible, pero si quieres hacer algo así (sacar la penultima noticia introducida) probablemente estás haciendo algo mal en el diseño de la aplicación.

¿Cómo has llegado a necesitar la penultima noticia en lugar de la ultima?
Me da la impresión de que el problema no es de código, si no de diseño.
Es decir, que estás intentando llegar a un sitio por un camino mucho más complicado que el óptimo.

Dinos por qué quieres seleccionar solo la penúltima noticia, y si lo encontramos razonable ya nos metemos en ver cómo codearlo.

Saludos
« Última modificación: 26 de Noviembre de 2012, 13:07:28 pm por CarlosRdrz »
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado B4nDidO

  • PHPer@
  • **
  • Mensajes: 58
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] MySQL y PHP código
« Respuesta #6 en: 26 de Noviembre de 2012, 14:27:56 pm »
No creo que esa query a la BD sea imposible, pero si quieres hacer algo así (sacar la penultima noticia introducida) probablemente estás haciendo algo mal en el diseño de la aplicación.

¿Cómo has llegado a necesitar la penultima noticia en lugar de la ultima?
Me da la impresión de que el problema no es de código, si no de diseño.
Es decir, que estás intentando llegar a un sitio por un camino mucho más complicado que el óptimo.

Dinos por qué quieres seleccionar solo la penúltima noticia, y si lo encontramos razonable ya nos metemos en ver cómo codearlo.

Saludos

Quiero insertar la penultima, porque la última va arriba la primera con un diseño diferente, es decir mi código es el siguiente:
Código: [Seleccionar]
<div id="noticia_item" class="not">
<? $news = mysql_query("Select * from `cms_news` order by id desc limit 1");
while($new = mysql_fetch_array($news)) {?>
<div class="imagem" style="background: url(<?=$new['image'];?>);"></div>
<div class="info_noticia">
<a href="./noticias/<?=$new['id'];?>" class="titulo"><?=$new['title'];?></a><br>
<span class="resumo"><?
$long = $new['shortstory'];
if (strlen($long) > 120){
  echo substr($long,0,120).'...';
}else{
  echo substr($long,0,120);
}  ?></span>
</div>
<? } ?>
</div>
// Aquí iria la segunda noticia, evitando la ultima escrita //

<div id="noticia_item2" class="not">

** Me falta el código que iría aqui conectando con la db **

<div class="imagem" style="background: url(/<?=$new['image'];?>);"></div>
<div class="info_noticia">
<a href="./noticias/<?=$new['id'];?>" class="titulo">Dia de São Nicolau chega ao Habbo Holanda</a><br>
<span class="resumo"><?
$long = $new['shortstory'];
if (strlen($long) > 120){
  echo substr($long,0,120).'...';
}else{
  echo substr($long,0,120);
}  ?></span>
</div>
</div>
Rock News

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[Ayuda] MySQL y PHP código
« Respuesta #7 en: 26 de Noviembre de 2012, 18:46:13 pm »
Puedes resolverlo de una forma más sencilla, y además ahorrando código.

Algo como...

<?php
$bandera 
1;
$news mysql_query("Select * from `cms_news` order by id desc");
while(
$new mysql_fetch_array($news)) {
	
$style $bandera " news-first" "";
	
$bandera 0;

	
if (
strlen($new[&#39;shortstory&#39;]) > 120){
	
	
$new[&#39;shortstory&#39;] = substr($long,0,120).&#39;...&#39;;
	
} else {
	
	
$new[&#39;shortstory&#39;] = substr($long,0,120);
	
}

	
echo &
#39;
	
<
div id="noticia_item" class="not&#39;.$style.&#39;">
	
<
div class="imagem" style="background: url(&#39;.$new[&#39;image&#39;].&#39;);"></div>
	
	
<
div class="info_noticia">
	
	
	
<
a href="./noticias/&#39;.$new[&#39;id&#39;].&#39;" class="titulo">&#39;.$new[&#39;title&#39;].&#39;</a><br>
	
	
	
<
span class="resumo">&#39;.$new[&#39;shortstory&#39;].&#39;</span>
	
	
</
div>
	
</
div>&#39;;
}
?>


Este pequeño codigo mostraría todas las noticias en la BD ordenandolas por id de forma descendente, con una peculiaridad: el <div> que rodea a la primera noticia tiene la clase "news-first" y la clase "not", mientras que el resto de noticias solo tienen la clase "not".

De esta forma le aplicas al div el CSS que quieras basandote en esa clase (.news-first) y listo.

Hay muchas formas de hacerlo, pero esta es una forma sencilla.

Saludos!
« Última modificación: 26 de Noviembre de 2012, 18:48:54 pm por CarlosRdrz »
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] MySQL y PHP código
« Respuesta #8 en: 26 de Noviembre de 2012, 22:04:15 pm »
Tenías que haberlo dicho así desde el principio solo es aplicar 1 y 2, y que se vayan turnando xD, luego comprobar si es 1 un diseño y si es 2 otro diseño, como ha hecho Carlos.

Saludos y esperamos haberte ayudado, aunque yo no mucho xD