Foros del Web » Programando para Internet » PHP »

expediente x

Estas en el tema de expediente x en el foro de PHP en Foros del Web. sigo intentando entender que pasa con esta consulta: elseif (empty($firstname)) { $sql = "select title, firstname, surname, company, address, postcode, tel, mobile_phone, fax, email, country ...
  #1 (permalink)  
Antiguo 15/03/2010, 07:36
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 14 años, 6 meses
Puntos: 0
expediente x

sigo intentando entender que pasa con esta consulta:

elseif (empty($firstname))
{
$sql = "select title, firstname, surname, company, address, postcode, tel, mobile_phone, fax, email, country

from customers

where surname like '%".$lastname."%' ";


si en la BD esta 'perez' y 'perez martinez' y tu al buscar metes 'perez' te saca los dos resultados.

si en la BD esta 'perez martinez' y tu al buscar metes 'perez' te dice que ese usuario no esta en la BD.

No lo entiendo!!!
garaciassssssss
  #2 (permalink)  
Antiguo 15/03/2010, 07:38
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: expediente x

¿Podrías colocar la estructura de la base de datos con los datos que tengas?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 15/03/2010, 07:46
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: expediente x

cus_id int(11) Yes NULL auto_increment Change Drop Primary Index Unique Fulltext
loginname varchar(40) latin1_swedish_ci Yes Change Drop Primary Index Unique Fulltext
PASSWORD varchar(40) latin1_swedish_ci Yes Change Drop Primary Index Unique Fulltext
Title varchar(30) latin1_swedish_ci Yes NULL Change Drop Primary Index Unique Fulltext
firstname varchar(50) latin1_swedish_ci Yes Change Drop Primary Index Unique Fulltext
surname varchar(100) latin1_swedish_ci Yes Change Drop Primary Index Unique Fulltext
company varchar(100) latin1_swedish_ci Yes Change Drop Primary Index Unique Fulltext
address varchar(150) latin1_swedish_ci Yes Change Drop Primary Index Unique Fulltext
postcode varchar(70) latin1_swedish_ci Yes NULL Change Drop Primary Index Unique Fulltext
tel varchar(40) latin1_swedish_ci Yes NULL Change Drop Primary Index Unique Fulltext
mobile_phone varchar(40) latin1_swedish_ci Yes NULL Change Drop Primary Index Unique Fulltext
fax varchar(40) latin1_swedish_ci Yes NULL Change Drop Primary Index Unique Fulltext
email varchar(80) latin1_swedish_ci Yes NULL Change Drop Primary Index Unique Fulltext
country varchar(50) latin1_swedish_ci Yes Change Drop Primary Index Unique Fulltext
reviewer enum('YES', 'NO', 'ADMIN') latin1_swedish_ci Yes NO Change Drop Primary Index Unique Fulltext
error_info int(11) Yes 0 Change Drop Primary Index Unique Fulltext
  #4 (permalink)  
Antiguo 15/03/2010, 07:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: expediente x

¿Y los datos, algunos de ellos podrías tambien postearlos?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 15/03/2010, 07:58
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: expediente x

2 jmgonzalez test Jose Manuel GONZALEZ Software Institute Parque Tecnolog de Palencia 64016 Spain +34 5 23 12 47 [email protected] NO 20


3 mrfven Mechtdald ROBEN Amida Corp Avenue de Bellotas 31 1160 Spain +34 2 30043 75 +34 2 11123 64 [email protected] Spain NO 11
  #6 (permalink)  
Antiguo 15/03/2010, 08:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: expediente x

Por último, haz una prueba usando gonzalez y verifica la variable $lastname si está recibiendo los datos correctamente, me refiero a que le hagas un var_dump antes de hacer la consulta para ver si tiene los datos correctos
Código PHP:
Ver original
  1. var_dump($lastname);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 15/03/2010, 08:10
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: expediente x

si busco 'blanco' me sale error no hay cliente con ese nombre (como siempre)

si busco 'blanco rodriguez' me sale: string(16) "BLANCO RODRIGUEZ"
  #8 (permalink)  
Antiguo 15/03/2010, 08:14
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: expediente x

Haz esto directamente para ver sí te da algún error
Código PHP:
Ver original
  1. $sql = "select * from customers where surname like '%blanco%'";
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 15/03/2010, 08:20
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: expediente x

si busco 'blanco' me sale error no hay cliente con ese nombre (como siempre)

si busco 'blanco rodriguez' me sale: Database error
  #10 (permalink)  
Antiguo 15/03/2010, 08:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: expediente x

¿El mysql_error te indicó que tienes un Database error? ¿No fue más específico? Verifica que estes conectandote correctamente con la base de datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 15/03/2010, 08:27
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: expediente x

ola

me has dicho antes que pusiera esto:

1.
$sql = "select * from customers where surname like '%blanco%'";
2.
mysql_query($sql) or die(mysql_error());


tengo que quitar esto de mi codigo?:

$result = send_sql($MySQL->db1, $sql);

si lo quito me sale lo que te he dicho,

si lo pongo :

si busco 'blanco' me sale error no hay cliente con ese nombre (como siempre).

si busco 'blanco rodriguez' me sale: Los datos de blanco rodriguez (correcto).
  #12 (permalink)  
Antiguo 15/03/2010, 08:29
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: expediente x

Escribe lo que te indique, usando el mysql_query para ver si te da error en la consulta.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #13 (permalink)  
Antiguo 15/03/2010, 09:05
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: expediente x

lo dicho entonces antes:

1.
$sql = "select * from customers where surname like '%blanco%'";
2.
mysql_query($sql) or die(mysql_error());




si busco 'blanco' me sale error no hay cliente con ese nombre (como siempre)

si busco 'blanco rodriguez' me sale: Database error
  #14 (permalink)  
Antiguo 15/03/2010, 09:15
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: expediente x

Si estás usando MySQL y tienes una versión actualziada eso no debería pasar. Yo te sugeriría que empezases por escribir la sintaxis como la definen (con mayúsculas y las `` y esas cosas), que si las usan es por algo. No te va a dar errores ponerlo en minúsculas, pero seguir el convenio hace que leer los códigos sea más rápido (las palabras clave en MySQL están en mayúsculas).

En principio debes tener un fallo en la sentencia. Si tienes PHP my Admin (para mySQL) carga las sentencias desde allí (es decir que las pruebes allí). Si funcionan desde PHPMyAdmin deben funcionar en mysql_query (ya que es el mismo sistema).

Tus códigos los pondría:

Código MySQL:
Ver original
  1. SELECT `title`, `firstname`, `surname`, `company`, `address`, `postcode`, `tel`, `mobile_phone`, `fax`, `email`, `country`
  2. FROM `customers`
  3. WHERE `surname` LIKE '%perez%';

Nota: Encripta los password, no es seguro tenerlos sin encriptar (y no me refiero a una encriptación reversible como base 64, sino a una irreversible como sha1 o md5).
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #15 (permalink)  
Antiguo 15/03/2010, 11:32
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: expediente x

A ver chicos!

He puesto en el PhpMyAdmin la consulta como me pone AnesGy y funciona pongo:

SELECT `title`, `firstname`, `surname`, `company`, `address`, `postcode`, `tel`, `mobile_phone`, `fax`, `email`, `country`
FROM `customers`
WHERE `surname` LIKE '%blanco%';


y me encuntra 'blanco rodriguez' es decir, hace lo tien que hacer.

En el PHP pongo:

SELECT " `title`, `firstname`, `surname`, `company`, `address`, `postcode`, `tel`, `mobile_phone`, `fax`, `email`, `country`
FROM `customers`
WHERE `surname` LIKE '%blanco%' ";

y me pone que no hay ningun resultado, es una cosa magica..veis algo raro?

Gracias!!!!
  #16 (permalink)  
Antiguo 15/03/2010, 11:34
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: expediente x

El problema es que no vemos el código que usas para conectarte a la base de datos y no te podemos decir con lo que nos has dado.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #17 (permalink)  
Antiguo 15/03/2010, 11:49
 
Fecha de Ingreso: octubre-2009
Mensajes: 154
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: expediente x

te refieres a esto?



myconnect();

function myconnect() {
global $MySQL;
if (! $linkid=mysql_connect("$MySQL->Host","$MySQL->User","$MySQL->Passw")) {
echo "The connection to ",$MySQL->Host," could not be established <br>";
exit;

mysql_query( "SET NAMES utf8", $linkid );

mysql_query( "SET CHARACTER SET utf8", $linkid );


}
return $linkid;
}

function createdb($db, $lkid) {
if (! $res=mysql_create_db($db, $lkid)) {
echo mysql_error($lkid);
exit;
}
return $res;
}

function send_sql($db, $sql) {
if (! $res=mysql_db_query($db, $sql)) {
echo mysql_error();
exit;
}
return $res;
}


function tab_out($result) {
$anz=mysql_num_fields($result);
echo "<table width=68% border=0 cellpadding='2' cellspacing='2'>";
echo "<tr bgcolor=#D0D0D0>";
for ($i=0;$i<$anz;$i++){
echo "<th>";
echo mysql_field_name($result,$i);
echo "</th>";
}
echo "</tr>";
echo "<tr>";
while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
foreach ($row as $elem) {
echo "<td bgcolor='#E8E8E8'><font size='-1'>$elem</font></td>";
}
echo "</tr>";
}
echo "</table>";
  #18 (permalink)  
Antiguo 15/03/2010, 13:10
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: expediente x

Generalmente cuando algo no funciona por usar una clase innecesaria como esta, no se usa y se hace manualmente. Necesitas 4 funciones (o 3 depende) para manejar mysql:

mysql_connect
mysql_select_db
mysql_query
mysql_close

Si no tienes un sistema muy complejo donde tengas k mantener un global absoluto con la conexion a la base de datos no te recomiendo que uses eso.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it

Etiquetas: Ninguno
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 07:59.