PHP-Hispano.net Comunidad hispana de desarrollo web

Contacto | #php_para_torpes | Enlázanos | ¿Quiénes somos?

1107 usuarios Online (0)

Darse de alta en la web | Recuperar password   
Inicio / Foros / Otras BD / Problema dbf y php

Problema dbf y php [SOLUCIONADO]

16 respuestas 1874 visitas Categoría Otras BD

Problema dbf y php

Avatar de Takehiko
* * * * * * *

(Nivel 1 - 18 posts)

#0 Offline Takehiko Usuario 08 feb 10
Hola buenas, tengo un programa donde se guardan los datos de matriculas de vehiculos, pero se guardan en un archivo dbf. He conseguido mediante éste código conectarme al dbf.
El navegador me muestra los datos de las matriculas. pero quiero que mediante un formulario pueda leer los datos que coincidan con la busqueda

$conn = new COM("ADODB.Connection");
$conn->Open('Provider=VFPOLEDB.1;Data Source="C:IDXGesgru1000ESTANCIA.DBF"');
// SQL statement to build recordset.
$rs = $conn->Execute("SELECT * FROM ESTANCIA where matricula Like '%$buscar%' ORDER BY matricula");
echo "Matriculas encontradas en el programa:
<hr />";
// Display all the values in the records set
while (!$rs->EOF) {
$fv = $rs->Fields("matricula");
echo $fv->value."
n";
$rs->MoveNext();
}
$rs->Close();
?>

Añadiendo la sentencia Like he intentado buscar los datos que coincidan, pero no a funcionado. Este es el formulario

<html>
<body>
<form method ="POST" action = "consulta2.php">
<strong> Busca tu coche, introduce la matricula: </strong>
<input type="text" name="buscar" size="20"><br><br>
<input type="submit" value="Buscar">
</form>
</body>
</html>


Pero no consigo que funcione, no se si me falta algo. Alguien me puede ayudar?


1 Saludo y Gracias.

Re: Problema dbf y php

Avatar de Eloy8857
* * * * * * *

(Nivel 4 - 449 posts)

#1 Offline Eloy8857 Usuario 09 feb 10
En la MSDN el LIKE de visual foxpro viene con la expresión entre comillas dobles, no simples. Prueba con eso a ver si hay suerte.

Saludos.

Restless Souls Online: se viene un gran MMORPG

Re: Problema dbf y php

Avatar de Takehiko
* * * * * * *

(Nivel 1 - 18 posts)

#2 Offline Takehiko Usuario 09 feb 10
He probado en like ponerle comillas dobles, simples.. pero da error. No hay manera. no hace caso. Simplemente se conecta con el programa y muestra todos la tabla especificada del dbf.

Re: Problema dbf y php

Avatar de Eloy8857
* * * * * * *

(Nivel 4 - 449 posts)

#3 Offline Eloy8857 Usuario 09 feb 10
Haz una cosa: copia toda la cadena que hay en el Execute, y muéstrala por pantalla con un var_dump. A ver si es que $buscar va a estar vacío o algo...

Saludos.

Restless Souls Online: se viene un gran MMORPG

Re: Problema dbf y php

Avatar de Takehiko
* * * * * * *

(Nivel 1 - 18 posts)

#4 Offline Takehiko Usuario 09 feb 10
Voy a buscar info del var_dump que me comentas. Gracias! Lo malo de todo esto es que, yo de php, asp se muy poca cosa, y foxpro... pues nada XD.Nada sigo insistiendo. Gracias!

PD: he probado ya el var_dump y me aparece lo siguiente

object(variant)#2 (0) {}

SOLUCIÓN PuntuaciónPuntuaciónPuntuaciónRe: Problema dbf y php

Avatar de Eloy8857
* * * * * * *

(Nivel 4 - 449 posts)

#5 Offline Eloy8857 Usuario 09 feb 10
Me refería a que hagas var_dump("SELECT * FROM ESTANCIA where matricula Like '%$buscar%' ORDER BY matricula") para ver qué consulta se envía a la BD.

Saludos.

Restless Souls Online: se viene un gran MMORPG

Re: Problema dbf y php

Avatar de Takehiko
* * * * * * *

(Nivel 1 - 18 posts)

#6 Offline Takehiko Usuario 09 feb 10
Le he puesto var_dump("SELECT * FROM ESTANCIA where matricula Like '%$buscar%' ORDER BY matricula"). El principio de la conexión lo he dejado igual. Y me aparece
 
string(67) "SELECT * FROM ESTANCIA where matricula Like '%%' ORDER BY MATRICULA
 
¬¬ (me quedo igual XD)

Muchas Gracias por tu respuesta! Y gracias por intentar ayudar! 

SOLUCIÓN PuntuaciónPuntuaciónPuntuaciónRe: Problema dbf y php

Avatar de Eloy8857
* * * * * * *

(Nivel 4 - 449 posts)

#7 Offline Eloy8857 Usuario 09 feb 10
Bueno ahí debes ver que en la consulta que se envía no hay filtro en el LIKE. Eso es que $buscar está vacío. Prueba con "SELECT * FROM ESTANCIA where matricula Like '%$_POST[buscar]%' ORDER BY matricula" y asegúrate de que pones una matrícula al enviar el formulario :P

Saludos.

Restless Souls Online: se viene un gran MMORPG

Asunto

Avatar de Takehiko
* * * * * * *

(Nivel 1 - 18 posts)

#8 Offline Takehiko Usuario 09 feb 10
Sigue igual, me enseña todas las matriculas que le he introducido al programa Gresgru - http://www.idx.es/prod01.htm . Pongo exactamente en el formulario una de las matriculas que esta en la tabla estancia.dbf, pero nada. Muchas Gracias Eloy8857! Sigo buscando alguna solución. Igualmente si la encuentro la posteo por aquí. Ahora le haré otro var_dump como me enseñaste haber que sale.1 Saludo y Gracias, he posteado mi problema en dos foros "especializados en php" y mi post se ha hundido mas que el titanic sin respuesta alguna. Sigue apareciendo vacío con var_dump :,(

Re: Problema dbf y php

Avatar de Eloy8857
* * * * * * *

(Nivel 4 - 449 posts)

#9 Offline Eloy8857 Usuario 09 feb 10
Pon el código de consulta2.php, que es el script que procesa la búsqueda. En ese $_POST['buscar'] no puede estar vacío si el formulario es tan simple como lo has puesto en el primer mensaje y no le aplicas nada a la variable.

Saludos.

Restless Souls Online: se viene un gran MMORPG

Re: Problema dbf y php

Avatar de Takehiko
* * * * * * *

(Nivel 1 - 18 posts)

#10 Offline Takehiko Usuario 10 feb 10
Este es el codigo de consulta2.php con el var_dump

<?php
$conn = new COM("ADODB.Connection");
$conn->Open('Provider=VFPOLEDB.1;Data Source="C:IDXGesgru1000ESTANCIA.DBF"');
// SQL statement to build recordset.
var_dump ("SELECT * FROM ESTANCIA where matricula Like '%$_POST[buscar]%' ORDER BY matricula");
?>

Y este es el codigo solo con %$_POST y el resto de codigo igual que el del primer post, bueno, a este le añadí mas datos (modelo y marca) aparte de la matricula.

<?php
$conn = new COM("ADODB.Connection");
$conn->Open('Provider=VFPOLEDB.1;Data Source="C:IDXGesgru1000ESTANCIA.DBF"');
// SQL statement to build recordset.
$rs = $conn->Execute("SELECT * FROM ESTANCIA where matricula Like '%$_POST[buscar]%' ORDER BY matricula");
echo "<p>Matriculas encontradas en el programa:</p><hr>";
// Display all the values in the records set
while (!$rs->EOF) {
$fv = $rs->Fields("matricula");
echo $fv->value."<br>n";
$fv = $rs->Fields("marca");
echo $fv->value."<br>n";
$fv = $rs->Fields("modelo");
echo $fv->value."<br>n";
$rs->MoveNext();
}

$rs->Close();
?>

1 Saludo y Gracias!

SOLUCIÓN PuntuaciónPuntuaciónPuntuaciónRe: Problema dbf y php

Avatar de Eloy8857
* * * * * * *

(Nivel 4 - 449 posts)

#11 Offline Eloy8857 Usuario 10 feb 10
Falta algo porque si sólo interviene ese formulario y ese script, es imposible que hagas una búsqueda desde el form y $_POST['buscar'] esté vacío. Puedes hacer un var_dump($_POST) y enviar el formulario con una búsqueda a ver qué sale, pero si está vacío es que el formulario no es el que indicas. O no está el input con nombre buscar, o a saber... a veces reducimos el código de ejemplo o lo alteramos para que aparezca más legible, y el problema está en el código original. Vete al formulario y mira el código fuente resultante desde el navegador, y ése es el que importa porque el problema seguro que está en el HTML.

Saludos.

Restless Souls Online: se viene un gran MMORPG

Re: Problema dbf y php

Avatar de Takehiko
* * * * * * *

(Nivel 1 - 18 posts)

#12 Offline Takehiko Usuario 10 feb 10
Este es el formulario que tengo.

<html>
<body>
<form method ="POST" action = "consulta2.php">
<strong> Busca tu coche, introduce la matricula: </strong>
<input type="text" name="buscar" size="20"><br><br>
<input type="submit" value="Buscar">
</form>
</body>
</html>


Cago en to! era el simbolo del dolar en el $ en el buscar! Ahora funciona! con POST lenyes. Ahora a añadir más cosas! Muchisimas gracias de verdad!

Se puede poner si no encuentra coincidencia diga que no ha encontrado coincidencias? Y el otro problema es que si no pongo nada sale el listado de todo. Y si pones las dos primeras cifras de una aparece también.

Por cierto estos datos que salen se puede organizar en tablas? Eso ahora lo buscare como hacerlo.

1 Saludo y Gracias!!!!! Ahora haber con que mas problemas me encuentro!!

GRACIAS NUEVAMENTE! la única persona que me ha ayudado! Gracias!

SOLUCIÓN PuntuaciónPuntuaciónPuntuaciónRe: Problema dbf y php

Avatar de Eloy8857
* * * * * * *

(Nivel 4 - 449 posts)

#13 Offline Eloy8857 Usuario 10 feb 10
Casi siempre es un fallo tonto :P

Para saber si no ha habido coincidencias puedes consultar la propiedad $rs->EOF nada más ejecutar la consulta, y si evalúa a true es que no hay registros.

Para evitar las búsquedas vacías, simplemente comprueba $_POST['buscar'] !== '' (con dos =, no uno) y así sabrás si no se ha escrito nada.

El % coincide con cualquier caracter de 0 a N veces, así que si buscas %12% se encontrarán matrículas que contengan 12 en cualquier sitio. Para buscar sólo las que comiencen por algo usa % sólo al final, que quede por ejemplo 12%.

Para mostrar una tabla con los resultados pues es fácil, usa HTML.

Saludos.

Restless Souls Online: se viene un gran MMORPG

Re: Problema dbf y php

Avatar de Takehiko
* * * * * * *

(Nivel 1 - 18 posts)

#14 Offline Takehiko Usuario 10 feb 10
Poniendo '%$_POST [buscar]' con un solo porcentaje delante ya me hace lo que quería a la hora de poner la matricula entera que coincida.

Lo único que si lo dejo en blanco sigue mostrando todo. He probado '%$_POST [buscar] !==' pero busque lo que busque no aparece nada..

Lo del mostrar en tabla. Usando html? lo que me muestra es un archivo php cuando hago la búsqueda, ahora probare. 1 Saludo! Y gracias! ojalá hubiese mas gente por los foros con ganas de ayudar!

PD: Te marco las gracias por este post, pero cuando actualizo se quita.. es así,no?

Vale, otra cosa. Desde el inspector de etiquetas del dreamweaver puedes poner que salte un error si no rellenas nada en el formulario.Pero he estado probando sin lo del error, y si por ejemplo en el programa tengo dos matriculas que terminan por las mismas letras me muestra las dos, ejemplo tengo 2200ALB y 3234ALB si busco ALB solo me muestra ambas.

Re: Problema dbf y php

Avatar de Eloy8857
* * * * * * *

(Nivel 4 - 449 posts)

#15 Offline Eloy8857 Usuario 10 feb 10
Lo de $_POST['buscar'] !== '' es una condición de PHP, para que compruebes por código en un if que la búsqueda no está vacía.

Creo que nunca he dado las gracias por un post, no sé cómo va :P. Sería lo lógico que si agradeces un post ya no se pueda volver a agradecer... lo miraremos a ver.

Si has puesto LIKE '%$_POST[buscar]' entonces se buscará toda matrícula que termine en lo que se busque, porque se buscará cualquier carácter de 0 a N veces + la búsqueda realizada. Ten en cuenta que el % es como un asterisco, un comodín, y depende de dónde lo pongas el criterio de búsqueda variará:


'%A': todo lo que termina por A.
'A%': todo lo que empieza por A.
'%A%' todo lo que contiene A.



Saludos.

Restless Souls Online: se viene un gran MMORPG

Re: Problema dbf y php

Avatar de Takehiko
* * * * * * *

(Nivel 1 - 18 posts)

#16 Offline Takehiko Usuario 10 feb 10
Ok, entendido lo del % pero entonces lo dejare donde esta, lo malo es que para las matriculas 2040GNH y 2049IZH por ejemplo si a alguien se le ocurre poner H, pues le saldran el resto tambien..
En cuanto al "diseño" del resultado php solo me ha dejado utilizar <br> Si me pongo a usar código html, se fastidia todo por todos lados. XD.

Sigo con la búsqueda! 1 Saludo y nuevamente GRACIAS!

Responder mensaje

Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano, :: Registrar ::
Login / Password   

php-hispano.net 2002 - 2010 | XHTML 1.0
Datos Legales | Webmaster