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 Mesaje: 4343
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 Mesaje: 88
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 Mesaje: 4343
Nu stiu unde iti trebuie sa pui variabila in codul tau; vezi rezultatul dupa ce testezi.

bvlucretiu Mesaje: 88
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 Mesaje: 4343
Posteaza partea de cod respectiva cu ce ai incercat si eroarea afisata.

bvlucretiu Mesaje: 88
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 Mesaje: 4343
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