Cornelia Posted September 8, 2007 Share Posted September 8, 2007 Hi, a question for you guys: I have a script that search the database for entries typed in a input field. This works well until I enter a date: dd-mm-yyyy yyyy-mm-dd Then the search finds no table entries even if there is plenty of them with the date typed in the input field. Here's the code: <?php error_reporting(E_ALL); ini_set("display_errors", "1"); // Kolla om inloggad = sessionen satt if (!isset($_SESSION['sess_user'])){ header("Location: login.php"); exit; } include "connect.php"; if (empty($_GET['fritext'])) { $_GET['fritext'] = '¤%&#°+^*'; } $fritext = trim($_GET['fritext']); $fritext = stripslashes($fritext); if (preg_match("/^\"?(\d{2})-(\d{2})-(\d{4})\"?$/",$fritext)) { $search = explode("-", $fritext); $search = "`".$search[2]."-".$search[1]."-".$search[0]."`"; // Hämta från databasen $sql = "SELECT COUNT(*) FROM `order_privat` WHERE datum = '$search' OR orderdatum = '$search' order by id DESC"; $result = mysql_query($sql) or die("SQL: $sql <br>".mysql_error()); $antal = mysql_result($result, 0); $inlaggPerSida = 20; // Välj antal inlägg per sida, minst 1 $antalPagLankar = 5; // Välj max antal visade paginglänkar // Beräkna antalet sidor $pageNumbers = ceil($antal/$inlaggPerSida); // Kontrollera värdet på $page (sidnummer) if (isset($_GET["page"])){ $page = $_GET["page"]; } else $page = 1; if ($page > $pageNumbers) $page = $pageNumbers; if ($page < 1) $page = 1; // Beräkna startraden $start = ($page-1) * $inlaggPerSida; // Om fler än en sida, skriv ut pagingen if ($pageNumbers > 1) pagingList($page, $pageNumbers, $antalPagLankar, "left"); // Hämta från databasen $sql = "SELECT * FROM `order_privat` WHERE datum = '$search' OR orderdatum = '$search' order by id DESC LIMIT $start, $inlaggPerSida"; $result = mysql_query($sql) or die("SQL: $sql <br>".mysql_error()); } else { $search = $fritext; // Hämta från databasen $sql = "SELECT COUNT(*) FROM `order_privat` WHERE MATCH (namn1, namn2, gatuadress, postadress, epostadress, annat, utrustning, bokningsnummer) AGAINST ('$search' IN BOOLEAN MODE) order by id DESC"; $result = mysql_query($sql) or die("SQL: $sql <br>".mysql_error()); $antal = mysql_result($result, 0); $inlaggPerSida = 20; // Välj antal inlägg per sida, minst 1 $antalPagLankar = 5; // Välj max antal visade paginglänkar // Beräkna antalet sidor $pageNumbers = ceil($antal/$inlaggPerSida); // Kontrollera värdet på $page (sidnummer) if (isset($_GET["page"])){ $page = $_GET["page"]; } else $page = 1; if ($page > $pageNumbers) $page = $pageNumbers; if ($page < 1) $page = 1; // Beräkna startraden $start = ($page-1) * $inlaggPerSida; // Om fler än en sida, skriv ut pagingen if ($pageNumbers > 1) pagingList($page, $pageNumbers, $antalPagLankar, "left"); // Hämta från databasen $sql = "SELECT * FROM `order_privat` WHERE MATCH (namn1, namn2, gatuadress, postadress, epostadress, annat, utrustning, bokningsnummer) AGAINST ('$search' IN BOOLEAN MODE) order by id DESC LIMIT $start, $inlaggPerSida"; $result = mysql_query($sql) or die("SQL: $sql <br>".mysql_error()); } /* En funktion som ger sidlänkar i anslutning till utskrift från textfil eller databas. $page är vilken sida som är den aktuella. $pageNumbers är antal sidor som utskriften är uppdelad på. $numLinks är antal sidlänkar som ska visas. $align är antingen 'left' eller 'right'. Pagingen justerad höger eller vänster. De variabler som finns i querystringen flyttas med till nya sidor. */ function pagingList($page, $pageNumbers, $numLinks, $align){ // Hämta globala variabler global $_SERVER, $_GET; // Hämtar namnet på filen $file = $_SERVER['PHP_SELF']; // Hämtar QUERY_STRING och tar bort page från den $getvar = $_SERVER['QUERY_STRING']; $search = "/(^page=d*&?|&page=d*)/i"; $getvar = preg_replace($search, "", $getvar); if ($getvar != "") $getvar = "&".$getvar; // Om antalet sidor är större än antalet sidlänkar, // beräkna startlänk if ($pageNumbers > $numLinks){ $startLink = $page - floor($numLinks / 2); if ($startLink >($pageNumbers - $numLinks + 1)){ $startLink = $pageNumbers - $numLinks + 1; } } else $startLink = 1; if ($startLink<1) $startLink = 1; // Beräkna sista sidlänk $stopLink = $startLink + $numLinks - 1; if ($stopLink > $pageNumbers) $stopLink = $pageNumbers; // skriver pagingen echo "<div class=\"paging\" style=\"text-align:$align\">\n"; // Om sidan inte är första sidan, // visa som länk till första sidan if ($page > 1){ echo "<a href=\"$file?page=1$getvar\" class=\"paging\" "; echo "title=\"Första sidan\">«</a>"; } else echo "<span class=\"pagingDim\">«</span>"; // Om första sidlänken inte är lika med första sidan visa '...' if ($startLink > 1){ echo " ... "; } else echo ""; // Skriver ut sidlänkarna. Aktuell sida blir inte länk for ($i=$startLink; $i<=$stopLink; $i++){ if ($i != $page){ echo " <a href=\"$file?page=$i$getvar\" "; echo "class=\"paging\">$i</a> "; } else { echo " <span class=\"pagingDim\">$i</span> "; } if ($i < $stopLink) echo ""; } // Om sista sidlänken inte är lika med sista sidan visa '...' if ($stopLink < $pageNumbers){ echo " ... "; } else echo ""; // Om sidan inte är sista sidan, // visa som länk till sista sidan if ($page < $pageNumbers){ echo "<a href=\"$file?page=$pageNumbers$getvar\" "; echo "class=\"paging\" "; echo "title=\"Sista sidan\">»</a>\n"; } else echo "<span class=\"pagingDim\">»</span>\n"; // Avsluta utskriften echo "</div>"; } ?> Do someone know what's wrong? Thanks in advance! /Cornelia Quote Link to comment https://forums.phpfreaks.com/topic/68504-why-doesnt-this-search-work/ Share on other sites More sharing options...
grimmier Posted September 9, 2007 Share Posted September 9, 2007 you are double defining the var $search. first you define it and assign variables as an array then you are tring to redefine it as a single var. try changing the name of the first one to something like $search_parts <?php //$search = explode("-", $fritext); $search_parts = explode("-", $fritext); $search ="{$search_parts[2]}-{$search_parts[1]}-{$search_parts[0]}"; ?> also you have ` in the search field instead of ', either way you don't need them in the $search var as its already supplied in your query. try using curly brackets around your var names within double quoted strings. its a good habit to get into. <?php $sql = "SELECT COUNT(*) FROM `order_privat` WHERE datum = '{$search}' OR orderdatum = '{$search}' order by id DESC"; ?> Quote Link to comment https://forums.phpfreaks.com/topic/68504-why-doesnt-this-search-work/#findComment-344566 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.