Foros del Web » Programando para Internet » PHP »

Sistema de Noticias [Pequeña ayuda]

Estas en el tema de Sistema de Noticias [Pequeña ayuda] en el foro de PHP en Foros del Web. hola amigos del foro, miren estoy trabajando en un sistemas de noticias con un sistema administrable bajo PHP y Sql, la verdad que funciona bastante ...
  #1 (permalink)  
Antiguo 05/12/2009, 23:22
 
Fecha de Ingreso: diciembre-2009
Mensajes: 7
Antigüedad: 14 años, 4 meses
Puntos: 0
Sistema de Noticias [Pequeña ayuda]

hola amigos del foro, miren estoy trabajando en un sistemas de noticias con un sistema administrable bajo PHP y Sql, la verdad que funciona bastante bien pero la cuestion que hay un pequeño defecto.

Al querer eliminar noticias desde el panel no me deja borrarlas pero me di cuenta que solamente a las noticias que tienen los titulos con tildes, eñes, "comillas", a'postrofes. lo mismo me pasa al querer publicarlas con este tipo de caracteres. Si publico o elimino noticias sin caracteres puedo hacerlo sin problemas.


la verdad que muchas gracias por su ayuda, llevo mas de 3 dias buscando en google alguna ayuda y no he encontrado nada, solamente intenté cosas como:


mysql_query ("SET NAMES 'utf8'");
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
mysql_query("SET NAMES 'utf8'");
mysql_query('SET CHARACTER SET utf8');
else {
mysql_select_db($dbase);
MYSQL_QUERY('SET NAMES utf8');
MYSQL_QUERY('SET CHARACTER SET utf8');}
(mysql) CHARACTER SET utf8 COLLATE utf8_general_ci
The server would send a header telling the browser to expect utf-8
(php) header('Content-Type: text/html; charset=utf-8' );
The HTML page contained the necessary meta-tag
(html) <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
MYSQL_QUERY('SET NAMES utf8',$modxDBConn);
MYSQL_QUERY('SET CHARACTER SET utf8',$modxDBConn);
MYSQL_QUERY("SET SESSION collation_connection = 'utf8_general_ci'",$modxDBConn);
expresión "SET NAMES 'UTF8'", algo así como un tres en uno: la utilizas para no utilizar otras tres.
SET character_set_client = 'UTF8';
SET character_set_results = 'UTF8';
SET character_set_connection = 'UTF8';

y demas funciones que no me han servido para nada.


mil gracias amigos

Última edición por raulatenas; 07/12/2009 a las 18:23
  #2 (permalink)  
Antiguo 05/12/2009, 23:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sistema de Noticias [Pequeña ayuda]

lo de borrar un registro no debería ser un problema si usas el ID para dicha acción...

de hecho, lo que importa en este caso es ver como lo estas haciendo...

acerca de tu codificación solo debes usar lo siguiente:
Código HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
Código PHP:
header('Content-Type: text/html; charset=UTF-8' ); 
si al momento de imprimir tienes problemas, prueba convirtiendo la cadena con utf8_encode() o utf8_decode(), solo así puedes corregir el ṕroblema...


PDTA deberías saber que no estamos obligados a descargar archivos y analizarlos, se trata de corregir un problema en el foro para ser de utilidad a los demás....

pero eso de que tengamos que bajar un archivo y ahorrarte el problema del análisis y todo pues como que no va....
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/12/2009, 00:06
 
Fecha de Ingreso: diciembre-2009
Mensajes: 7
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Sistema de Noticias [Pequeña ayuda]

perdon pateketrueke pero novato en el php,

como las convertiria con utf8_encode() o utf8_decode() si estas serian las cadenas para convertir?:

Cita:
<?
include "config.php";
include "valida_cookies.php";
$data= $_POST['data'];
$hora= $_POST['hora'];
$ip= $_POST['ip'];
$titulo= $_POST['titulo'];
$msg = $_POST['msg'];
echo utf8_encode($cadena);

if (empty($titulo) && empty($msg))
{
echo "Todos los campos obligatorios";
}
else {
include "config.php";
global $tb1;
$sql= mysql_query("INSERT INTO $tb1 (msg, titulo, data, hora, ip) VALUES ('$msg','$titulo','$data','$hora','$ip');");
if (!$sql)
{
echo "No fue posible publicar la noticia <br><br> ";
} else {
echo "
<BR>
<font face=verdana size=1>
<b>Titulo:</b> $titulo<br>
<b>Mensaje de noticia:</b> $msg<BR>
<b>Data:</b> $data<br>
<b>Hora:</b> $hora<BR>
<b>Ip del Posteador:</b> $ip<BR>
<BR><h3>Noticia publicada con éxito!</h3></font>";
}
}
?>
(en php de postear.php)

y en

Cita:
<?
include "valida_cookies.php";
include "config.php";

$sql = mysql_query("SELECT * FROM $tb1");
$linhas = mysql_num_rows($sql);
if (!$sql){
echo "No es posible hacer la consulta";
}
else {
while ($reg = mysql_fetch_array($sql)){
$titulo = $reg['titulo'];
$data = $reg['data'];
$hora = $reg['hora'];
echo "
<img src=\"seta.jpg\" width=\"10\" height=\"10\" border=\"0\">$data - $hora : Titulo: $titulo # <a href=\"$PHP_SELF?desejo=excluir&titulo1=$titulo\"> <font color=\"#FF0000\">Eliminar Noticia</font> </a><font color=\"#FF0000\">#</font> <br>";
}
}
$titulo1= $_GET['titulo1'];
$desejo= $_GET['desejo'];
if ($desejo==excluir)
{
global $titulo;
$sql1 = mysql_query("DELETE FROM $tb1 where titulo='$titulo1' LIMIT 1");
if (!$sql1)
{echo "No se pudo eliminar";}
else
{echo "Noticia Eliminada con éxito <b>Titulo:</b> $titulo1 <b>Aguarde.....</b><meta http-equiv='refresh' content='4;URL=exclusao.php'>";}
}

?>
(en php de exluir.php)



supongo que tengo que editarlas en esos 2 php ya que uno postea y el otro excluye (o elimina), ahora nose si tambien tengo que editar algo del config.php o de la base de datos o con eso ya estaría solucionado.


mil Gracias desde ya!
  #4 (permalink)  
Antiguo 06/12/2009, 00:30
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: Sistema de Noticias [Pequeña ayuda]

no veo que tengas un PRIMARY KEY en tu tabla... o cual? cuál es el auto_increment? Saludos
__________________
Hospedaje Web al mejor costo!
  #5 (permalink)  
Antiguo 06/12/2009, 00:50
 
Fecha de Ingreso: diciembre-2009
Mensajes: 7
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Sistema de Noticias [Pequeña ayuda]

mira mi tabla:

Cita:
-- phpMyAdmin SQL Dump
-- version 2.11.9.20
-- Version del servidor: 5.0.22
-- Version de PHP: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de datos: `ruaulito`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `msgs`
--

CREATE TABLE IF NOT EXISTS `msgs` (
`id` int(5) NOT NULL auto_increment,
`msg` text NOT NULL,
`titulo` varchar(120) NOT NULL,
`data` varchar(80) NOT NULL,
`hora` varchar(80) NOT NULL,
`ip` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Volcar la base de datos para la tabla `msgs`
--


-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `usuarios`
--

CREATE TABLE IF NOT EXISTS `usuarios` (
`nome` varchar(250) NOT NULL,
`login` varchar(250) NOT NULL,
`senha` varchar(8) NOT NULL,
`nivel` varchar(1) NOT NULL,
PRIMARY KEY (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Volcar la base de datos para la tabla `usuarios`
--

INSERT INTO `usuarios` (`nome`, `login`, `senha`, `nivel`) VALUES
('', 'raul', '123456', '1');
nose si algo estará mal ahi

Última edición por raulatenas; 06/12/2009 a las 00:57
  #6 (permalink)  
Antiguo 06/12/2009, 01:05
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: Sistema de Noticias [Pequeña ayuda]

cambia

while ($reg = mysql_fetch_array($sql)){
$titulo = $reg['titulo'];
$data = $reg['data'];
$hora = $reg['hora'];


por:

while ($reg = mysql_fetch_array($sql)){
$titulo = $reg['titulo'];
$data = $reg['data'];
$hora = $reg['hora'];
$idnoticia = $reg['id'];

cambia:
$sql1 = mysql_query("DELETE FROM $tb1 where titulo='$titulo1' LIMIT 1");
por:
$sql1 = mysql_query("DELETE FROM $tb1 where id='".$_GET['id']."'");

cambia:
<a href=\"$PHP_SELF?desejo=excluir&titulo1=$titulo\">
por:
<a href='$PHP_SELF?desejo=excluir&id=".$reg['id']."'>

cambia:
$titulo1= $_GET['titulo1'];
por:
$id= $_GET['id'];


Saludos
__________________
Hospedaje Web al mejor costo!
  #7 (permalink)  
Antiguo 06/12/2009, 01:33
 
Fecha de Ingreso: diciembre-2009
Mensajes: 7
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Sistema de Noticias [Pequeña ayuda]

si! ahora se puede eliminar el contenido del titulo con caracteres =D

pero ahora el tema es que no puedo postear nada

php de postear es este:

Código:
<? include "cabecalho.php"; ?>
<?
include "config.php";
include "valida_cookies.php";
$data= $_POST['data'];
$hora= $_POST['hora'];
$ip= $_POST['ip'];
$titulo= $_POST['titulo'];
$msg = $_POST['msg'];
if (empty($titulo) && empty($msg))
{
echo "Todos los campos obligatorios";
}
else {
include "config.php";
global $tb1;
$sql= mysql_query("INSERT INTO $tb1 (msg, titulo, data, hora, ip) VALUES ('$msg','$titulo','$data','$hora','$ip');");
if (!$sql)
{
echo "No fue posible publicar la noticia <br><br> ";
} else {
echo "
<BR>
<font face=verdana size=1>
<b>Titulo:</b> $titulo<br>
<b>Mensaje de noticia:</b> $msg<BR>
<b>Data:</b> $data<br>
<b>Hora:</b> $hora<BR>
<b>Ip del Posteador:</b> $ip<BR>
<BR><h3>Noticia publicada con éxito!</h3></font>";
}
}
?>
que es lo que deberia modificar para poder postear cualquier cosa con caracteres?

mil gracias!
  #8 (permalink)  
Antiguo 06/12/2009, 01:34
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: Sistema de Noticias [Pequeña ayuda]

$sql= mysql_query("INSERT INTO $tb1 (msg, titulo, data, hora, ip) VALUES ('$msg','$titulo','$data','$hora','$ip');");


cambialo por

$sql= mysql_query("INSERT INTO $tb1 (id,msg, titulo, data, hora, ip) VALUES ('','$msg','$titulo','$data','$hora','$ip');");
__________________
Hospedaje Web al mejor costo!
  #9 (permalink)  
Antiguo 06/12/2009, 02:10
 
Fecha de Ingreso: diciembre-2009
Mensajes: 7
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Sistema de Noticias [Pequeña ayuda]

hola amigo, gracias por ayudarme, pero al postear con apostrofes me dice que no puedo postear . y al postear con "comillas" no me muestra el contenido de las noticias.





gracias amigo eres puro rock!

Última edición por raulatenas; 07/12/2009 a las 18:24
  #10 (permalink)  
Antiguo 06/12/2009, 03:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sistema de Noticias [Pequeña ayuda]

no olviden depurar las consultas...
Código PHP:
mysql_query(/* consulta */) or die(mysql_error()); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 06/12/2009, 03:28
 
Fecha de Ingreso: diciembre-2009
Mensajes: 7
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Sistema de Noticias [Pequeña ayuda]

asi y todo, no puedo postear con apostofres y tampoco me muestra el contenido =(
  #12 (permalink)  
Antiguo 06/12/2009, 03:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sistema de Noticias [Pequeña ayuda]

Cita:
Iniciado por pateketrueke Ver Mensaje
no olviden depurar las consultas...
Código PHP:
mysql_query(/* consulta */) or die(mysql_error()); 
¿creen que les estoy tomando el pelo??

si haces un poco de caso descubrirás tu error...

me imagino que no puedes postear con apostrofes porque, dichos apostrofes son caracteres especiales para los strings en SQL...

que con eso??

pues que necesitas escapar las cadenas antes de insertarlas, para que funcione...

si depuras tu consulta con mysql_error() te va a mostrar el error claramente...
Código PHP:
// MAL (obviamente da error)
$valor "los apo's que sean";
$sql "INSERT INTO tabla(columna) VALUES('$valor')";
// INSERT INTO tabla(columna) VALUES('los apo's que sean')

// BIEN
$valor addslashes("los apo's que sean");
$sql "INSERT INTO tabla(columna) VALUES('$valor')";
// INSERT INTO tabla(columna) VALUES('los apo\'s que sean') 
Cita:
asi y todo, no puedo postear con apostofres y tampoco me muestra el contenido =(
me pregunto porque será...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 06/12/2009, 17:16
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: Sistema de Noticias [Pequeña ayuda]

ya intentaste lo que te dijo @pateketrueke ?
__________________
Hospedaje Web al mejor costo!
  #14 (permalink)  
Antiguo 07/12/2009, 18:47
 
Fecha de Ingreso: diciembre-2009
Mensajes: 7
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Sistema de Noticias [Pequeña ayuda]

si pero no hay caso =(

De todas maneras descrubí algo interesante en php de postear la noticia.
si reemplazando:


este apos ' por este ’

y


estas "comillas" por “estas”

se puede postear y visualizar la noticias perfectamente.

alguien sabe como es la funcion para que me reemplace automaticamente esos simbolos cuando escribo en el titulo y en el texarea?

El codigo es este:

Código:
<? include "valida_cookies.php"; ?><BR>
      <?
$data=date ("d/m/Y",time());
$hora = strftime("%H:%M:%S");
$ip= getenv("REMOTE_ADDR");

echo "<form action=\"postar.php\" method=\"post\" name=\"post\" >
<input type='hidden' name='data' value='$data'>
<input type='hidden' name='hora' value='$hora'>
<input type='hidden' name='ip' value='$ip'>
<p aling=\"center\" align=\"center\"><font face=\"Verdana\" size=\"1\">

<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" width=\"593\" align=\"center\">
    <tr> 
      <th class=\"thHead\" colspan=\"2\" height=\"25\">&nbsp;</th>
    </tr>
    <tr> 
      <td class=\"row1\" width=\"122\"><b><font size=1><p align=\"center\">T&iacute;tulo:</p></b></td>
      <td class=\"row2\" width=\"456\">
         <input name=\"titulo\" type=\"text\" id=\"Titulo:\" size=\"60\" style=\"font-family: Verdana; font-size: 8 pt; font-weight: bold\">
        </td>
    </tr>
    <tr> 
      <td valign=\"top\"> <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\">
          <tr> 
            <td>&nbsp;</td>
          </tr>
          <tr> 
            <td valign=\"top\" align=\"center\"> <br />
              <table width=\"100\" border=\"0\" cellspacing=\"0\" cellpadding=\"5\">
                <tr align=\"center\">
                  <td colspan=\"4\"><b><font size=1>Emoticones</b></td>
                </tr>
                <tr align=\"center\" valign=\"middle\">
                  <td><a href=\"javascript:emoticon(':D')\"><img src=\"smyles/dente.gif\" border=0></a></td>
                  <td><a href=\"javascript:emoticon(':)')\"><img src=\"smyles/aaa.gif\" border=0></a></td>
                  <td><a href=\"javascript:emoticon(':(')\"><img src=\"smyles/sad.gif\" border=0></a></td>
                  <td><a href=\"javascript:emoticon(':o')\"><img src=\"smyles/ohmy.gif\" border=0></a></td>
                </tr>
                <tr align=\"center\" valign=\"middle\">
                  <td><a href=\"javascript:emoticon(':shock:')\"><img src=\"smyles/icon_eek.gif\" border=0></a></td>
                  <td><a href=\"javascript:emoticon(':e')\"><img src=\"smyles/smalie_lol.gif\" border=0></a></td>
                  <td><a href=\"javascript:emoticon('8)')\"><img src=\"smyles/cool.gif\" border=0></a></td>
                  <td><a href=\"javascript:emoticon(':lol:')\"><img src=\"smyles/laugh.gif\" border=0></a></td>
                </tr>
                <tr align=\"center\" valign=\"middle\">
                  <td><a href=\"javascript:emoticon(':x')\"><img src=\"smyles/mad.gif\" border=0></a></td>
                  <td><a href=\"javascript:emoticon(':P')\"><img src=\"smyles/Tongue.jpg\" border=0></a></td>
                  <td><a href=\"javascript:emoticon('o.O')\"><img src=\"smyles/blink.gif\" border=0></a></td>
                  <td><a href=\"javascript:emoticon(':*')\"><img src=\"smyles/teeth_smile.gif\" border=0></a></td>
                </tr>
                <tr align=\"center\" valign=\"middle\">
                  <td><a href=\"javascript:emoticon('-_-')\"><img src=\"smyles/77_77.gif\" border=0></a></td>
                  <td><a href=\"javascript:emoticon('<_<')\"><img src=\"smyles/dry.gif\" border=0></a></td>
                  <td>&nbsp;</td>
                  <td>&nbsp;</td>
                </tr>
              </table></td>
          </tr>
        </table>
      </td>
      <td class=\"row2\" valign=\"top\">
        <table width=\"450\" border=\"0\" cellspacing=\"0\" cellpadding=\"2\">
          <tr> 
            <td><div align=\"right\">
                <textarea name=\"msg\" rows=\"10\" cols=\"30\" style=\"width:450px\" font-family: Verdana; font-size: 8 pt; font-weight: bold\"></textarea>
                <input type=\"submit\" name=\"Submit\" value=\"Publicar &gt;&gt;\" style=\"font-family: Verdana; font-size: 8 pt; font-weight: bold\">
                </div></td>
          </tr>
        </table>
        </span></td>
    </tr>
  </table>

  </form>";

?>

como tendria que hacer?

gracias soy novato.
  #15 (permalink)  
Antiguo 08/12/2009, 00:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Sistema de Noticias [Pequeña ayuda]

hay un "algo" que se le llama... escapar cadenas

para que sirve eso... pues precisamente para poder insertar cadenas de texto sin los problemas que mencionas...

siempre hay problemas con las comillas, en todo... de verdad, por eso debemos aprender a escaparlas...


si lees con atención lo que he escrito anteriormente, existe addslashes() que escapa no solo las comillas, sino también otros carácteres especiales...

también existe mysql_real_escape_string(), que como su nombre indica escapa realmente una cadena...

bien, otra alternativa es usar htmlspecialchars() con convertiría también las comillas en sus entidades, permitiendo que las inserciones se ejecuten perfectamente...

Cita:
[...] este apos ' por este ’ [...] estas "comillas" por “estas” [...]
usar ese tipo de comillas no es recomendable, ya que no son comillas reales... son caracteres especiales y no deberían permitirse, por ejemplo: si pones un fragmento de código usando esas comillas, y alguien copia-y-pega dicho código ¡¡eso es un error seguro!!

porque sencillamente no son comillas naturales, es mejor que olvides esa idea...

PDTA: adicionalmente, aprende a depurar tus consultas... si no lo haces siempre vas a venir con "problemas" como este...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 00:06.