Foros del Web » Programando para Internet » PHP »

tagboard a medias :(, se me perdió la db.

Estas en el tema de tagboard a medias :(, se me perdió la db. en el foro de PHP en Foros del Web. Holas :) Bueno, en un post anterior dije que después de 2 años no volvía hacer una página web. Ahora he querido volver a este ...
  #1 (permalink)  
Antiguo 05/11/2006, 16:21
 
Fecha de Ingreso: noviembre-2006
Mensajes: 20
Antigüedad: 18 años
Puntos: 0
tagboard a medias :(, se me perdió la db.

Holas :)

Bueno, en un post anterior dije que después de 2 años no volvía hacer una página web. Ahora he querido volver a este mundo, pero se me han olvidado unas cuantas cosas :(.

El drama es el siguiente:

Hice un tagboard (sistema para dejar mensajitos) muy simple. Lo hice con base de datos MYSQL y usaba phpmyadmin para eso. Bueno, resulta que tengo el código PHP del sistema (de mis web's anteriores), pero no guardé la escructura de la base de datos que es el gran error mío (o me olvidé). Trato de crear los campos y tablas en phpmyadmin con los mismos nombres y todo, pero no sé muy bien utilizar el phpmyadmin, por lo que me salen errores.

el código php para IMPRIMIR los datos es este:

Código PHP:
<?
 $mostramos 
"15"// número de mensajes a mostrar...

 
mysql_connect($dbhost,$dbusuario,$dbpassword); //conectamos a la BD
 
mysql_select_db($db); //acá se usa un include para llamar los datos!!

 
$sql=mysql_query("SELECT * FROM tagboard order by id desc LIMIT 0,$mostramos;");

 while(
$row mysql_fetch_array($sql)) {
  
$nombre  $row[nombre];
  
$mensaje $row[mensaje];

$fecha $row[fecha];
$fecha date("d.m.y" " / " "H:i",$fecha);

  echo 
"<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  <tr> 
    <td><span class=\"rojo\">($nombre): </span><span class=\"normal\">$mensaje<br>
      </span></td>
  </tr>
</table>"
;
}

?>
Com verán, son 3 campos. Nombre, mensaje y fecha.
Pero no recuerdo nada sobre los tipos q hay que asignarle a cada uno (char, varchar, etc..) y los valores. Entonces por eso me salen errores.

La idea de este targboard. Es imprimir en la web, los datos que los mismos usuarios (visitantes) dejan. (su nombre, mensaje, fecha).

El código y formulario que hice para ellos puedan dejar mensaje es este.

Código PHP:
<?

//acá se utilizó un include para llamar los datos de la db

mysql_connect("$dbhost","$dbuser","$dbpass"); //conectamos a la BD
mysql_select_db("$db");

$alerta "";
if (
$nombre == "nombre"){$nombre "";}
if (
$mensaje == "mensaje"){$mensaje "";}
if (
$nombre == " "){$nombre "";}
if (
$mensaje == " "){$mensaje "";}
if (empty(
$nombre)) {  
    
$alerta .= "&iquest;No tienes nombre?<br>";  
}  
if (empty(
$mensaje)) {  
    
$alerta .= "Si no vas a poner un mensaje, entonces no lo hagas...<br>";  
}  
if (
$alerta == "") {

$mensaje htmlspecialchars($mensaje); // quitamos el código html del mensaje ..
//en caso de haber cadenas largas...
    
$palabras explode(" ",$mensaje);
    for (
$i 0$i sizeof($palabras); $i++) {
if (
strlen($palabras[$i]) > 13) {
$palabras[$i] = chunk_split($palabras[$i],35,' ');//para cortar cadenas largas!
}
}
$mensaje implode(" ",$palabras);

//quitamos cualquier código html...
$nombre htmlspecialchars($_POST[nombre]);
$fecha time();
mysql_query("INSERT INTO tagboard (id,nombre,mensaje,fecha) values ('','$nombre','$mensaje','$fecha')");

   echo 
"Mensaje enviado correctamente ;)<br>
    <strong>Nombre:</strong> $nombre<br>
    <strong>Mensaje:</strong> $mensaje
    "
;

} else {  
    echo 
$alerta;  
}
?>
Ojalá hayan entendido la ayuda que necesito.
Sólo quiero que me ayuden a crear la consulta MYSQL correctamente, para que el tagboard me funcione conrrectamente como antes.

Saludos! :)
  #2 (permalink)  
Antiguo 05/11/2006, 18:38
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
pues yo le pondría
nombre : char 50
mensaje: text o varchar 255
fecha: date

En el código:
$sql=mysql_query("SELECT * FROM tagboard order by id desc LIMIT 0,$mostramos;");

el ; que está entre $mostramos y las comillas no va


A simple vista lo demás parece correcto.


Saludos y suerte.
  #3 (permalink)  
Antiguo 05/11/2006, 19:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Haciendo una "ingenería inversa" ..

Tu tabla se llama.
tagboard

Los campos de esta:
id,nombre,mensaje,fecha

Id -> autonumérico
nombre -> un VARCHAR de no sé cuantos caracteres le vas a dar.
mensaje -> desde un VARCHAR a un TEXT o similar .. no sé cuanta información más a gestionar ahí
fecha -> Según tu código ahí gestionas un "time stamp" de Unix .. así que tu tipo de campo debería ser un INT minimo (numérico).

Todo esto lo vemos en el "INSERT":
"INSERT INTO tagboard (id,nombre,mensaje,fecha) values ('','$nombre','$mensaje','$fecha')");

Ahora .. ya que estás retomando "PHP" nuevamente .. lo que deberías replantearte es que tu problema más bien no es con "PHP" sino con el diseño y modelo de datos en Base de datos ..

Te recomiendo leer sobre SQL y diseño de Base de datos en:
www.mysql-hispano.com

Por ejemplo "a discutir" sobre tu trabajo con base de datos .. sería el tema del tratamiento de "fechas" que haces con alto contenido PHP (código) cuando se debería resolver con SQL: un campo tipo "DATETIME" y funciones SQL como "DATE_FORMAT()" para darle el formato adecuado al que quieres ver al obtener ese dato.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 05/11/2006, 19:59
 
Fecha de Ingreso: noviembre-2006
Mensajes: 20
Antigüedad: 18 años
Puntos: 0
Hola :)

gracias por la ayuda, pero creo que no fue lo que esperaba.
Hice lo que me dijiste.

CREATE TABLE `tagboard` (
`nombre` CHAR( 50 ) NOT NULL ,
`mensaje` VARCHAR( 255 ) NOT NULL ,
`fecha` DATE NOT NULL
) ENGINE = MYISAM ;

Hice esa consulta para hacer esas 3 columnas como tú me dijiste.
Pero me sale el error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/virtual/sitio114542/www/index.php on line 199

la línea 199 es:
while($row = mysql_fetch_array($sql)) {

..y todo eso sin haber antes sacado las comillas y ; que me dijiste que no iban.
Al sacarlos y dejar esa línea a
$sql=mysql_query(SELECT * FROM tagboard order by id desc LIMIT 0,$mostramos);
(sin las comillas ni ;)

me sale este error:
Parse error: syntax error, unexpected T_STRING in /home/virtual/sitio114542/www/index.php on line 197

línea 197 es:
$sql=mysql_query(SELECT * FROM tagboard order by id desc LIMIT 0,$mostramos);

:(
Algo está mal :(!
ojalá me puedan resolver el problema. Saludos!
  #5 (permalink)  
Antiguo 05/11/2006, 20:18
 
Fecha de Ingreso: noviembre-2006
Mensajes: 20
Antigüedad: 18 años
Puntos: 0
Cluster gracias :)
ahora entendí mejor ...
tenía razón que me faltaba el campo id...
ese número me acuerdo que númeraba cada mensaje...
Voy a ver ahora si funciona bien o no. U_U
pero se puede imprimir la base de datos en la web :)
gracias!
  #6 (permalink)  
Antiguo 05/11/2006, 20:55
 
Fecha de Ingreso: noviembre-2006
Mensajes: 20
Antigüedad: 18 años
Puntos: 0
recuerdo que era auto increment :P!
el campo id ...

hago esto
ALTER TABLE `tagboard` CHANGE `id` `id` INT( 11 ) NOT NULL AUTO_INCREMENT

MySQL ha dicho:

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

cual es el drama? :(
  #7 (permalink)  
Antiguo 05/11/2006, 21:16
 
Fecha de Ingreso: noviembre-2006
Mensajes: 20
Antigüedad: 18 años
Puntos: 0
ia lo arreglé :D!
grax :)
tagboard funcionando.
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 12:16.