Foros del Web » Programando para Internet » PHP »

Problema sentencias mySQL

Estas en el tema de Problema sentencias mySQL en el foro de PHP en Foros del Web. tengo errores con las consultas mysql, no se que estoy haciendo mal, la cosa es que me llegan 2 nombres desde un formulario y necesito ...
  #1 (permalink)  
Antiguo 11/10/2008, 18:42
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 3 meses
Puntos: 0
Problema sentencias mySQL

tengo errores con las consultas mysql, no se que estoy haciendo mal, la cosa es que me llegan 2 nombres desde un formulario y necesito ver si esos 2 nombres estan en la base de datos, si estan muestro el campo porcentaje, sino los agrego a la base de datos, pero me toma como mal las mysql_query, a ver si me pueden ayudar, Nombre de tabla:Nombres, campos:nombre1,nombre2 y porcentaje. desde ya muchas gracias!....

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","test","")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("test",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}

$link=Conectarse();
echo "Conexión con la base de datos conseguida.<br>";

$suma=0;
$result = mysql_query ("(SELECT porcentaje FROM nombres WHERE nombre1='$_POST['nombre1']' AND nombre2='$_POST['nombre2']') OR
(SELECT porcentaje FROM nombres WHERE nombre1='$_POST['nombre2']' AND nombre2='$_POST['nombre1']')";)
or die ("Invalid query");
$num_rows = mysql_num_rows($result);/*chequeo que se haya encontrado algo*/
if($num_rows>0){
$row = mysql_fetch_array($result);
echo $row[0];
}
else{


for ($i=0;$i<strlen($cad1);$i++)
$suma+=ord($cad1{$i});
for ($i=0;$i<strlen($cad2);$i++)
$suma+=ord($cad2{$i});
$num=mt_rand(0,100);
$resto=$suma%$num;

if($resto<=100)
{
$resultado=$resto;
echo $resultado."%";
}
else
{
$resultado=$resto%$resto;
echo $resultado."%";
}
mysql_query("INSERT INTO nombres (nombre1,nombre2,porcentaje)
VALUES ('$cad1','$cad2','$resultado')");
}
mysql_close($link); //cierra la conexion

?>
</body>
</html>

Última edición por juanf03; 11/10/2008 a las 18:53
  #2 (permalink)  
Antiguo 11/10/2008, 18:54
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Problema sentencias mySQL

Cita:
Iniciado por juanf03 Ver Mensaje
tengo errores con las consultas mysql, no se que estoy haciendo mal, la cosa es que me llegan 2 nombres desde un formulario y necesito ver si esos 2 nombres estan en la base de datos, si estan muestro el campo porcentaje, sino los agrego a la base de datos, pero me toma como mal las mysql_query, a ver si me pueden ayudar, Nombre de tabla:Nombres, campos:nombre1,nombre2 y porcentaje. desde ya muchas gracias!....

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","test","")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("test",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}

$link=Conectarse();
echo "Conexión con la base de datos conseguida.<br>";

$suma=0;
$result = mysql_query ("(SELECT porcentaje FROM nombres WHERE nombre1='$_POST['nombre1']' AND nombre2='$_POST['nombre2']') OR
(SELECT porcentaje FROM nombres WHERE nombre1='$_POST['nombre2']' AND nombre2='$_POST['nombre1']')";)
or die ("Invalid query");
$num_rows = mysql_num_rows($result);/*chequeo que se haya encontrado algo*/
if($num_rows>0){
$row = mysql_fetch_array($result);
echo $row[0];
}
else{


for ($i=0;$i<strlen($cad1);$i++)
$suma+=ord($cad1{$i});
for ($i=0;$i<strlen($cad2);$i++)
$suma+=ord($cad2{$i});
$num=mt_rand(0,100);
$resto=$suma%$num;

if($resto<=100)
{
$resultado=$resto;
echo $resultado."%";
}
else
{
$resultado=$resto%$resto;
echo $resultado."%";
}
mysql_query("INSERT INTO nombres (nombre1,nombre2,porcentaje)
VALUES ('$_POST['nombre1']','$_POST['nombre2']','$resultado')");
}
mysql_close($link); //cierra la conexion

?>
</body>
</html>
  #3 (permalink)  
Antiguo 11/10/2008, 18:59
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema sentencias mySQL

Creo que el problema esta en el OR que pones para "concatenar" las dos queries.

Deberias hacer algo como lo siguiente, que seria la manera correcta:
SELECT porcentaje FROM nombres WHERE (nombre1=$_POST['nombre1'] AND nombre2=$_POST['nombre2']) OR (nombre1=$_POST['nombre2'] AND nombre2=$_POST['nombre1'])
  #4 (permalink)  
Antiguo 11/10/2008, 19:03
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Problema sentencias mySQL

$result = mysql_query ("SELECT porcentaje FROM nombres WHERE (nombre1=$_POST['nombre1'] AND nombre2=$_POST['nombre2']) OR (nombre1=$_POST['nombre2'] AND nombre2=$_POST['nombre1']);")
or die ("Invalid query");

me sigue tirando error de sintaxis ahí, no se que podrá ser....
  #5 (permalink)  
Antiguo 11/10/2008, 19:09
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Problema sentencias mySQL

(select ...) or (select ...)
nunca habia visto eso sin duda el problema es tu select hazlo como te indica Ronruby o tb puedes usar un "in"

Código PHP:
$sql="SELECT porcentaje FROM nombres 
WHERE nombre1 in ('"
.$_POST['nombre1']."','".$_POST['nombre2']."') 
and nombre2 in ('"
.$_POST['nombre1']."','".$_POST['nombre2']."')"
ejecutalo y nos cuentas q pasa

Salu2,
  #6 (permalink)  
Antiguo 11/10/2008, 19:09
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 9 meses
Puntos: 19
De acuerdo Respuesta: Problema sentencias mySQL

Código PHP:
$result mysql_query ("(SELECT porcentaje FROM nombres WHERE nombre1='{$_POST['nombre1']}' AND nombre2='{$_POST['nombre2']}') OR
                        (SELECT porcentaje FROM nombres WHERE nombre1='{$_POST['nombre2']}' AND nombre2='{$_POST['nombre1']}')"
;) 
Los corchetes en las variables Super Globals

Saludos, fijate si es eso
  #7 (permalink)  
Antiguo 11/10/2008, 19:10
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Problema sentencias mySQL

fue xq no erstabas validando las comillas ejecutalo como te digo y nos cuentas
  #8 (permalink)  
Antiguo 11/10/2008, 19:17
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 17 años, 9 meses
Puntos: 19
Respuesta: Problema sentencias mySQL

con las llaves funciona igual, es lo mismo que escribir la concatenacion, para los tipos de variables Array
{$var['algo']}

Saludos, igual el aporte de K-SuMa tambien es correcto
  #9 (permalink)  
Antiguo 11/10/2008, 19:18
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Problema sentencias mySQL

el problema ese ya se arregló, muchas gracias, ahora me dan problemas las líneas

$consulta="INSERT INTO nombres (nombre1,nombre2,porcentaje)
VALUES ($_POST['nombre1'],$_POST['nombre2'],$resultado)";

mysql_query($consulta);
  #10 (permalink)  
Antiguo 11/10/2008, 19:18
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema sentencias mySQL

Cita:
Iniciado por korg1988 Ver Mensaje
con las llaves funciona igual, es lo mismo que escribir la concatenacion, para los tipos de variables Array
{$var['algo']}

Saludos, igual el aporte de K-SuMa tambien es correcto
Nisiquiera yo sabia eso de los corchetes para los arrays. Gracias por el dato korg1988.

Cita:
el problema ese ya se arregló, muchas gracias, ahora me dan problemas las líneas

$consulta="INSERT INTO nombres (nombre1,nombre2,porcentaje)
VALUES ($_POST['nombre1'],$_POST['nombre2'],$resultado)";

mysql_query($consulta);
Siempre pon los valores entre comillas simples, de lo contrario MySQL los interpretara como una columna.
Ejemplo:
INSERT INTO tabla(columna1, columna2) VALUES('valor1', 'valor2')
  #11 (permalink)  
Antiguo 11/10/2008, 19:24
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Problema sentencias mySQL

muchas gracias, se arreglaron todos los problemas menos una cosa, el porcentaje que muestro a partir de los dos nombres da 0, alguien tiene idea de porque???

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","test","")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("test",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}

$link=Conectarse();
echo "Conexión con la base de datos conseguida.<br>";

$suma=0;
$consulta="SELECT porcentaje FROM nombres
WHERE nombre1 in ('".$_POST['nombre1']."','".$_POST['nombre2']."')
and nombre2 in ('".$_POST['nombre1']."','".$_POST['nombre2']."')";
$result = mysql_query ($consulta)
or die ("Invalid query");
$num_rows = mysql_num_rows($result);/*chequeo que se haya encontrado algo*/
if($num_rows>0){
$row = mysql_fetch_array($result);
echo $row[0];
}
else{


for ($i=0;$i<strlen($cad1);$i++)
$suma+=ord($cad1{$i});
for ($i=0;$i<strlen($cad2);$i++)
$suma+=ord($cad2{$i});
$num=mt_rand(0,100);
$resto=$suma%$num;

if($resto<=100)
{
$resultado=$resto;
echo $resultado."%";
}
else
{
$resultado=$resto%$resto;
echo $resultado."%";
}
$consulta="INSERT INTO nombres (nombre1,nombre2,porcentaje)
VALUES ('{$_POST['nombre1']}','{$_POST['nombre2']}','{$resultado}')";
mysql_query($consulta);
}
mysql_close($link); //cierra la conexion

?>
</body>
</html>
  #12 (permalink)  
Antiguo 11/10/2008, 19:30
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema sentencias mySQL

$resultado=$resto%$resto;

El signo % se utiliza para encontrar el modulo.
Que no es mas que el residuo de la division de 2 numeros.

Al utilizar el MISMO numero, el residuo siempre da 0.
  #13 (permalink)  
Antiguo 11/10/2008, 20:02
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Problema sentencias mySQL

Bueno, ya solucioné casi todo(Y GRACIAS A USTEDES!!!), pero una última cosa, la salida por pantalla me queda:

Conexión con la base de datos conseguida.
45%/*for ($i=0;$i

solo quiero que salga el 45%, cual es el problema???

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<?php
function Conectarse()
{
if (!($link=mysql_connect("localhost","test","")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("test",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}

$link=Conectarse();
echo "Conexión con la base de datos conseguida.<br>";
$suma=0;
$consulta="SELECT porcentaje FROM nombres
WHERE nombre1 in ('".$_POST['nombre1']."','".$_POST['nombre2']."')
and nombre2 in ('".$_POST['nombre1']."','".$_POST['nombre2']."')";
$result = mysql_query ($consulta)
or die ("Invalid query");
$num_rows = mysql_num_rows($result);/*chequeo que se haya encontrado algo*/
if($num_rows>0){
$row = mysql_fetch_array($result);
echo $row[0];
}
else{$num=mt_rand(0,100);
echo $num."%";
$consulta="INSERT INTO nombres (nombre1,nombre2,porcentaje)
VALUES ('{$_POST['nombre1']}','{$_POST['nombre2']}','{$num}')";
mysql_query($consulta);
}
mysql_close($link); //cierra la conexion

?>
  #14 (permalink)  
Antiguo 11/10/2008, 20:09
 
Fecha de Ingreso: enero-2008
Mensajes: 125
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Problema sentencias mySQL

ya se arregló, el problema era que tenía que poner en vez de $num."%"; hay que poner "$num %", saludos
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 16:09.