nemesis345 Δημοσ. 8 Ιουλίου 2011 Δημοσ. 8 Ιουλίου 2011 Καλησπέρα σας. Έχω φτιάξει μια custom μηχανή αναζήτησης για μια ιστοσελίδα. Μέχρι και χτες όλα μα όλα σχετικά με την λειτουργία των script και την εκτέλεση των αναζητήσεων λειτουργούσαν τέλεια. Σήμερα δυστυχώς εντόπισα πρόβλημα στην ορθή λειτουργία της αναζήτησης. Έπειτα από 2 ώρες debug δεν κατάφερα να βρω αιτία και λύση. Αυτά είναι τα compo του server: Apache 2.2.17 PHP Version 5.2.14 Mysql client api version 5.5.8 Θέλω να ξέρω πόσο πιθανό είναι να δημιουργηθεί πρόβλημα από την μια στιγμή στην άλλη. Και επιπλέον κάτι που εντόπισα και ίσως βοηθήσει. Κατά την αναζήτηση αν χρησιμοποιήσεις αγγλικούς όρους όλα δουλεύουν μια χαρά. Όταν όμως χρησιμοποιήσεις ελληνικούς όρους τότε εμφανίζονται τα προβλήματα: Επιστροφή αποτελεσμάτων με την ολοκλήρωση της αναζήτησης. Κανένα αποτέλεσμα με την ολοκλήρωση της αναζήτησης. Σας ευχαριστώ εκ των προτέρων.
dewn735 Δημοσ. 8 Ιουλίου 2011 Δημοσ. 8 Ιουλίου 2011 Ο κώδικας που είναι; Σε εντελώς θεωρητικό επίπεδο, θα πρέπει το collation της βάσης και το encoding της σελίδας να συμβαδίζουν (utf8 και τα δύο ή iso-8859-7 και greek collation)+ η κλασσική εντολή για mysql για τέτοιου είδους προβλήματα: >mysql_query("SET NAMES greek"); ή >mysql_query("SET NAMES utf8");
nemesis345 Δημοσ. 9 Ιουλίου 2011 Μέλος Δημοσ. 9 Ιουλίου 2011 Δίκιο έχεις dewn735. Το ξέχασα εντελώς. Ορίστε λοιπόν ο κώδικας: Το script όπου εκτελείται η αναζήτηση: ><?php $keyword1 = cleanString($_REQUEST['keyword1']); //echo "<span style='color:#ffffff'>KEYWORD1 [[[[ ".$keyword1." ]]]]</span><br />"; $keyword2 = cleanString($_REQUEST['keyword2']); $s_categories = "SELECT * FROM [table_name2] WHERE id!=0 ORDER BY name ASC"; $result = mysql_query($s_categories) or die("Error, query failed <br /> Your ESI EISAI Query: ".$s_categories."<br /> Error: (".mysql_errno().") ".mysql_error()); $i = 1; while ($row = mysql_fetch_array($result)) { $s_subcategoryID[$i] = $row['id']; $s_subcatName[$i] = $row['name']; $i++; } $s_categories = ""; $result = ""; if (is_numeric($keyword1)) $subcategories = "SELECT * FROM [table_name2] where id='".mysql_real_escape_string($keyword1)."' order by name ASC"; else $subcategories = "SELECT * FROM [table_name2] where name='".mysql_real_escape_string($keyword1)."' order by name ASC"; //echo "<span style='color:#ffffff'>[[[ ".$subcategories." ]]]</span><br />"; $result = mysql_query($subcategories) or die("Error, query failed <br />Your Query: ".$subcategories."<br /> Error: (".mysql_errno().") ".mysql_error()); //echo "<span style='color:#ffffff'>RESULT [[[ ".$result." ]]]</span><br />"; while ($row = mysql_fetch_array($result)) { $keyword1_id = $row['id']; $sel_subcatName = $row['name']; } //echo "<span style='color:#ffffff'>[[[ ID FOR KEYWORD1: ".$keyword1_id." ]]]</span><br />"; $subcategories = ""; $result = ""; $action = $_REQUEST["a"]; switch ($action) { case "smp": $msg_t = "<h1>Αποτελέσματα Απλής Αναζήτησης</h1>"; if ($keyword1_id || $keyword2) { $rowsPerPage = 15; $pageNum = 1; if (isset($_REQUEST['page'])) { $pageNum = $_REQUEST['page']; } $offset = ($pageNum - 1) * $rowsPerPage; if ($keyword1_id == "") $keyword1_id = ""; if ($keyword2 == "") $keyword2 = $_REQUEST["keyword2"]; $page = $_REQUEST["page"]; if ($page == "") $page = 1; $query = "SELECT * FROM [table_name] WHERE"; if (!empty($keyword1_id)) $query .= " subcatid='".$keyword1_id."' AND"; if (!empty($keyword2)) $query .= " header like '".mysql_real_escape_string($keyword2)."%' AND"; $query .= " publicview='1'"; $query .= " ORDER BY `_picture1` DESC, BINARY header ASC LIMIT $offset, $rowsPerPage"; //echo "<span style='color:#ffffff'>QUERY [[[ ".$query." ]]]</span><br />"; $result = mysql_query($query) or die("Error, query failed <br /> Your Simple Search Query: ".$query."<br /> Error: (".mysql_errno().") ".mysql_error()); //echo "<span style='color:#ffffff'>RESULT [[[ ".$result." ]]]</span><br />"; $l = 1; while ($row = mysql_fetch_array($result)) { $company_a_id[$l] = $row['id']; ... $company_a_timeoutdays[$l] = $row['timeoutdays']; $l++; } $query = ""; $result = ""; $sa_categories = "SELECT * FROM [table_name2] where id='".$company_a_subcatid."' order by name ASC"; $result = mysql_query($sa_categories) or die("Error, query failed <br /> Your Simple SubCat Query: ".$sa_categories."<br /> Error: (".mysql_errno().") ".mysql_error()); while ($row = mysql_fetch_array($result)) { $sa_subcategoryID = $row['id']; $sa_subcatName = $row['name']; } $sa_categories = ""; $result = ""; /* εδώ ακολουθεί script για σελιδοποίηση των αποτελεσμάτων */ mysql_close($conn); } else { $msg = "<b>Ειδοποίηση:</b> Ούπς!! Μάλλον η φόρμα αναζήτησης δεν είχε στοιχεία για να ψάξουμε!!!"; } break; } ?> Και η φόρμα αναζήτησης: ><form name="formara1" action="index.php?s=sr&a=smp" method="post" class="simple_search"> <?php echo "<div id=\"form_item\">"; echo "<div id=\"label\"><label>Τι;</label></div>\n"; echo "<div id=\"what\"> <input type=\"text\" name=\"keyword1\" id=\"tags_smp\" size=\"16\" maxlength=\"50\" value=\"\" autocomplete=\"on\"/></div>\n"; echo "</div>\n"; echo "<div id=\"form_item\">\n"; echo "<div id=\"label\"><label>Ποιός;</label></div>\n"; echo "<div id=\"who\"><input type=\"text\" name=\"keyword2\" size=\"16\" maxlength=\"50\" value=\"\" onChange=\"javascript:this.value=this.value.toUpperCase();\" /></div>\n"; echo "</div>\n"; echo "<div id=\"form_submit\">\n"; echo "<div id=\"submit\"><input type='submit' name='smp' value='Αναζήτηση'/></div>\n"; echo "</div>\n"; ?> </form>
dewn735 Δημοσ. 10 Ιουλίου 2011 Δημοσ. 10 Ιουλίου 2011 Μας λείπουν ακόμη ο κώδικας για τη σύνδεση στη βάση, το collation της βάσης και φυσικά το encoding των σελίδων Αρχικά, δε βλέπω πουθενά στη φόρμα σου να ορίζεις τη μεταβλητή $a ($action = $_REQUEST["a"]), οπότε με τη μία όλο το switch βγαίνει εκτός Επίσης, πρέπει να δούμε και την cleanstring(), μήπως και εκεί είναι που "εξαφανίζονται" οι ελληνικοί χαρακτήρες Με echo, εμφανίζονται σωστά οι $keyword1 και $keyword2 ;
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.