Foros del Web » Programando para Internet » PHP »

Es correcto?

Estas en el tema de Es correcto? en el foro de PHP en Foros del Web. No tengo mucho conocimiento en esto, por favor, quisiera saber si esto es correcto: Código PHP: $cogechiste  =  mysql_query ( "SELECT * FROM chistes WHERE id = '" . $_GET [ 'id' ...
  #1 (permalink)  
Antiguo 23/05/2008, 08:55
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
De acuerdo Es correcto?

No tengo mucho conocimiento en esto, por favor, quisiera saber si esto es correcto:
Código PHP:
$cogechiste mysql_query("SELECT * FROM chistes WHERE id = '".$_GET['id']."' LIMIT 1");
 
$cogidochiste = ($row mysql_fetch_array($cogechiste));
 
$nombre $row['nombre'];
 
$chiste $row['chiste']; 
  #2 (permalink)  
Antiguo 23/05/2008, 08:57
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 20 años, 11 meses
Puntos: 3
Respuesta: Es correcto?

su vas a sacar solo un chiste entonces...


Código PHP:
$cogechiste mysql_query("SELECT * FROM chistes WHERE id = '".$_GET['id']."' LIMIT 1"); 
$row mysql_fetch_assoc($cogechiste); 
 
$nombre $row['nombre']; 
 
$chiste $row['chiste']; 
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #3 (permalink)  
Antiguo 23/05/2008, 09:01
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 86
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Es correcto?

No debes usar datos recibidos por GET o POST o COOKIE directamente en consultas a tu base de datos por razones de seguridad. En este caso, si lo que esperas es un número, puedes hacer asi:

$id = $_GET["id"] - 0;

Esto te asegura que en la variable id tienes un número.

Luego, si cada chiste tiene su id unico, no necesitas poner el LIMIT 1.

También sería bueno verificar si la consulta dio bien antes de tomar el resultado.

No entiendo para que la asignacion de $cogidochiste.

Te pongo el codigo un poco cambiado:

Código PHP:
$id $_GET["id"] - 0;
$cogechiste mysql_query("SELECT * FROM chistes WHERE id = $id"); 
if (
$cogechiste && mysql_num_rows($cogechiste) > 0){
 
$row mysql_fetch_array($cogechiste); 
 
$nombre $row['nombre']; 
 
$chiste $row['chiste'];  

__________________
-ronnieb

WebTools
  #4 (permalink)  
Antiguo 23/05/2008, 09:16
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
De acuerdo Respuesta: Es correcto?

Muchas gracias

  #5 (permalink)  
Antiguo 23/05/2008, 09:29
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: Es correcto?

No estoy de acuerdo con el "restar 0", no me parece lo mejor. Tampoco dejar una variable (como lo es $nombre) sin setear, ya que si no entra en la condición no existirá y además que es costoso el mysql_num_rows. Otra...usar un limit comparando un PK?...en si, lo haría así:

Código PHP:
$id = empty($_GET['id']) ? intval($_GET['id']);

$sql "
SELECT 
 nombre, chiste 
FROM 
 chistes 
WHERE 
 id = '{$id}' 
"
;
$r mysql_query$sql );  

if( 
$rs mysql_fetch_assoc($r) ){
 
$nombre $rs['nombre'];  
 
$chiste $rs['chiste']; 
}else{
 
$nombre '';
 
$chiste '';

Hay otras variantes, pero esta no está mal.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #6 (permalink)  
Antiguo 23/05/2008, 10:07
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Es correcto?

He optado por esto y no funciona.

¿cuál es el fallo?

$cogechiste = mysql_query("SELECT * FROM chistes WHERE id = '$id'");
$row = mysql_fetch_assoc($cogechiste);
$nombre = $row['nombre'];
$chiste = $row['chiste'];
$borrado = "borrados";

Código PHP:
.............................................. 

// Eliminamos todos los Registros anteriores al dia de hoy 
mysql_query("Delete from controlborrar where fecha < '$fecha'");
    
 if(
$cuantos<2){
 
mysql_query("INSERT INTO chistes (nombre,chiste,categoria) VALUES ('$nombre','$chiste','$borrado') LIMIT 1");
 echo 
"Cambiado de sitio el chiste";
mysql_query("DELETE FROM chistes WHERE id = '$id' LIMIT 1");
echo 
"BORRADO CON ÉXITO";
mysql_query("INSERT INTO controlborrar (usuario,fecha) values ('$user','$fecha')");
}else{
echo 
"Lo siento, ya has borrado hoy dos chistes.";
}
?> 
  #7 (permalink)  
Antiguo 23/05/2008, 12:11
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 15 años, 11 meses
Puntos: 11
Respuesta: Es correcto?

Cita:
Iniciado por nicolaspar Ver Mensaje
No estoy de acuerdo con el "restar 0", no me parece lo mejor. Tampoco dejar una variable (como lo es $nombre) sin setear, ya que si no entra en la condición no existirá y además que es costoso el mysql_num_rows. Otra...usar un limit comparando un PK?...en si, lo haría así:

Código PHP:
$id = empty($_GET['id']) ? intval($_GET['id']);

$sql "
SELECT 
 nombre, chiste 
FROM 
 chistes 
WHERE 
 id = '{$id}' 
"
;
$r mysql_query$sql );  

if( 
$rs mysql_fetch_assoc($r) ){
 
$nombre $rs['nombre'];  
 
$chiste $rs['chiste']; 
}else{
 
$nombre '';
 
$chiste '';

Hay otras variantes, pero esta no está mal.
la otra variante es:
Código PHP:
$id = (int)$_GET['id']; 
  #8 (permalink)  
Antiguo 24/05/2008, 07:09
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Pregunta Respuesta: Es correcto?

Al final he optado por esto, pero no funciona, me aparece el mensaje marcado en rojo, del final.

<?php
$nombre=$_POST["Nombre"];
$chiste=$_POST["Chiste"];
$category=$_POST["Categoría"];
if(strlen($nombre) == 0){
$errores++;
}
if(strlen($chiste) == 0){
$errores++;
}
if(strlen($category) == 0){
$errores++;
}
if($errores >0){
echo "<h1><font color='#0000CC'/>Lo siento, falta algún campo por rellenar</h1>";
exit();
} else {
$connection=mysql_connect("mysql..com","","")
or die("Error conectando a la base de datos");
$db=mysql_select_db("061294",$connection)
or die ("Error seleccionando la base de datos");
$query="insert into chistes (nombre,chiste,categoria) values ('$nombre','$chiste','$category')";
mysql_query($query)
or die ("Error al insertar los datos");
}
?>

Última edición por yonolose; 24/05/2008 a las 08:41
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 02:11.