Problema dbf y php [SOLUCIONADO]
Problema dbf y php
|
| #0 |
 |
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
|
| #2 |
 |
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
|
| #4 |
 |
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 

Re: Problema dbf y php
Re: Problema dbf y php
|
| #6 |
 |
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!
|
Asunto
|
| #8 |
 |
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
|
| #9 |
 |
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
|
| #10 |
 |
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!
|
Re: Problema dbf y php
|
| #12 |
 |
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 

Re: Problema dbf y php
|
| #13 |
 |
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
|
| #14 |
 |
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
|
| #15 |
 |
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
|
| #16 |
 |
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 ::