problema script cautare

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
trif
Mesaje:500

problema script cautare

salut, am si eu o problema si nu stiu ce sa ii fac. am codul acesta

Cod: Selectaţi tot

 
 <form action="" method="post">
			<input type="text" size="70" name="term" value="" id="inputString" onkeyup="lookup(this.value);" onblur="fill();" />
			<input type="submit" name="submit" value="Cauta" /><right>
		<div class="suggestionsBox" id="suggestions" style="display: none;">
				<div class="suggestionList" id="autoSuggestionsList">
				</div>
		  </div>
	  </form>
 <?php
// Script - Tutorial de la https://marplo.net
$nrac=0;
// Se verifica daca e primita valoare de la formular si are mai mult de 1 caracter
if (isset($_POST['term']) && strlen($_POST['term'])>1) {
  // Preia valoarea, eliminand posibile spatii exterioare
  $term = trim($_POST['term']);
  // Se face conectarea la serverul MySQL si selectarea bazei de date
  $conn = mysql_connect("localhost", "root", "ialexs") or die("Nu m-am putut conecta la serverul MySQL");
  $selectdb = mysql_select_db('cantari_ppt');
  if (!$selectdb) echo "Baza de date nu a putut fi selectata: ". mysql_errno(). " : ". mysql_error();

  // Se verifica daca "magic_quotes_gpc()" este setat ON 
  // Daca e ON, se aplica stripslashes() pentru a nu se adauga de 2 ori "\" la filtrare
  if(get_magic_quotes_gpc()) { $term = stripslashes($term); }

  // Se aplica filtrarea cu mysql_real_escape_string() (la adaugarea datelor trebuie sa fi fost folosita aceeasi filtrare)
  $term = mysql_real_escape_string($term);
  // Se face selectarea si afisarea dateor returnate
$sql="SELECT * FROM categorie
INNER JOIN cantari_ppt
ON cantari_ppt.categoria = categorie.cheie
WHERE denumire LIKE '$litera%' AND aprobare = 1 ORDER BY denumire ASC"; 
  //$sql = "SELECT * FROM `cantari_ppt` WHERE `denumire` LIKE '%$term%' AND aprobare = 1";
  $resql = mysql_query($sql, $conn) or trigger_error(E_USER_ERROR);
  if (mysql_num_rows($resql) == 0) { echo 'Nu avem o astfel de cantare'; }
  else {
   echo '<b>Rezultatele cautari: <font color="red"> '.$term.'</font></b><br><br>';
    echo '<table border="0" width="600" >';
echo '<tr> <td><b>Avem cantarile urmatoare: </b></td></tr>';
    while ($rand = mysql_fetch_assoc($resql)) {
      // Elimina caracterele "\" care au fost adaugate de "mysql_real_escape_string()"
      $col = stripslashes($rand['denumire']);
    if ($rand['nrac'] == 0)
  {
	echo '<tr> <td><a class="link" href="class.CountAccess.php?urlf='.$rand['urlf'].'">'.$rand['denumire'].'<span>Nr. Accesari: '.$rand['nrac'].'<br> Data descarcarii: --- <br> Categoria: '.$rand['denumire_categorie'].'</span></a></td>
	</tr>';
	}
	 elseif ($rand['nrac'] > 0)
  {
	echo '<tr> 
	<td>	<a class="link" href="class.CountAccess.php?urlf='.$rand['urlf'].'">'.$rand['denumire'].'<span>Nr. Accesari: '.$rand['nrac'].'<br> Data descarcarii: '.$rand['dt'].' <br> Categoria: '.$rand['denumire_categorie'].'</span></a>
</td>
	</tr>';
	}
	
    } echo '</table>';
  }
}
?>
daca ii pun

Cod: Selectaţi tot

$sql = "SELECT * FROM `cantari_ppt` WHERE `denumire` LIKE '%$term%' AND aprobare = 1";
merge foarte bine iar daca ii pun

Cod: Selectaţi tot

$sql="SELECT * FROM categorie
INNER JOIN cantari_ppt
ON cantari_ppt.categoria = categorie.cheie
WHERE denumire LIKE '$litera%' AND aprobare = 1 ORDER BY denumire ASC"; 
imi afiseaza toate inregistrarile pe care le am indiferent ce scriu eu acolo. nu stiu ce sa ii fac. astept raspuns, multumesc anticipat, cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Salut
Incearca urmatoarele 2 variante, nu stiu daca merge, nu ma pricep, dar ca incercare poate ajuta.

Cod: Selectaţi tot

$sql="SELECT * FROM cantari_ppt
WHERE cantari_ppt.denumire LIKE '$litera%' AND cantari_ppt.aprobare = 1 
INNER JOIN categorie
ON cantari_ppt.categoria = categorie.cheie
ORDER BY cantari_ppt.denumire ASC"; 
Sau

Cod: Selectaţi tot

$sql="SELECT * FROM cantari_ppt, categorie
WHERE cantari_ppt.denumire LIKE '$litera%' AND cantari_ppt.aprobare = 1 AND cantari_ppt.categoria = categorie.cheie
ORDER BY cantari_ppt.denumire ASC"; 

trif Mesaje:500
prima metoda nu imi merge, iar a doua imi da aceeasi greseala. multumesc mult pt raspuns. daca mai incearca cineva m-as bucura foarte mult. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

Subiecte similare