Foros del Web » Programando para Internet » PHP »

Buscar arrays en php

Estas en el tema de Buscar arrays en php en el foro de PHP en Foros del Web. Veran tengo que hacer un ejercicio, en el que debo buscar en un archivo incluido ciertas palabras pasadas por post, y en donde debo de ...
  #1 (permalink)  
Antiguo 19/02/2010, 09:13
50l3r
Invitado
 
Mensajes: n/a
Puntos:
Buscar arrays en php

Veran tengo que hacer un ejercicio, en el que debo buscar en un archivo incluido ciertas palabras pasadas por post, y en donde debo de buscar es aqui:

Código PHP:
<?php

$libros 
= array(
            array(
"el medico","Noah Gordon","Time Warner"),
            array(
"marina","Carlos Ruiz Zafon","Edebé"),
            array(
"la hoguera de las vanidades","Tom Wolfe","RBA Editores"),
            array(
"el libro de las ilusiones","Paul Auster","Faber"),
            array(
"la muerte en venecia","Michael Mann","Anaya"),
            array(
"a sangre fria","Truman Capote","Ilusions").
            array(
"2010: odisea en el espacio","Artur C.Clarke","P&J"));
?>
este archivo ya lo tengo incluido, pero no se me ocurre ninguna funciona mas que array_search para buscar dentro de un array, y unicamente devuelve el numero, y necesito que devuelva todo, veran, para los que no me hayan comprendido aqui subo el ejercicio:

http://www.pixelizados.com/Usuarios/...vos/180811.doc

y aqui dejo todo lo que hice hasta ahora, la verdad estoy bloqueado, nunca habia hecho nada de buscar arrays como si fuese una base de datos:

Código PHP:
<html>
    <head>
        <title></title>
    </head>
    
    <body bgcolor=#336667 style="color:#ffffff">
    
        <hr align=center>
    
        <table align=center width=100%>
        
            <td width=330><img src=Imagenes/imagen.jpg></td>
            
            <td>
                <h1>Biblioteca</h1>
                <p><u><b>Operaciones con los Ejemplares</b></u></p>
                <p><form action=index.php method=post>
                            <div align=right><b>Buscar Ejemplar:&nbsp;</b><input type=text name=Buscar1><input type=submit value=Buscar></div>
                        </form>
                        <center>
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar2 value=Buscar2>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca">
                        </form>
                        
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar3 value=Buscar3>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca Ordenado por Titulo">
                        </form>
                        </center>
            </td>
    
        </table>
    
        <hr align=center>
    
    </body>
</html>

<?php

$señal1 
$_POST['Buscar1'];
$señal2 $_POST['Buscar2'];
$señal3 $_POST['Buscar3'];

/*if ($señal1 == '') && ($señal2 == '') && ($señal3 == ''){
echo "<div style='color:red;font-weight:bold'>No ha Introducido ninguna palabra</div>";
}*/

include "biblioteca.php";

if ( 
eregi("^[a-z0-9_]+$"$señal1) ) {


$si array_search("la",$libros[0]);
echo 
$si;

}else{
echo 
"Solo se permite Introducir numeros y letras en el Buscador";
exit;}
?>
  #2 (permalink)  
Antiguo 19/02/2010, 09:28
 
Fecha de Ingreso: agosto-2009
Ubicación: Lanzarote - Canarias
Mensajes: 57
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: Buscar arrays en php

in_array('termino',$array);
  #3 (permalink)  
Antiguo 19/02/2010, 09:29
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: Buscar arrays en php

La funcion eregi() esta en desuso (deprecated) fue reeemplazada por preg_match(), lee el manual al respecto!

En cuanto a tu problema:

Fijate que seria mas facil hacer esto:

Código PHP:
<?php 
$libros 
= array( 
                        
'libros1' => 'el medico,Noah Gordon,Time Warner'
                        
'libros2' => 'marina,Carlos Ruiz Zafon,Edebé'
                       
); 
# Agrega vos los demas
?>
Entonces despues al buscar:

Código PHP:
<?php 

# No uses cracteres raros!
$senal1 $_POST['Buscar1']; 
$senal2 $_POST['Buscar2']; 
$senal3 $_POST['Buscar3']; 

foreach(
$libros as $key => $books){

    
$boo explode(',',$books);

    foreach(
$boo as $b){
        if(
preg_match("/\b$b\b/i"$senal1){
          echo 
"El libro esta en la posicion $key y el nombre es $b<br />";
        }else if(
/* otro preg_match() con $senal2 y asi... */){}

    }

}
__________________
HV Studio
Diseño y desarrollo web
  #4 (permalink)  
Antiguo 19/02/2010, 10:31
50l3r
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Buscar arrays en php

lo he dicho como hicistes, haber si es asi:

Código PHP:
<?php

$libros 
=  array( 
                        
'libros1' => 'el medico,Noah Gordon,Time Warner'
                        
'libros2' => 'marina,Carlos Ruiz Zafon,Edebé',
                        
'libros3'=>  'la hoguera de las vanidades,Tom Wolfe,RBA Editores',
                        
'libros4'=>  'el libro de las ilusiones,Paul Auster,Faber',
                        
'libros5'=>  'la muerte en venecia,Michael Mann,Anaya',
                        
'libros6'=>  'a sangre fria,Truman Capote,Ilusions',
                        
'libros7'=>  '2010: odisea en el espacio,Artur C.Clarke,P&J'
                       
); 
?>
Código PHP:
<html>
    <head>
        <title></title>
    </head>
    
    <body bgcolor=#336667 style="color:#ffffff">
    
        <hr align=center>
    
        <table align=center width=100%>
        
            <td width=330><img src=Imagenes/imagen.jpg></td>
            
            <td>
                <h1>Biblioteca</h1>
                <p><u><b>Operaciones con los Ejemplares</b></u></p>
                <p><form action=index.php method=post>
                            <div align=right><b>Buscar Ejemplar:&nbsp;</b><input type=text name=Buscar1><input type=submit value=Buscar></div>
                        </form>
                        <center>
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar2 value=Buscar2>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca">
                        </form>
                        
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar3 value=Buscar3>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca Ordenado por Titulo">
                        </form>
                        </center>
            </td>
    
        </table>
    
        <hr align=center>
    
    </body>
</html>

<?php

$señal1 
$_POST['Buscar1'];
$señal2 $_POST['Buscar2'];
$señal3 $_POST['Buscar3'];

/*if ($señal1 == '') && ($señal2 == '') && ($señal3 == ''){
echo "<div style='color:red;font-weight:bold'>No ha Introducido ninguna palabra</div>";
}*/

include "biblioteca.php";

if ( 
eregi("^[a-z0-9_]+$"$señal1) ) {

foreach (
$libros as $i => $libritos){

    
$partes explode(',',$libritos);
    
    foreach (
$partes as $o){
    
    if(
preg_match("/\b$o\b/i"$señal1)){
          echo 
"El libro esta en la posicion $key y el nombre es $o<br />";
        }

    }}



}else{
echo 
"Solo se permite Introducir numeros y letras en el Buscador";
exit;}
?>


La cosa es que introduzco algo pero nada

solo necesito buscar caracteres con señal1, la 2 y la 3 son para otra cosa
  #5 (permalink)  
Antiguo 19/02/2010, 10:37
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: Buscar arrays en php

No se si leisto lo que escribi o no la verdad.... Fijate que te dije:

1) eregi() esta en desuso! No la uses mas! Reemplazala por preg_match()
2) No uses caracteres extraños para definir variables! Definilas como $senal (sin la ñ)
3) Esta linea

Código PHP:
Ver original
  1. echo "El libro esta en la posicion $key y el nombre es $o<br />";

Esta mal, fijate que reemplazaste todos los nombres de variables que te escribi yo, excepto $key (deberia ser $i)

Ademas podrias agregarle un else al if que tiene al preg_math() para que te imprima algo en otro caso, se entiende?

El problema esta en las mayusculas y minusculas seguramente, escribi para buscar TAL CUAL aparece en el array
__________________
HV Studio
Diseño y desarrollo web
  #6 (permalink)  
Antiguo 19/02/2010, 11:11
50l3r
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Buscar arrays en php

eregi es lo que siempre uso, y la verdad que me funciona por ahora, pero creo que no es ese el problema, mira

cambie ya las "Ñ" y todo lo que me dijiste, el codigo queda asi:

Código PHP:
<html>
    <head>
        <title></title>
    </head>
    
    <body bgcolor=#336667 style="color:#ffffff">
    
        <hr align=center>
    
        <table align=center width=100%>
        
            <td width=330><img src=Imagenes/imagen.jpg></td>
            
            <td>
                <h1>Biblioteca</h1>
                <p><u><b>Operaciones con los Ejemplares</b></u></p>
                <p><form action=index.php method=post>
                            <div align=right><b>Buscar Ejemplar:&nbsp;</b><input type=text name=Buscar1><input type=submit value=Buscar></div>
                        </form>
                        <center>
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar2 value=Buscar2>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca">
                        </form>
                        
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar3 value=Buscar3>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca Ordenado por Titulo">
                        </form>
                        </center>
            </td>
    
        </table>
    
        <hr align=center>
    
    </body>
</html>

<?php

$senal1 
$_POST['Buscar1'];
$senal2 $_POST['Buscar2'];
$senal3 $_POST['Buscar3'];

/*if ($senal1 == '') && ($senal2 == '') && ($senal3 == ''){
echo "<div style='color:red;font-weight:bold'>No ha Introducido ninguna palabra</div>";
}*/

include "biblioteca.php";

if ( 
eregi("^[a-z0-9_ ]+$"$senal1) ) {

foreach (
$libros as $i => $libritos){

    
$partes explode(',',$libritos);
    
    foreach (
$partes as $o){
    
    if(
preg_match("/\b$o\b/i"$senal1)){
          echo 
"El libro esta en la posicion $i y el nombre es $o<br />";
        }else{
        echo 
"no se encontro nada";}

    }}



}else{
echo 
"Solo se permite Introducir numeros y letras en el Buscador";
exit;}
?>


ahora me arroja muchos "no se encontro nada";

si busco, "el medico" por ejemplo me encuentra uno y me dice en la posicion que esta, luego me arroja muchos "no se encontro", pero si busco "medico" no me encuentra nada
  #7 (permalink)  
Antiguo 19/02/2010, 11:54
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: Buscar arrays en php

Porque la expresion regular esta mal, yo la pense en funcion de el nombre entero, no de alguna parte del nombre...

Para eso deberias reemplazarla asi (estaba pensado al reves)

Código PHP:
Ver original
  1. preg_match("/$senal1/",$o)

De esa forma te busca la palabra que hayas buscado, sin importar mayusculas o minusculas, y tampoco si esta la palabra completa o no

Deberia funcionar, un saludo!
__________________
HV Studio
Diseño y desarrollo web
  #8 (permalink)  
Antiguo 19/02/2010, 17:12
50l3r
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Buscar arrays en php

veran tengo el codigo aora tal que asi:

Código PHP:
<html>
    <head>
        <title></title>
    </head>
    
    <body bgcolor=#336667 style="color:#ffffff">
    
        <hr align=center>
    
        <table align=center width=100%>
        
            <td width=330><img src=Imagenes/imagen.jpg></td>
            
            <td>
                <h1>Biblioteca</h1>
                <p><u><b>Operaciones con los Ejemplares</b></u></p>
                <p><form action=index.php method=post>
                            <div align=right><b>Buscar Ejemplar:&nbsp;</b><input type=text name=Buscar1><input type=submit value=Buscar></div>
                        </form>
                        <center>
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar2 value=Buscar2>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca">
                        </form>
                        
                        <form action=index.php method=post>
                            <input type=Hidden name=Buscar3 value=Buscar3>
                            <input type=Submit value="Ver Listado Completo de la Biblioteca Ordenado por Titulo">
                        </form>
                        </center>
            </td>
    
        </table>
    
        <hr align=center>
    
    </body>
</html>

<?php

$senal1 
$_POST['Buscar1'];
$senal2 $_POST['Buscar2'];
$senal3 $_POST['Buscar3'];
$tablas 0;

if (
$senal1 == '' && $senal2 == '' && $senal3 == ''){
echo 
"<div style='color:red;font-weight:bold'>No ha Introducido ninguna palabra</div>";
exit;
}

include 
"biblioteca.php";

//---------------------------------------------------------------------------------------------------------------BUSCADOR-------------------------------------------------------------------------------------
if($senal1 != ''){
if ( 
eregi("^[a-z0-9_ ]+$"$senal1) ) {

foreach (
$libros as $i => $libritos){

    
$partes explode(',',$libritos);

    foreach (
$partes as $o){
    
        if( 
preg_match("/$senal1/",$o)){
            
$tablas++;
            echo 
$tablas;
            if(
$tablas == 1){    echo "<table border align=center style=color:green><th>Titulo</th><th>Autor</th><th>Editorial</th>";}
            
            echo 
"El libro esta en la posicion $i y el nombre es $o<br />";
          
            if(
$tablas != 0){
                while(
$tablas != 0){
                
$librillos explode(',',$libros[$i]);
                echo 
"<tr>
                <td>$librillos[0]</td><td>$librillos[1]</td><td>$librillos[2]</td>"
;
                
$tablas $tablas 1;}}
                
}}}}else{echo 
"Solo se permite Introducir numeros y letras en el Buscador";
exit;}
exit;}
elseif(
$senal2!=''){

echo 
"<table align=center border>
            <th>Titulo</th><th>Autor</th><th>Editorial</th>"
;

foreach (
$libros as $i =>$libritos){
        echo 
"<tr><td>$i[0]</td><td>$i[1]</td><td>$i[2]</td>";
}

}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
?>


la cosa es que solo necesito una tablas y que los demas sean <td> por eso digo que si la variable tabla es 1, que escriba la tabla y que sino que siga, la cosa es que aun sumando tabla, me sigue dando el carlo 1 asi:



los "1" que estan impresos son el valor de $tabla, que nose porque no se incrementa

Etiquetas: arrays
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 06:20.