Probleme cautare in baza de date cu PDO
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
cadou
- Mesaje: 328
Probleme cautare in baza de date cu PDO
inainte de a utiliza PDO acest cod mergea perfect, acum daca scriu un nume valid intreg nu il afiseaza. daca scriu doar primele 2 litere din el, afiseaza.
Cod: Selectaţi tot
<?php include('conectare.php');
if($_POST)
{
$name = $_POST['searchword'];
$searchname = strtolower($name);
$searchresult="SELECT * from `membri` WHERE `nume` like '%$searchname%' ORDER BY RAND() LIMIT 8";
$searchnumberresult = $dbh->query($searchresult);
$xxxxxx = $searchnumberresult->fetch(PDO::FETCH_NUM);
if($xxxxxx != true)
{ ?>
<div class="display_box" align="left" style="color:red;">
<center>
Fara rezultate. <br>
<b>Sfat: Scrie numele de utilizator sau orasul corect!</b>
</center>
</div>
<?php }
else if($xxxxxx > 0){
while($search = $searchnumberresult->fetch(PDO::FETCH_ASSOC))
{
$nume=$search['nume'];
$b_nume='<b>'.$searchname.'</b>';
$final_nume = str_ireplace($searchname, $b_nume, $nume);
?>
<style type="text/css">
<!--
a.rezcautare {text-decoration:none;}
-->
</style>
<a class="rezcautare" href="/<?php echo $search['nume']; ?>.php">
<div class="display_box" align="left">
<img src="/users/poza-profil/<?php echo $search['id']; ?>.jpg" style="width:50px; height:50px; float:left; margin-right:6px;" /><span class="name"><?php echo $final_nume; ?></span> <br/><?php echo $search['oras']; ?><br/>
</div>
</a>
<?php } } } ?>
Exemplu:
Daca scriu ad -> afiseaza tot ce gaseste cu ad
Daca scriu Adr -> nu mai afiseaza nimic, desi exista ceva in baza de date
Daca scriu tot cuvantul Adrian -> nu mai afiseaza nimic, desi exista ceva in baza de date
MarPlo
Mesaje: 4343
Salut
Nu stiu de ce pt 2 litere functioneaza, dar pentru mai mult nu. Oricum, e gresita verificarea "$xxxxxx > 0" unde $xxxxxx e rezultatul dat de fetch(PDO::FETCH_NUM). Aceasta functie returneaza un array, sau false.
Mai bine verifici daca sunt coloane in rezultat, cu columnCount().
Verificarea ar trebui asa:
Cod: Selectaţi tot
$xxxxxx = $searchnumberresult->columnCount();
if($xxxxxx == 0) {
// no results
}
else {
// parcurge rezultatul
while($search = $searchnumberresult->fetch(PDO::FETCH_ASSOC)) {
// preia datele din fiecare rand
}
}
Sau poti incerca sa adaptezi acest model:
Cod: Selectaţi tot
$nores = '<div class="display_box" align="left" style="color:red;"><center>
Fara rezultate. <br>
<b>Sfat: Scrie numele de utilizator sau orasul corect!</b>
</center></div>';
$sql="SELECT * from `membri` WHERE `nume` like '%". addslashes($searchname) ."%' ORDER BY RAND() LIMIT 8";
$sqlre = $dbh->query($sql);
if($sqlre !== false) {
// daca sunt coloane rezultate
if($sqlre->columnCount() > 0) {
// Se parcurg datele si le afiseaza
while($row = $sqlre->fetch(PDO::FETCH_ASSOC)) {
$nume = $row['nume'];
$b_nume='<b>'.$searchname.'</b>';
$final_nume = str_ireplace($searchname, $b_nume, $nume);
// ... Restul codului
}
}
else echo $nores;
}
else echo $nores;
cadou
Mesaje: 328
Pffff tot nu merge
la rezultate imi apar, dar cand nu am rezultate nu apare mesajul acela ca nu sau gasit rezultate
Cod: Selectaţi tot
<?php include('conectare.php');
if($_POST)
{
$name = $_POST['searchword'];
$searchname = strtolower($name);
$searchnumberresult = $dbh->query("SELECT * from `membri` WHERE `nume` like '%$searchname%' ORDER BY RAND() LIMIT 8");
$xxxxxx = $searchnumberresult->columnCount();
if($xxxxxx > 0)
{
while($search = $searchnumberresult->fetch(PDO::FETCH_ASSOC))
{
$nume=ucwords($search['nume']);
$b_nume='<b>'.ucwords($searchname).'</b>';
$final_nume = str_ireplace($searchname, $b_nume, $nume);
?>
<style type="text/css">
<!--
a.rezcautare {text-decoration:none;}
-->
</style>
<a class="rezcautare" href="/<?php echo $search['nume']; ?>.php">
<div class="display_box" align="left">
<img src="/users/poza-profil/<?php echo $search['id']; ?>.jpg" style="width:50px; height:50px; float:left; margin-right:6px;" />
<span class="name"><?php echo "$final_nume<br> Stare: $search[stare], Interes: $search[interes]"; ?></span>
<br/>
<?php echo "$search[oras] - $search[tara]"; ?><br/>
</div>
</a>
<?php } }
else {
?>
<div class="display_box" align="left" style="color:red;">
<center>
Fara rezultate. <br>
<b>Sfat: Scrie numele de utilizator sau orasul corect!</b>
</center>
</div>
<?php } } ?>
MarPlo
Mesaje: 4343
Nu stiu, verifica ce valoare are $xxxxxx, cu:
cadou
Mesaje: 328
Imi afiseaza mereu int(28) indiferent daca am rezultate sau nu
P.S Am rezolvat-o , cred, am mai adaugat ceva
Cod: Selectaţi tot
$name = $_POST['searchword'];
$searchname = strtolower($name);
$searchnumberresult = $dbh->query("SELECT * from `membri` WHERE `nume` like '%$searchname%' ORDER BY RAND() LIMIT 8");
$r = $dbh->query("SELECT COUNT(*) FROM `membri` WHERE `nume` like '%$searchname%' ORDER BY RAND() LIMIT 8")->fetch(PDO::FETCH_NUM);
$numrows = $r[0];
if($numrows > 0)
{
// afiseaza rezultatele
}
else
{
// mesajul de eroare
}
Subiecte similare
-
Tip de conectare la baza de date
Discutii si Intrebari Diverse
Primul mesaj
care este noul tip de fisier pentru conectara la baza de date?
Ultimul mesaj
In prezent, tipurile de conectare la baza de date folosind php sunt PDO si MySQLi. PDO (PHP Data Objects) se poate folosi pentru conectare si la alte...
-
Adaugare orar zilele saptamanii in baza de date
PHP - MySQL - XML
Primul mesaj
Salut
Am o baza de date cu toate locatiile
location_id | name |address |telephone | open
Si un formular prin care incarc datele in bd....
Ultimul mesaj
Treaba cu adaugare json in mysql e simpla, se rezuma la adaugarea unui sir care contine ghilimele duble.
Problema la tine e ca acele ghilimele sunt...
-
Select dupa mai multe coloane in baza de date
PHP - MySQL - XML
Primul mesaj
Salut
am si eu o baza de date zona_geografica in care am rubricile
id |nume_tara |nume_oras |id_tara |id_oras | nume_zona | id_zona | data
1 |...
Ultimul mesaj
Multumesc mult pentru ajutor .
-
Cautare serie de cuvinte intr-un sir in php
PHP - MySQL - XML
Primul mesaj
Am o listă de cuvinte spam care se află într-un array. Când un utilizator trimite un text șir, vreau să știu dacă textul conține vreunul din aceste...
Ultimul mesaj
Ai putea sa adăugi cuvintele spam într-un șir, cu | ca separator de cuvinte și apoi folosesti Regex pentru a verifica.
$my_words =...
-
Cip de calculator care procesează și stochează date ca un neuron
Divertisment si Jocuri
Inginerii de la EPFL au creat un nou cip de calculator care poate procesa și stoca date în același circuit. Este realizat folosind un material...