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 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"; ?> 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
Archived
This topic is now archived and is closed to further replies.