[RISOLTO]Motore di ricerca

Altutto

Utente Attivo
30 Set 2013
262
0
16
stubborn.altervista.org
PHP:
<head>

<title>Il tuo spazio!</title>

<style>

body{font-family:Arial,Verdana,Geneva;

color:black;}

a:link{text-decoration:none; color:red;}

a:visited{text-decoration:none; color:red;}

#sfondo{background-image: url(http://2.bp.blogspot.com/-2DSkTCG3NlA/UCk_ZXCcCII/AAAAAAAAAJs/v4dZbI9yU6I/s1600/stella-cadente1.jpg);

	position:absolute;

	height:100%;

	width: 100%;

	margin: 0;

	padding: 0;

}

.rotondo{background: #f7f7f7; padding: 10px; border: 2px solid #ededed; border-radius: 10px; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .4), 0 0 0 1px rgba(255, 255, 255, .9), 0 0 10px 0px rgba(0, 0, 0, .1);

         opacity:0.95;}

</style>

</head>

<body id="sfondo">

<div class="rotondo">

<?php

if($_GET['ricerca']=="" or $_GET['materia']=="" or $_GET['tipo']==""){echo 'Non hai specificato uno o più parametri di ricerca. Devi specificare tutti i campi.';}

else{if($_GET['tipo']=="c"){

$ricerca = $_GET['ricerca'];  

$server_address = 'localhost';  

$DB_name = 'my_angeange';  

$user_DB = 'angeange';  

$pass_DB = 'pw';     

$con2 = mysqli_connect($server_address, $user_DB, $pass_DB,$DB_name);  

$ress = mysqli_query("show tables", $con2) or die("Errore nella raccolta dei dati -> database1");  

   

while ($row = mysqli_fetch_assoc($ress))   

{  

  $table = "";

  $table = implode(",", $row); // <- contiene il nome tabella corrente  

  $ress2 = mysqli_query("SHOW COLUMNS FROM ".$table."", $con2) or die("Errore database2");  

  while ($row2 = mysqli_fetch_assoc($ress2))  

  {  

     $columns= implode(",", $row2);  

     $current_col=""; // <- contiene il nome colonna corrente  

     for($i=0; $i<strlen($columns); $i++)  

     {  

        if($columns[$i] != ',')  

           $current_col .= $columns[$i];  

        else

           break;  

     }  

     //Search into ->  

     $sql = "SELECT * FROM ".$_GET['materia']." WHERE ".$current_col." LIKE '%".$ricerca."%'";  

     try 

     {  

         $ress3 = mysqli_query($sql, $con2);  

         while ($row3 = mysqli_fetch_assoc($ress3))  

         {  

             $risultato = $row3[$current_col];  

             if(strlen($risultato) >= 1)  

             {  

                 echo "Ho trovato (in <b>".$current_col."</b>)
";  

                 echo $risultato."
";  

             }  

          }  

      }  

     catch(Exception $e){}  

   }  

} 

}

else{echo 'Selezionata interrogazione. Questa funzione non è ancora disponibile.';

}

}

?>
Devo modificare questo codice in modo che estragga anche i dati delle altre colonne.
Non so se sono stato chiaro... Se, ad esempio, in una tabella ci sono due colonne, prima e seconda e una riga contiene nella prima colonna il valore "ciao" e nella seconda il valore "casa", ed io cerco "ciao", dovrei ottenere come risultato sia "ciao" che "casa".
Invece, il codice che ho postato prima, estrarrebbe solo "ciao".
Come posso fare?
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Intanto: Sei sicuro che questa riga è quella che vorresti?
PHP:
     $sql = "SELECT * FROM ".$_GET['materia']." WHERE ".$current_col." LIKE '%".$ricerca."%'";
Oppure volevi scrivere questo?
PHP:
     $sql = "SELECT * FROM ".$table." WHERE ".$current_col." LIKE '%".$ricerca."%'";

Poi per quello che vuoi vedere prova a sostituire questo:
PHP:
while ($row3 = mysqli_fetch_assoc($ress3))  
{  
  $risultato = $row3[$current_col];  
  if(strlen($risultato) >= 1)  
  {  
     echo "Ho trovato (in <b>".$current_col."</b>)";  
     echo $risultato;  
  }  
}
Con questo:
PHP:
while ($row3 = $ress3->fetch_assoc())  
{
  echo "Ho trovato (nella tabella <b>".$table."</b>)";
  foreach($row3 as $riga)
    echo $riga;
}
Non è la stessa cosa perchè non sai il campo..per saperlo la cosa si complica un po'.
 

Altutto

Utente Attivo
30 Set 2013
262
0
16
stubborn.altervista.org
Sì, è vero, hai ragione :D

Posso sopravvivere anche senza sapere il campo XD

Ho inserito il codice e mi dice Fatal error: Call to a member function fetch_assoc() on a non-object on line 63.
Riga 63:
PHP:
while ($row3 = $ress3->fetch_assoc())
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Si avevo modificato un po' il codice quando l'ho provato perchè non mi piaceva come era scritto :)
Puoi usare questo codice:
PHP:
while ($row3 = mysqli_fetch_assoc($ress3))  
{  
  echo "Ho trovato (nella tabella <b>".$table."</b>)";
  foreach($row3 as $riga)
  echo $riga; 
}
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Ti incollo il codice della mia prova funzionante.
PHP:
//...dati
$con2 = mysqli_connect("localhost", "root", "", "prova"); 
$ress = $con2->query("show tables") or die (Errore database""); 

while ($row = mysqli_fetch_assoc($ress))   
{
  print_r($row);  
  $table = "";
  $table = implode(",", $row); // <- contiene il nome tabella corrente  
  $ress2 = $con2->query("SHOW COLUMNS FROM ".$table."") or die("Errore database2");  
  while ($row2 = mysqli_fetch_assoc($ress2))  
  {  
     $columns= implode(",", $row2);  
     $current_col=""; // <- contiene il nome colonna corrente  
     for($i=0; $i<strlen($columns); $i++)  
     {  
        if($columns[$i] != ',')  
           $current_col .= $columns[$i];  
        else
           break;  
     }  
     //Search into ->  
     echo "<br>".$current_col;
     $sql = "SELECT * FROM ".$table." WHERE ".$current_col." LIKE '%".$ricerca."%'";  //ERRORE, C'ERA $RICERCA AL POSTO DI $TABLE
	 echo "<br>".$sql."<br>"; 
     if($ress3 = $con2->query($sql)) { 
         while ($row3 = $ress3->fetch_assoc())  
         {
            echo "Ho trovato (nella tabella <b>".$table."</b>)";
         	foreach($row3 as $riga)
                 echo $riga;
          }
	 }
   }  
}
 

Altutto

Utente Attivo
30 Set 2013
262
0
16
stubborn.altervista.org
Ho usato il tuo codice (modificando i dati di accesso al database), eppure mi dà errore :(


Parse error: syntax error, unexpected T_STRING on line 24

Riga 24:
PHP:
$ress = $con2->query("show tables") or die (Errore database"");

Riposto il codice completo
PHP:
<?php
if($_GET['ricerca']=="" or $_GET['materia']=="" or $_GET['tipo']==""){echo 'Non hai specificato uno o più parametri di ricerca. Devi specificare tutti i campi.';}
else{if($_GET['tipo']=="c"){$con2 = mysqli_connect("localhost", "angeange", "pw", "my_angeange");  
$ress = $con2->query("show tables") or die (Errore database"");  

while ($row = mysqli_fetch_assoc($ress))    
{ 
  print_r($row);   
  $table = ""; 
  $table = implode(",", $row); // <- contiene il nome tabella corrente   
  $ress2 = $con2->query("SHOW COLUMNS FROM ".$table."") or die("Errore database2");   
  while ($row2 = mysqli_fetch_assoc($ress2))   
  {   
     $columns= implode(",", $row2);   
     $current_col=""; // <- contiene il nome colonna corrente   
     for($i=0; $i<strlen($columns); $i++)   
     {   
        if($columns[$i] != ',')   
           $current_col .= $columns[$i];   
        else 
           break;   
     }   
     //Search into ->   
     echo "<br>".$current_col; 
     $sql = "SELECT * FROM ".$table." WHERE ".$current_col." LIKE '%".$ricerca."%'";  //ERRORE, C'ERA $RICERCA AL POSTO DI $TABLE 
     echo "<br>".$sql."<br>";  
     if($ress3 = $con2->query($sql)) {  
         while ($row3 = $ress3->fetch_assoc())   
         { 
            echo "Ho trovato (nella tabella <b>".$table."</b>)"; 
             foreach($row3 as $riga) 
                 echo $riga; 
          } 
     } 
   }   
}  
} 
}
else{echo 'Selezionata interrogazione. Questa funzione non è ancora disponibile.';
}
}
?>
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
A me funziona quindi ripartiamo dalla tua funzionante.
Prendi il tuo codice di prima e inserisci:
PHP:
while ($row3 = mysqli_fetch_assoc($ress3))  
{  
//aggiungi le seguenti 3 righe di codice
echo "<br><br>";
print_r($row3);
echo "<br><br>";
  $risultato = $row3[$current_col];  
  if(strlen($risultato) >= 1)  
  {  
     echo "Ho trovato (in <b>".$current_col."</b>)";  
     echo $risultato;  
  }  
}
Dimmi cosa stampa in output.
 

Altutto

Utente Attivo
30 Set 2013
262
0
16
stubborn.altervista.org
Ah ok, anzichè aggiungere quelle righe le avevo sostituite alle altre, chiedo scusa.
Ora stampa

Array ( [altracolonna] => risultato [colonnadelrisultato] => risultato [altracolonna] => risultato)

Ho trovato (in colonnadelrisultato)
risultato


Grazie! :D
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Dovrebbe andare in questo modo allora:
PHP:
while ($row3 = mysqli_fetch_assoc($ress3))  
{  
  foreach($row3 as $colonna => $risultato){
     echo "Ho trovato (in <b>".$colonna."</b>):".$risultato;  
  }  
}
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Ma questo era il risultato del print_r()?
Codice:
 Array ( [altracolonna] => risultato [colonnadelrisultato] => risultato [altracolonna] => risultato)
Elimina tutti i print_r (se ce ne sono) e lascia solo quello nel while assicurandoti che quello è il risultato di quel print_r($row3).
 

Altutto

Utente Attivo
30 Set 2013
262
0
16
stubborn.altervista.org
Sì!

Ho apportato le correzioni
PHP:
$ricerca = $_GET['ricerca'];  
$server_address = 'localhost';  
$DB_name = 'my_angeange';  
$user_DB = 'angeange';  
$pass_DB = 'password';     
$con2 = mysql_connect($server_address, $user_DB, $pass_DB);  
mysql_select_db($DB_name, $con2);  
$ress = mysql_query("show tables", $con2) or die("Errore nella raccolta dei dati -> database1");  
   
while ($row = mysql_fetch_assoc($ress))   
{  
  $table = "";  
  $table = implode(",", $row); // <- contiene il nome tabella corrente  
  $ress2 = mysql_query("SHOW COLUMNS FROM ".$table."", $con2) or die("Errore database2");  
  while ($row2 = mysql_fetch_assoc($ress2))  
  {  
     $columns= implode(",", $row2);  
     $current_col=""; // <- contiene il nome colonna corrente  
     for($i=0; $i<strlen($columns); $i++)  
     {  
        if($columns[$i] != ',')  
           $current_col .= $columns[$i];  
        else  
           break;  
     }  
     //Search into ->  
     $sql = "SELECT * FROM ".$table." WHERE ".$current_col." LIKE '%".$ricerca."%'";  
     try  
     {  
         $ress3 = mysql_query($sql, $con2);  
         while ($row3 = mysql_fetch_assoc($ress3))  
         {$risultato = $row3[$current_col];  
             if(strlen($risultato) >= 1)  
             {  
                 echo "Ho trovato (in <b>".$current_col."</b>)<br>";  
                 echo $risultato."<br>";
  print_r($row3); 
echo "<br><br>"; 

             }  
          }  
      }  
     catch(Exception $e){}  
   }  
}
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Allora vuol dire che i dati sono in $row3. Ho testato anche sul mio codice, riprova:
PHP:
         while ($row3 = $ress3->fetch_assoc())  
         {
             echo "<br>Ho trovato (nella tabella <b>$table</b>)";
             foreach($row3 as $campo => $risultato)
                echo "<br>Campo: $campo -> $risultato";
         }
 

Altutto

Utente Attivo
30 Set 2013
262
0
16
stubborn.altervista.org
Grazie per la pazienza :p

Ho modificato
PHP:
while ($row3 = $ress3->fetch_assoc())
In
PHP:
while ($row3 = mysqli_fetch_assoc($ress3))
Perchè mi dava di nuovo errore.
Continua a non trovare nulla D:
 

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Vabbè nell'array $row3 ci sono i valori.
La chiave è il campo e il valore il risultato o quelli attinenti.
Fai un po' di prove per stamparli dovrebbe funzionare col foreach in teoria.
 
Discussioni simili
Autore Titolo Forum Risposte Data
A [RISOLTO]Motore di ricerca PHP 2
L (risolto) MySQL 0
B getElementById su piu id(Risolto) Javascript 6
L Esercitarsi con Js [RISOLTO] Javascript 4
C [RISOLTO]Inserimento variabile php in input html PHP 20
L risolto visualizzazione e ordinamento dati PHP 1
moustache [RISOLTO] SQL PHP IIS PHP 8
Sergio Unia Ricezione email con destinatari multipli [Risolto] PHP 2
L update tabelle in php mysql [risolto] PHP 6
M Semplice visualizzatore di immagini [risolto con plugin wp] PHP 7
L [RISOLTO] Stampa a video risultato count in html PHP 13
L [RISOLTO] Eliminare una discussione creata PHP 3
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
A [PHP] Problema query insert [RISOLTO] PHP 14
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
S [RISOLTO] aggiorna tabella da select option asp classic Classic ASP 7
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
elpirata [RISOLTO][Mysql] Contare le occorrenze in un campo tipo varchar MySQL 2
G [MS Access] Gestione biglietti [RISOLTO] MS Access 2
G [MS Access] Casella combinata & Query [RISOLTO] MS Access 4
G [MS Access] Query mese corrente con conteggio [RISOLTO] MS Access 2
M [RISOLTO]Windows media player non mi funziona più su win 10 pro 64 bit Windows e Software 2
C [RISOLTO][PHP] Errore di sintassi PHP 8
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
C [RISOLTO][PHP] Conteggio righe di una tabella PHP 4
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
Tommy03 [RISOLTO][PHP] Webserver o devserver? PHP 2
Sergio Unia Recupero dati da una vecchia versione MySql [Risolto] MySQL 4
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
A [RISOLTO]Inserimento Immagini da pc a MySql PHP 15
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
felino Risolto - [Wordpress][WooCommerce] PayPal Checkout e campi di fatturazione WordPress 2
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
elpirata [PHP] [RISOLTO]Sovrascrivere testo in una tabella PHP 2
A [RISOLTO]Recuperare dati inviati con json tramite php PHP 4
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
S Problema in PHP per invio file XML - RISOLTO- PHP 8
A [Javascript] [RISOLTO] Doppio "submit", in uno stesso "Form" , che puntino ad "action" diversi Javascript 1
marino51 [Risolto]videochat di messenger ha smesso di funzionare sul telefonino Smartphone e tablet 1
A [Javascript] [HTML] RISOLTO...Allungare un box all'apertura della pagina No Mouse over Javascript 9
ken_korn [Javascript][Risolto] browser.tab.Tabs.favIconUrl non funziona Javascript 5
A [RISOLTO] HighChart e PHP PHP 4
A [RISOLTO] PHP Selezionare tutti i file con stessa estensione PHP 2
A [RISOLTO] Table elaborata da codice PHP con dati da DB non visualizzata in IFRAME PHP 15

Discussioni simili