Visualizzazione risultati 1 fino 5 di 5

Discussione: problema stampa record database [php/mysql]

  1. #1
    Guest

    Predefinito problema stampa record database [php/mysql]

    salve a tutti, sto provando a fare un piccolo motore di ricerca e ho usato i % per ricercare non solo la parola specifica ma proprio una lettera o una frase presente in una cella della tabella.
    il problema è che se trova piu risultati mi solo il primo risultato tante volte quanti sarebbero stati i risultati

    link

    pagina principale
    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 1.0 Strict//IT" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
    <title> prova motore di ricerca </title>
    <style>
    #centratore {
    	width: 600px;
    	margin: 0 auto;
    }
    
    #contenitore {
    	border: 2px solid;
    	padding: 5px;
    	width: 586px;
    }
    </style>
    </head>
    <body>
    <?php
    echo "<div id=\"centratore\"><div id=\"contenitore\">";
    require_once('db_login.php');
    $connection = mysql_connect( $db_host, $db_username, $db_password );
    if (!$connection){
    die ("non e' stato possibile connettersi al database: <br />" . mysql_error());
    }
    $db_select=mysql_select_db($db_database);
    if (!$db_select){
    	die ("non e' stato possibile connettersi al database: <br/>" . mysql_error());
    }
    $ricerca = $_POST['tag'];
    $numrows = mysql_num_rows($result);
    if ($ricerca != ""){
    $query = "SELECT nome_sito, link_sito, descrizione_sito FROM search WHERE tag_sito LIKE \"%$ricerca%\"";
    $result = mysql_query($query, $connection) or die('Errore 2');
    $numrows = mysql_num_rows($result);
    	$resrow = mysql_fetch_row($result);
    echo 'sono state trovate ';
    echo $numrows;
    echo ' coincidenze<br /><br />';
      for($x=0; $x<$numrows; $x++){
    	  echo '<a href="';
    	  echo $resrow[1];
    	  echo '">';
    	  echo $resrow[0];
    	  echo '</a>';
    	  echo '<hr>';
    	  echo $resrow[2];
    	  echo '<br /><br />';
      }	
    }
    
    if ($ricerca == ""){
    	echo 'effettua una ricerca';
    }
    elseif ($numrows == 0){
    	echo 'non sono state trovate coincidenze';
    }
    
    echo "</div></div>";
    mysql_close($connection);
    ?>
    <div id="centratore"><div id="contenitore" style="margin-top: 50px;">
    <FORM METHOD="post" ACTION="search.php">
    ricerca per nome utente
    <INPUT TYPE="text" NAME="tag">
    <INPUT TYPE="submit" VALUE="cerca">
    </FORM></div></div>
    </body>
    </html>
    tabella mysql
    Codice HTML:
    CREATE TABLE IF NOT EXISTS `search` (
      `nome_sito` varchar(100) NOT NULL default '',
      `link_sito` varchar(100) NOT NULL default '',
      `descrizione_sito` text NOT NULL,
      `tag_sito` text NOT NULL,
      PRIMARY KEY  (`link_sito`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    INSERT INTO `search` (`nome_sito`, `link_sito`, `descrizione_sito`, `tag_sito`) VALUES
    ('layoututorialing', 'http://layoututorialing.altervista.org', 'piccolo sito realizato da un piccolo ragazzo con piccole doti per piccoli utenti', 'layout guide tutoria layoututorialing sito nero bianco css php html nabbi beginner giacomo cactua cactuccio taozby youtube coincidenza'),
    ('naruto italian forum', 'http://naruto.forumcommunity.net', 'Il NIF, storica community su Naruto nata nel 2006, da anni è uno dei forum di riferimento nel circuito per discutere della popolare serie di Masashi Kishimoto. Potete contribuire allo sviluppo del NIF in 2 semplicissimi step che vi porteranno via meno di 5 minuti, rendendo però un grande contributo a questo forum e la nostra eterna gratitudine.', 'naruto forum forumcommunity community naruto bleach naruto one piece onepiece one_piece 2006 nero coincidenza');
    che errore ho fatto? ps: sono alle prime armi

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Devi mettere questa riga:
    Codice PHP:
    $resrow = mysql_fetch_row($result);
    all'interno del ciclo for che segue, non all'esterno... altrimenti finisci per elaborare sempre lo stesso record.

    Poi in alternativa sostituire il for con questa riga, se preferisci:
    Codice PHP:
    while ($resrow = mysql_fetch_row ($result)) {
    ...
    }
    lasciando invariato il corpo del ciclo, questo terminerà correttamente quando non ci sono più record da elaborare.

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    ho fatto così
    Codice HTML:
      while ($resrow = mysql_fetch_row ($result)) {
    	  echo '<a href="';
    	  echo $resrow[1];
    	  echo '">';
    	  echo $resrow[0];
    	  echo '</a>';
    	  echo '<hr>';
    	  echo $resrow[2];
    	  echo '<br /><br />';
    	  $resrow = mysql_fetch_row($result);  
      }	
    }
    però ora mi mostra solo un risultato anche se dice che le righe sono 2 =(

    edit:
    ho risolto rimettendo il ciclo for, grazie mille ^^
    Ultima modifica di cactua : 07-04-2011 alle ore 11.42.01

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Ti spiego l'errore nel codice sopra, anche se hai risolto: mettendo di nuovo l'estrazione del record alla fine del ciclo, la esegui due volte, una appunto a fine del ciclo, l'altra all'inizio della nuova iterazione, quando valuti se ci sono ancora record.

    Ecco spiegato perché con il codice qui sopra le righe ti uscivano dimezzate: la prima di queste due estrazioni veniva "bruciata" e di conseguenza elaboravi il terzo record (e non il secondo) successivamente al primo...

    Stammi bene...
    Ultima modifica di dementialsite : 07-04-2011 alle ore 12.19.14
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    Guest

    Predefinito

    ah capito >,< (credo..) xD, grazie per la spiegazione ^^
    ultima domanda...
    stavo provando a ordinare i link per un rank da me dato e fin li tutto bene ma se provo a farli visualizare niente..

    il codice modificato è questo
    Codice HTML:
      for($x=0; $x<$numrows; $x++){
    	  $resrow = mysql_fetch_row($result);
    	  echo '<table width="100%"><tr><td><a href="';
    	  echo $resrow[1];
    	  echo '">';
    	  echo $resrow[0];
    	  echo '</a></td><td>';
    	  echo '<p align="right">rack del sito: ';
    	  echo $resrow[4];
    	  echo '</p></td></tr></table>';
    	  echo '<hr>';
    	  echo $resrow[2];
    	  echo '<br /><br />';
      }	
    e la nuova tabella questa

    Codice HTML:
    CREATE TABLE IF NOT EXISTS `search` (
      `nome_sito` varchar(100) NOT NULL default '',
      `link_sito` varchar(100) NOT NULL default '',
      `descrizione_sito` text NOT NULL,
      `tag_sito` text NOT NULL,
      `rank` char(3) NOT NULL default '1',
      PRIMARY KEY  (`link_sito`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
    
    INSERT INTO `search` (`nome_sito`, `link_sito`, `descrizione_sito`, `tag_sito`, `rank`) VALUES
    ('layoututorialing', 'http://layoututorialing.altervista.org', 'Il NIF, storica community su Naruto nata nel 2006, da anni è uno dei forum di riferimento nel circuito per discutere della popolare serie di Masashi Kishimoto. Potete contribuire allo sviluppo del NIF in 2 semplicissimi step che vi porteranno via meno di 5 minuti, rendendo però un grande contributo a questo forum e la nostra eterna gratitudine.', 'guide layout tutorial tutorialing layoututorialing cactua taozby black skin template css html php javascript cms', '25'),
    ('naruto italian forum', 'http://naruto.forumcommunity.net', 'Il NIF, storica community su Naruto nata nel 2006, da anni è uno dei forum di riferimento nel circuito per discutere della popolare serie di Masashi Kishimoto. Potete contribuire allo sviluppo del NIF in 2 semplicissimi step che vi porteranno via meno di 5 minuti, rendendo però un grande contributo a questo forum e la nostra eterna gratitudine.', 'naruto forum forumcommunity community naruto bleach naruto one piece onepiece one_piece 2006 nero coincidenza', '15');
    Ultima modifica di cactua : 07-04-2011 alle ore 12.38.41 Motivo: altro problema

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •