Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Errore dopo lancio query

    Buongiorno ragazzi,
    ho uno strano problema, qualora completi un modulo di ricerca, anche lasciando i campi vuoti ottengo sempre come risultato il primo record della tabella.

    Come si spiega questo fatto?
    Vi serve il codice?

    Grazie

  2. #2

    Re: Errore dopo lancio query

    Originariamente inviato da phpmydeath
    Vi serve il codice?
    L'alternativa sarebbe utilizzare la sfera di cristallo!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3

    Re: Re: Errore dopo lancio query

    Originariamente inviato da satifal
    L'alternativa sarebbe utilizzare la sfera di cristallo!
    Credevo fosse una cosa risaputa

    codice:
    <html>
    <head>
    <title> Search Engine - Search </title>
    </head>
    
    <body>
    
    <h2> Search Engine </h2>
    <form action= './search.php' method='get'>
    <input type='text' name='k' size ='50'value='<?php echo $_GET['k'];?>' />
    <input type='submit' value='Search'>
    </form>
    <hr />
    
    <?php
    
      
      $k = $_GET['k'];
    
      $terms = explode(" ",$k);
      $query = "SELECT * FROM Opera WHERE ";
    foreach ($terms as $each){
    
    	
    	 $query .= " TipoOpera LIKE '$each' OR Titolo LIKE '$each' OR TitoloOriginale LIKE '$each' OR TitoloInternazionale LIKE '$each' OR Tecnica LIKE '$each' OR Anno LIKE '$each' OR Collocazione LIKE '$each' OR AreaCompetenza LIKE '$each' OR Altezza LIKE '$each' OR Larghezza LIKE '$each' OR Profondita LIKE '$each' OR Durata LIKE '$each' OR GenereFilm LIKE '$each' OR AutoreFotografia LIKE '$each' OR AutoreScenografia LIKE '$each' OR FormaMusicale  LIKE '$each' OR Tonalita  LIKE '$each' OR IdentificativoOpera LIKE '$each' OR PrimaEsecuzione LIKE '$each' OR Organico LIKE '$each' OR InformazioniLibretto LIKE '$each' OR Incipit LIKE '$each' OR IncipitModerno LIKE '$each' OR DataCreazione LIKE '$each' OR DataUltimaModifica LIKE '$each' ";
    	
    	
    	}
    
    
    
    
    //connect
    mysql_connect("localhost","root", "db09");
    mysql_select_db("Tesi");
    
    
    $query = mysql_query($query);
    $numrows = mysql_num_rows($query);
    if($numrows>0){
      while($row=mysql_fetch_assoc($query)){
    	$TipoOpera= $row['TipoOpera'];
    	$Titolo = $row['Titolo'];
    	$TitoloOriginale= $row['TitoloOriginale'];
    	$TitoloInternazionale = $row['TitoloInternazionale'];
    	$Anno = $row['Anno'];
    	$Tecnica = $row['Tecnica'];
    	$Collocazione = $row['Collocazione'];
    	$AreaCompetenza = $row['AreaCompetenza'];
    	$Altezza = $row['Altezza'];
    	$Larghezza = $row['Larghezza'];
    	$Profondita  = $row['Profondita '];
    	$Durata = $row['Durata'];
    	$GenereFilm = $row['GenereFilm'];
    	$AutoreFotografia = $row['AutoreFotografia'];
    	$AutoreScenografia = $row['AutoreScenografia'];
    	$FormaMusicale = $row['FormaMusicale'];
    	$Tonalita = $row['Tonalita'];
    	$IdentificativoOpera = $row['IdentificativoOpera'];
    	$PrimaEsecuzione = $row['PrimaEsecuzione'];
    	$Organico = $row['Organico'];
    	$InformazioniLibretto = $row['InformazioniLibretto'];
    	$Incipit = $row['Incipit'];
    	$IncipitModerno = $row['IncipitModerno'];
    	$DataCreazione = $row['DataCreazione'];
    	$DataUltimaModifica = $row['DataUltimaModifica'];
    
    	
    echo "tipo: $TipoOpera
    ";
    
    	}
    
    
    
    }
    	
    
    else
    	echo "Nessun risultato per la chiave \"
    $k[/b]";
    
    	
    
    
    
    //disconnet
    mysql_close();
    
    ?>
    </body>
    </html>
    Ho compreso solo l'echo del primo campo, se inserisco gli altri naturalmente li stampa.

    Grazie

  4. #4
    Allora aggiorno il problema e mi scuso nell'essere stato troppo affrettato.
    Quando la query è vuota ottengo tutti i risultati mentre se ricerco una parola mi rende il record corrispondente.
    Reinserisco per intero il codice rivisionato ma non corretto:
    codice:
    <html>
    <head>
    <title> Search Engine - Search </title>
    </head>
    
    <body>
    
    <h2> Search Engine </h2>
    <form action= './search.php' method='get'>
    <input type='text' name='k' size ='50'value='<?php echo $_GET['k'];?>' />
    <input type='submit' value='Search'>
    </form>
    <hr />
    
    <?php
    
      
      $k = $_GET['k'];
    
      $terms = explode(" ",$k);
      $query = "SELECT * FROM Opera WHERE ";
    foreach ($terms as $each){
    	
    	//$i++;
    	
    	//if($i == 1)
    	
    	 $query .= " TipoOpera LIKE '$each' OR Titolo LIKE '$each' OR TitoloOriginale LIKE '$each' OR TitoloInternazionale LIKE '$each' OR Tecnica LIKE '$each' OR Anno LIKE '$each' OR Collocazione LIKE '$each' OR AreaCompetenza LIKE '$each' OR Altezza LIKE '$each' OR Larghezza LIKE '$each' OR Profondita LIKE '$each' OR Durata LIKE '$each' OR GenereFilm LIKE '$each' OR AutoreFotografia LIKE '$each' OR AutoreScenografia LIKE '$each' OR FormaMusicale  LIKE '$each' OR Tonalita  LIKE '$each' OR IdentificativoOpera LIKE '$each' OR PrimaEsecuzione LIKE '$each' OR Organico LIKE '$each' OR InformazioniLibretto LIKE '$each' OR Incipit LIKE '$each' OR IncipitModerno LIKE '$each' OR DataCreazione LIKE '$each' OR DataUltimaModifica LIKE '$each' ";
    	
    	//else
    	//	echo $query .= "OR keywords LIKE '%$each%' OR title LIKE '%$each%' OR description LIKE '%$each%' OR link LIKE '%$each%'";
    	echo mysql_error();
    	}
    
    
    
    
    //connect
    mysql_connect("localhost","root", "db09");
    mysql_select_db("Tesi");
    
    
    $query = mysql_query($query);
    echo mysql_error();
    $numrows = mysql_num_rows($query);
    echo mysql_error();
    if($numrows>0){
      while($row=mysql_fetch_assoc($query)){
    	$TipoOpera= $row['TipoOpera'];
    	$Titolo = $row['Titolo'];
    	$TitoloOriginale= $row['TitoloOriginale'];
    	$TitoloInternazionale = $row['TitoloInternazionale'];
    	$Anno = $row['Anno'];
    	$Tecnica = $row['Tecnica'];
    	$Collocazione = $row['Collocazione'];
    	$AreaCompetenza = $row['AreaCompetenza'];
    	$Altezza = $row['Altezza'];
    	$Larghezza = $row['Larghezza'];
    	$Profondita  = $row['Profondita'];
    	$Durata = $row['Durata'];
    	$GenereFilm = $row['GenereFilm'];
    	$AutoreFotografia = $row['AutoreFotografia'];
    	$AutoreScenografia = $row['AutoreScenografia'];
    	$FormaMusicale = $row['FormaMusicale'];
    	$Tonalita = $row['Tonalita'];
    	$IdentificativoOpera = $row['IdentificativoOpera'];
    	$PrimaEsecuzione = $row['PrimaEsecuzione'];
    	$Organico = $row['Organico'];
    	$InformazioniLibretto = $row['InformazioniLibretto'];
    	$Incipit = $row['Incipit'];
    	$IncipitModerno = $row['IncipitModerno'];
    	$DataCreazione = $row['DataCreazione'];
    	$DataUltimaModifica = $row['DataUltimaModifica'];
    	
    	//stampiamo i nostri dati
    
    	
    	echo "tipo: $TipoOpera
    ";
    	echo "titolo: $Titolo
    ";
    	echo "titolo originale: $TitoloOriginale
    ";
    	echo "titolo internazionale: $TitoloInternazionale
    ";
    	echo "anno: $Anno
    ";
    	echo "tecnica: $Tecnica
    ";
    	echo "collocazione: $Collocazione
    ";
    	echo "area di competenza: $AreaCompetenza
    ";
    	echo "altezza: $Altezza
    ";
    	echo "larghezza: $Larghezza
    ";
    	echo "profondità: $Profondita
    ";
    	echo "durata: $Durata
    ";
    	echo "genere del film: $GenereFilm
    ";
    	echo "autore della fotografia: $AutoreFotografia
    ";
    	echo "autore della scenografia: $AutoreScenografia
    ";
    	echo "forma musicale: $FormaMusicale
    ";
    	echo "tonalità: $Tonalita
    ";
    	echo "identificativo dell'opera: $IdentificativoOpera
    ";
    	echo "prima esecuzione: $PrimaEsecuzione
    ";
    	echo "organico: $Organico
    ";
    	echo "fonte del libretto: $InformazioniLibretto
    ";
    	echo "incipit musicale: $Incipit
    ";
    	echo "incipit in trascrizione moderna: $IncipitModerno
    ";
    	echo "data di creazione: $DataCreazione
    ";
    	echo "ultima modidifica: $DataUltimaModifica
    ";
    
    	}
    
    
    
    }
    	
    
    else
    	echo "Nessun risultato per la chiave \"
    $k[/b]";
    	echo mysql_error();
    	
    
    
    
    //disconnet
    mysql_close();
    
    ?>
    </body>
    </html>

  5. #5
    Prova a fare un echo della query prima di eseguirla e vedi se è corretta, magari provandola a mano.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Purtroppo non mi capacito.
    Se lancio il seguente codice:

    codice:
    <html>
    <head>
    <title> Ricerca </title>
    </head>
    
    <body>
    
    <h2> Ricerca </h2>
    <body>
    <form action= './search.php' method='get'>
    <input type='text' name='k' size ='50'value='<?php echo $_GET['k'];?>' >
    <input type='submit' value='Search'>
    </form>
    <hr />
    
    <?php
    
      
      $k = $_GET['k'];
    
      $terms = explode(" ", $k);
      $query = "SELECT * FROM Opera WHERE ";
        foreach ($terms as $each){
    	
    	//$i++;
    	
    	//if($i == 1)
    	
    	 $query .= "TipoOpera LIKE '$each' OR Titolo LIKE '$each' OR Tecnica LIKE '$each' OR Anno LIKE '$each' OR Collocazione LIKE '$each' OR AreaCompetenza LIKE '$each' OR Altezza LIKE '$each' OR Larghezza LIKE '$each' OR Profondita LIKE '$each' OR Durata LIKE '$each' OR  TitoloOriginale LIKE '$each' OR TitoloInternazionale LIKE '$each' OR GenereFilm LIKE '$each' OR AutoreFotografia LIKE '$each' OR AutoreScenografia LIKE '$each' OR FormaMusicale  LIKE '$each' OR Tonalita  LIKE '$each' OR IdentificativoOpera LIKE '$each' OR PrimaEsecuzione LIKE '$each' OR Organico LIKE '$each' OR InformazioniLibretto LIKE '$each' OR Incipit LIKE '$each' OR IncipitModerno LIKE '$each' OR DataCreazione LIKE '$each' OR DataUltimaModifica LIKE '$each' ";
    	 echo $query;
    	//else
    	//	echo $query .= "OR keywords LIKE '%$each%' OR title LIKE '%$each%' OR description LIKE '%$each%' OR link LIKE '%$each%'";
    	
    	}
    
    
    
    
    //connect
    mysql_connect("localhost","root", "db09");
    mysql_select_db("Tesi");
    
    
    $query = mysql_query($query);
    $numrows = mysql_num_rows($query);
    if($numrows>0){
      while($row=mysql_fetch_assoc($query)){
    	$TipoOpera= $row['TipoOpera'];
    	$Titolo = $row['Titolo'];
    	$Tecnica= $row['Tecnica'];
    	
    	
    	//stampiamo i nostri dati
    
    	
    	echo "tipo: $TipoOpera
    ";
    	echo "titolo: $Titolo
    ";
    	echo "tecnica: $Tecnica
    ";
    	
    
    	}
    
    
    
    }
    	
    
    else
            echo "Nessun risultato per la chiave: \"$k\"";
    	echo mysql_error();
    	
    
    
    
    //disconnet
    mysql_close();
    
    ?>
    </body>
    </html>
    senza immettere alcun carattere in ricerca ottengo:
    nella barra degli indirizzi in alto:
    codice:
    http://localhost/Tesi/pages/search.php?k=
    e visualizzo (ho messo un echo nella query):
    codice:
    SELECT * FROM Opera WHERE TipoOpera LIKE '' OR Titolo LIKE '' OR Tecnica LIKE '' OR Anno LIKE '' OR Collocazione LIKE '' OR AreaCompetenza LIKE '' OR Altezza LIKE '' OR Larghezza LIKE '' OR Profondita LIKE '' OR Durata LIKE '' OR TitoloOriginale LIKE '' OR TitoloInternazionale LIKE '' OR GenereFilm LIKE '' OR AutoreFotografia LIKE '' OR AutoreScenografia LIKE '' OR FormaMusicale LIKE '' OR Tonalita LIKE '' OR IdentificativoOpera LIKE '' OR PrimaEsecuzione LIKE '' OR Organico LIKE '' OR InformazioniLibretto LIKE '' OR Incipit LIKE '' OR IncipitModerno LIKE '' OR DataCreazione LIKE '' OR DataUltimaModifica LIKE '' tipo: C
    titolo: casa
    tecnica: pittura
    tipo: C
    titolo: la monaca
    tecnica: scultura
    tipo: M
    titolo: idea
    tecnica: bizarre
    tipo: C
    titolo: il libro
    tecnica: manoscritto
    mentre se la ricerca la eseguo con questo file che punta su un altro data base:
    codice:
    <html>
    <head>
    <title> Ricerca </title>
    </head>
    
    <body>
    
    <h2>Ricerca </h2>
    <form action= './search.php' method='get'>
    <input type='text' name='k' size ='50'value='<?php echo $_GET['k'];?>' >
    <input type='submit' value='Search'>
    </form>
    <hr />
    
    <?php
    
    
      $k = $_GET['k'];
    
      $terms = explode(" ", $k);
      $query = "SELECT * FROM search WHERE ";
    	foreach ($terms as $each){
    	
    	//$i++;
    	
    	//if($i == 1)
    	
    	 $query .= "keywords LIKE '$each' OR title LIKE '$each' OR description LIKE '$each' OR link LIKE '$each'";
             echo $query;
    	//else
    		//echo $query .= "OR keywords LIKE '%$each%' OR title LIKE '%$each%' OR description LIKE '%$each%' OR link LIKE '%$each%'";
    	
    	}
    
    
    
    
    //connect
    mysql_connect("localhost","root", "db09");
    mysql_select_db("tutorials");
    
    
    $query = mysql_query($query);
    $numrows = mysql_num_rows($query);
    if($numrows>0){
      while($row=mysql_fetch_assoc($query)){
    	$id= $row['id'];
    	$title = $row['title'];
    	$description= $row['description'];
    	$keywords = $row['keywords'];
    	$link = $row['link'];
    	
    	echo "<h2>$title</h2>
    	$description
    
    ";
    }
    
    
    
    }
    else
    	echo "Nessun risultato per la chiave: \"$k\"";
    
    
    //disconnet
    mysql_close();
    
    ?>
    </body>
    </html>
    e non inserisco alcun campo lanciando lanciando la query senza immettere alcun carattere ottengo:
    codice:
    http://localhost/prova/search.php?k=
    e visualizzo (ho messo un echo nella query):
    codice:
    SELECT * FROM search WHERE keywords LIKE '' OR title LIKE '' OR description LIKE '' OR link LIKE ''Nessun risultato per la chiave "
    Come mai questa discrepanza? Perché ottengo nel primo caso tutti i record caricati nella base di dati pur lanciando una ricerca a vuoto, senza alcun carattere mentre nel secondo caso avverte giustamente con un messaggio che la query non ha trovato alcun risultato?

    Grazie

  7. #7
    Ragazzi ho risolto.
    Il motivo era perché le variabili Incipit ed IncipitModerno nel database non potevano essere nulle mentre io avevo aggiunto delle istanze ove avevo lasciato i campi vuoti.
    Ho provveduto a correggere il database mettendo i campi relativi di defaul nulli ed ora la query ottiene il risultato sperato.

    Ma non me lo potevate dire prima?

    Grazie ancora del supporto e dello spazio occupato.

    Presto tornerò con nuovi turbamenti

    Buona giornata

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.