Autor Zpráva
gogy27
Profil
Dobrý deň,
mám nasledujúci skript, no neviem prečo mi ho mysql nechce spracovať:

<?php
$find = $_GET["find"];

//Skript na vyhladavanie v databaze
  $pole_find = explode(" ", $find);  
  $pocet_find = count($pole_find);
  $pole_stlpce = array(0 => "nadpis", 1 => "text", 2=> "odsek");
  $a = 0;
  $b = 0;
  
  $query = "SELECT * FROM clanky WHERE (";
  $pocet_stlpce = count($pole_stlpce);
  while ($a < $pocet_stlpce)
  {
    while ($b < $pocet_find)
    {
      $query = $query."$pole_stlpce[$a] LIKE '%$pole_find[$b]%'";
      $b++;
      if ($b < $pocet_find)
      {
        $query = $query." AND ";
      }
    }
    $b = 0;
    $a++;
    if ($a < $pocet_stlpce)
    {
      $query = $query.") OR (";
    }
  }
  $query = $query.")";
    
    
    // overíme a získame počet výsledkov
  
  $celkem=mysql_num_rows($query); 
 if ($celkem == 0) 
 { 
 $chyby.="Zadané slovo sa v databáze nenachádza<br>"; 
 }
  
  
    if (!isset($_GET["od"])) $od=1; else $od=$_GET["od"];
      if ($od >= 11) { $od = $od - $od%10; }
      $pomoc=$od-1;

$query = $query." COLLATE 'utf8_general_ci' LIMIT $pomoc, 10"; 
$data = mysql_query($query);
?>

A tu to stale stroskotá na: Zadané slovo sa v databáze nenachádza.
Ak vypíšem čisto $query ako text tak dostanem pekne napríklad toto:
SELECT * FROM clanky WHERE (nadpis LIKE '%rokoch%') OR (text LIKE '%rokoch%') OR (odsek LIKE '%rokoch%')

Neviem kde mám chybu, keďže pripojenie ku databáze mám a aj tabuľku s názvom clanky a aj stlpce (text, nadpis, odsek) mam vytvorene v nej.

Ďakujem za každú radu, prajem pekný zvyšok dňa.
Keeehi
Profil
řádky 36-40 smaž a toto vlož na konec:

  $pocet=mysql_num_rows($data); 
 if ($pocet == 0) 
 { 
 //$chyby.="Zadané slovo sa v databáze nenachádza<br>"; 
  echo "Zadané slovo sa v databáze nenachádza<br>"; 
}
else {
  echo "Počet výsledků: $pocet<br>";
}
gogy27
Profil
Keeehi:
Tam stačilo pridať: $celkem=mysql_num_rows(mysql_query($query)); Už vypíše aj počet výsledkov.

Problém však je teraz, že sa mi nevykoná tento cyklus:
$query = $query." COLLATE 'utf8_general_ci' LIMIT $pomoc, 10"; 
$data = mysql_query($query); 
        
if ($chyby == ''){
// ak tu mám hocičo tak to funguje (mám tu formulár pre vyhľadávanie, len som ho sem zbytočne nekopíroval)
        
 while($result = mysql_fetch_array( $data )) 
 { 
  switch ($result["kategoria"]) {
  case 1: echo '<a href="../index.php?ic='. $result["id"] .'" title="Čítaj viac" class="nadpis">'.$result["nadpis"].'</a><br><br><hr>'; break; 
  case 2: echo '<a href="../pojmy/index.php?ic='. $result["id"] .'" title="Čítaj viac" class="nadpis">'.$result["nadpis"].'</a><br><br><hr>'; break; 
  case 3: echo '<a href="../vzory/index.php?ic='. $result["id"] .'" title="Čítaj viac" class="nadpis">'.$result["nadpis"].'</a><br><br><hr>'; break; 
  case 4: echo '<a href="../predpisy/index.php?ic='. $result["id"] .'" title="Čítaj viac" class="nadpis">'.$result["nadpis"].'</a><br><br><hr>'; break; 
  case 6: echo '<a href="../kontakt.php" title="Čítaj viac" class="nadpis">Kontakt</a><br><br><hr>'; break; 
  }
} 
}
else { 
  echo "<p style='color:red;'>$chyby</p>";
  
 }



Uz som si to opravil. Collate nesmie byt za celym skriptom, ale za kazdym LIKE v SQL dotaze.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: