replace whitespaces with...

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
RADICAL
Δημοσιεύσεις: 386
Εγγραφή: 14 Ιούλ 2004 01:07
Τοποθεσία: Athens
Επικοινωνία:

replace whitespaces with...

Δημοσίευση από RADICAL » 07 Σεπ 2005 00:35

Καλησπέρα,
φτιάχνω μια φόρμα αναζήτησης σε μία βάση αλλα έχω κολλήσει στο εξής:

Όταν ο χρήστης δίνει μια λέξη όλα ΟΚ όταν δίνει δύο η παραπάνω όμως το SELECT δεν γυρνάει τπτ.

Προσπαθώ να κάνω replace τα κενά έτσι:

Κώδικας: Επιλογή όλων

$sfor=$_POST['entry'];
$pattern= '/\s/';
$replacement= '+';
$str= preg_replace($pattern, $replacement, $sfor);
Το replace φαίνετε να γίνεται σωστά αλλά το SELECT δέν επιστρέφει τπτ.

Υποθέτω πώς είναι θέμα mysql έτσι?
Με τι πρέπει να αντικαταστήσω τα κενά για να γίνει σωστά το query?

το query είναι το εξής:

Κώδικας: Επιλογή όλων

$result = mysql_query("SELECT clmn1, clmn2, clmn3, clmn4 from table WHERE clmn1 LIKE '%$str%' OR clmn2 LIKE '%$str%'");
Ευχαριστώ για το χρόνο σας.
Εικόνα

Άβαταρ μέλους
apoel
Δημοσιεύσεις: 350
Εγγραφή: 18 Ιούλ 2005 23:46
Επικοινωνία:

replace whitespaces with...

Δημοσίευση από apoel » 15 Σεπ 2005 15:13

 

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

replace whitespaces with...

Δημοσίευση από Rapid-eraser » 15 Σεπ 2005 16:02

Lipov twra pou proeksa to topic :P va sou pw ti kaveis la8os ... av kai pistebw oti toso kairo 8a exeis katalabei ti eivai to la8os xexe

lipov to like dev doulebei me +

to like tis mysql pervei dio telestes to % pou simevei opoisdipotexaraktiras se opoiesdipote 8eseisis kai o xarakatiras _ pou kavei evtopizei opoiovdipote 1 xarakatira omos.

To + kai - eivai apo eva allo elegxo kai eivai meros tou FULL TEXT Indexing system tis mysql.

Gia tnv akribia afto pou 8es va kaveis me ta + kai -
eivai to MATCH AGAINST .

paradigma

Κώδικας: Επιλογή όλων

SQL:
SELECT `id` , `name` , MATCH(`name`) AGAINST ('+Rapid-eraser' IN BOOLEAN MODE) AS `score`
FROM `mytable` 
WHERE  MATCH(`name`) AGAINST ('+Rapid-eraser' IN BOOLEAN MODE)  
ORDER BY `score` DESC
To parapavo 8a psaksei eggrafes pou exouv sto pedio name
tnv leksi Rapid alla oxi tnv eraser se case insensitive mode

av sou xriazete va eivai akribis 8a prepei va zitiseis BINNARY tnv erotisi . Episis av dev sou xriazete to + - tis akribias apla to afereis kai bazeis ksexorista ka8e leksi me + xoris va iparxei bebea n akribia tou boolean mode .

Telos ola ta paidia pou 8a xrisimopiisesi se afti tnv me8odo prepei va exouv key os FULL TEXT ka8os me afti tnv me8odo dimiourgite to aparetito indexing (kai distixos to avalogo overhead stnv basi) me tis lekseis .

To Full text search exei arketo tunning stov mysql server kai av dev exei givei 8a bariveis adika to mixavima kai dev 8a kaveis kai sosta tnv douleia sou
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

replace whitespaces with...

Δημοσίευση από ThyClub » 15 Σεπ 2005 21:09

Εγώ στο ZeusCMS έχω κάνει το εξής και δουλεύει μια χαρά:

Κώδικας: Επιλογή όλων

$q=addslashes(strtolower(security::safeGet($q)));
				$q=str_replace(" ","%') or (keywords like '%",$q);
				$res = $db->query("SELECT * FROM $table WHERE status='ON' AND (keywords like '%$q%')");
Αυτό που κάνει είναι να αλλάζει τα κενά με %') or (keywords like '%

και το query ψάχνει για όλες τις λεξεις...


Δοκίμασέ το :wink:

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες