Numar aparitie cuvant cautat

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
bvlucretiu
Mesaje: 88

Numar aparitie cuvant cautat

Cod: Selectaţi tot

<div id="interogare_afisare">
<form action="http://localhost/enorm_db/index.php?pagina=localitate_interogare" method="post">
<br><b><i>Introduceti Interogarea pentru localitate:</i></b><br><br><input align="center"class="test" type="text" name="ceruta">
<input type="Submit" value="Cauta">
</form>
</div>
<?php
echo '<div id="select_capitol_cap">
<div id="select_id_cap"><b><u>ID</u></b></div>
<div id="select_nume_capitol_cap"><b><u>Nume Locatar in localitate</u></b></div>
<div id="numar"><b><u>Numarul</u></b></div>
<div id="select_modificari_cap"><b><u><a title="Editare Locatar"href="http://localhost/enora_db/index.php?pagina=localitate_edit"><img src="img/edit.gif"/></a>
</u></b></div>
</div>

<div id="select_capitol">';


$ceruta =($_POST['ceruta']);

// conecteaza la baza de date "tests" 
$conn = new mysqli('localhost', 'root', '1111', 'enoma');

// verifica conexiunea
if (mysqli_connect_errno()) {
  exit('Connect failed: '. mysqli_connect_error());
}
$id = $ceruta;
$nume = $ceruta;
$prenume = $ceruta;    // seteaza numele intr-o variabila
$prenume2 = $ceruta;
$NR = $ceruta;
$per = $ceruta;

// interogare sql SELECT 
$sql = "SELECT `id`,
             `nume`,
			 `prenume`,
			 `NR`,
			 `per` FROM `localitate`WHERE 
			 `nume`like'%$nume%' OR
			 `prenume`like'%$prenume%' OR 
			 `NR`like'%$NR%' OR
			 `per`like'%$per%'"; 

// executa interogarea si retine datele returnate 
$result = $conn->query($sql);

// daca $result contine cel putin un rand
if ($result->num_rows > 0) {
  // afiseaza datele din fiecare rand din $result
  while($row = $result->fetch_assoc()) {
  
     echo '<br /> <div id="idalim">  <br><b>'. str_ireplace($ceruta, '<strong style="color:#fc1d22;background-color:#ffffff;">'. $ceruta .'</strong>', $row['id']) . '</b></div><div id="nume_locatar"> <br><b>'
	 . str_ireplace($ceruta, '<strong style="color:#fc1d22;background-color:#ffffff;">'. $ceruta .'</strong>', $row['nume']) . '</b>  <i>'
	 . str_ireplace($ceruta, '<strong style="color:#fc1d22;background-color:#ffffff;">'. $ceruta .'</strong>', $row['prenume']) . ' </i></div><div id="numarcasa"><b> '
	 . str_ireplace($ceruta, '<strong style="color:#fc1d22;background-color:#ffffff;">'. $ceruta .'</strong>', $row['NR']) .'</div><div id="numar_casa_per">'
	 . str_ireplace($ceruta, '<strong style="color:#fc1d22;background-color:#ffffff;">'. $ceruta .'</strong>', $row['per']) .'</div><br>'	 ;
  }
}
else {
  echo '0 rezultate';
}

$conn->close();


echo '<div id="jos">';
echo "<br /> <br><br><u>Ati cerut:</u> <b>$ceruta</b></div>";
echo '</div>';
echo '<div id="sus">';
echo "<br /> Ati cerut: <b>$ceruta</b></div>";
?>

Bună!
În codul de mai sus am interogarea unei baze de date și un form pentru o interogare, care îmi nuanțează într-un anumit fel rezultatul interogării respective.
Am încercat să implementez și scriptul php din Marplo de la php cel cu numărarea anumitor cuvinte, dar mi-a ieșit cu totul altceva decât vroiam, respectiv aș dori doar(înafară de cuvintele evidențiate) un simplu rezultat (așa cum este în scriptul de mai sus: Ați cerut: <b>$ceruta</b>) care să-mi afișeze ceva de genul:

Cod: Selectaţi tot

Ați cerut: <b>$ceruta</b>, iar acesta apare de ...ori
Ce script aș putea introduce pe lângă acesta pentru acest rezultat?
Vă mulțumesc anticipat!

MarPlo
Salut
1. Cu functia php substr_count() poti obtine numarul de aparitii al unui subsir intr-un alt sir. Aceasta functie este case-sensitive (tine cont de majuscule si minuscule); ca sa depasesti asta, se aplica strtolower() la parametri.
Exemplu:

Cod: Selectaţi tot

$word ='abcd';
$str ='Some abcd string with 2Abcd and again Abcd word.';
$nr_ocu = substr_count(strtolower($str), strtolower($word));
echo $nr_ocu;  // 3
2. Sau cu urmatorul cod poti obtine numarul de aparitii ale unui cuvant intreg intr-un sir:

Cod: Selectaţi tot

$word ='abcd';
$str ='Some abcd string with 2Abcd and again Abcd word.';
$nr_ocu = preg_match_all('#\b'. $word .'\b#iu', $str, $mt);
echo $nr_ocu;  // 2

bvlucretiu
Bună!
Unde se leagă variabila mea $ceruta de $word?
În acest moment nu am cum să testez, doar întreb; este suficient oare să atribui variabilei asa?

Cod: Selectaţi tot

$word = $ceruta;
și atunci aș avea așa:

Cod: Selectaţi tot

 echo "Ați cerut: <b>$ceruta</b>, iar acesta apare de <b>$nr_ocu </b> ori!";

MarPlo
Nu stiu unde iti trebuie sa pui variabila in codul tau; vezi rezultatul dupa ce testezi.

bvlucretiu
Bună!
Nu știu unde să-l integrez în codul meu, am încercat în toate felurile îmi dă unexpected și linia unde este problema!
Mulțumesc!

MarPlo
Posteaza partea de cod respectiva cu ce ai incercat si eroarea afisata.

bvlucretiu
Am încercat să-l integrez în codul de sus, cel cu care am deschis subiectul, acolo am nevoie de el, vreau să-mi numere la interogare, unde din form prin variabila $POST i se atribuie variabilei $ceruta cuvântul cerut ca interogare iar acest cod aș dori să-mi spună, să-mi afișeze câte rezultate există la interogare, câte rezultate are variabila $ceruta, iar acolo la sfârșit am:

Cod: Selectaţi tot

echo "<br /> Ati cerut: <b>$ceruta</b></div>";
, unde îmi spune ce cuvânt s-a cerut ptr interogare și aș dori să mai adaug acolo și câte rezultate s-au găsit ca de exemplu:

Cod: Selectaţi tot

echo "<br />Ați cerut: <b>$ceruta</b>, iar acesta apare de [b][u]$xxx[/u][/b] ori</div>";
Unde este variabila $xxx acolo doresc să-mi afișeze numărul returnat de variabila $ceruta.
Mulțumesc, Toate bune!

MarPlo
Eu stiu solutia /codul pe care l-am dat; implementarea in codul dv. nu o stiu; nu am cum sa-l probez.
- Pot sa incerc pe bucata de cod unde ati incercat concret sa-l adaugati, specificand si eroarea afisata.

Subiecte similare