2015-05-01 5 views
1

Кажется, я не могу найти ответ на этот вопрос, поэтому я собираюсь задать его здесь.Получите одно значение из базы данных с несколькими значениями

У меня есть 6 флажков в форме с именем сертификации. Каждое значение отличается.

Я использую эту функцию, чтобы ввести их в DB $ certifications = implode (',', $ _POST ['certification']);

Если установлен один флажок, мой столбец сертификатов имеет одно значение.

Но если выбрано и представлено несколько экземпляров, это выглядит как это значение1, value2, value3.

У меня есть настройка запроса с помощью переключателей для выбора записей с определенными значениями. Он работает как прелесть, когда запись имеет одно значение, но если есть несколько разделенных запятыми, что запись get игнорируется, поскольку она не совсем то, что она ищет.

Например, если мой url говорит? Certifications = value1, каждая запись с единственным значением1 будет отображаться, НО если этот же параметр url установлен и запись имеет значение1, значение2 получает пропущен.

Что может решить это?

<div id="search"> 
    <h2>Filter Results</h2> 
    <form method="get" action="index.php"> 
    <h3>Certifications</h3> 
    <label><input type="radio" name="certifications" value ="washington"/>Washington</label> 
    <label><input type="radio" name="certifications" value ="new york"/>New York</label> 
    <label><input type="radio" name="certifications" value ="virginia"/>Virginia</label> 
    <label><input type="radio" name="certifications" value ="florida" />Florida</label> 
    <label><input type="radio" name="certifications" value ="georgia" />Georgia</label> 
    <label><input type="radio" name="certifications" value ="utah" />Utah</label> 
    <h3>Signage</h3> 
    <label><input type="checkbox" name="signage" value ="1" /><span class="label">Top Sign</label> 
    <h3>State</h3> 
    <select name="state"> 
    <option>Select State</option> 
    <option value="AL">Alabama</option> 
    <option value="AK">Alaska</option> 
    <option value="AZ">Arizona</option> 
    <option value="AR">Arkansas</option> 
    <option value="CA">California</option> 
    <option value="CO">Colorado</option> 
    <option value="CT">Connecticut</option> 
    <option value="DE">Delaware</option> 
    <option value="DC">District Of Columbia</option> 
    <option value="FL">Florida</option> 
    <option value="GA">Georgia</option> 
    <option value="HI">Hawaii</option> 
    <option value="ID">Idaho</option> 
    <option value="IL">Illinois</option> 
    <option value="IN">Indiana</option> 
    <option value="IA">Iowa</option> 
    <option value="KS">Kansas</option> 
    <option value="KY">Kentucky</option> 
    <option value="LA">Louisiana</option> 
    <option value="ME">Maine</option> 
    <option value="MD">Maryland</option> 
    <option value="MA">Massachusetts</option> 
    <option value="MI">Michigan</option> 
    <option value="MN">Minnesota</option> 
    <option value="MS">Mississippi</option> 
    <option value="MO">Missouri</option> 
    <option value="MT">Montana</option> 
    <option value="NE">Nebraska</option> 
    <option value="NV">Nevada</option> 
    <option value="NH">New Hampshire</option> 
    <option value="NJ">New Jersey</option> 
    <option value="NM">New Mexico</option> 
    <option value="NY">New York</option> 
    <option value="NC">North Carolina</option> 
    <option value="ND">North Dakota</option> 
    <option value="OH">Ohio</option> 
    <option value="OK">Oklahoma</option> 
    <option value="OR">Oregon</option> 
    <option value="PA">Pennsylvania</option> 
    <option value="RI">Rhode Island</option> 
    <option value="SC">South Carolina</option> 
    <option value="SD">South Dakota</option> 
    <option value="TN">Tennessee</option> 
    <option value="TX">Texas</option> 
    <option value="UT">Utah</option> 
    <option value="VT">Vermont</option> 
    <option value="VA">Virginia</option> 
    <option value="WA">Washington</option> 
    <option value="WV">West Virginia</option> 
    <option value="WI">Wisconsin</option> 
    <option value="WY">Wyoming</option> 
</select>    
    <br> 
    <input class="submit_filter" type="submit" name="formSubmit"/> 
</form> 
    </div> 
    <div id="count"> 
    <?php 
    $countListings = mysqli_num_rows(mysqli_query($conn, "SELECT * FROM pilotOperators")); 
    echo "Total Listings: " . $countListings; 
    ?> 
    </div> 
<div id="results"> 
<?php 

$start=0; 
$limit=5; 

if(isset($_GET['pg'])) 
{ 
$pg=$_GET['pg']; 
$start=($pg-1)*$limit; 
} 
else { 
$pg = 1; 
} 
$sql = mysql_query($query); 

$conditions = "SELECT * FROM pilotOperators WHERE 1=1 ORDER BY id DESC"; 
# append condition for signage (if required) 
if(isset($_GET['signage'])) { 
    $conditions .= " AND signage='1'"; 
} 
# append condition for certifications (if required) 
if(isset($_GET['certifications'])) { 
    $certifications = mysqli_real_escape_string($conn,$_GET['certifications']); 
    $conditions .= " AND certifications='$certifications'"; 
} 
# append condition for state (if required) 
if(isset($_GET['state'])) { 
    if($_GET['state'] != "Select State") { 
    $state = mysqli_real_escape_string($conn,$_GET['state']); 
    $conditions .= " AND state='$state'"; 
} 
} 
$conditions .= " Limit $start, $limit"; 
$result = mysqli_query($conn, $conditions); 

while($row = mysqli_fetch_array($result)) 
{ 
echo "\n <table border='0' class='resultTable' width='75%'> \n"; 
echo "<tr> \n"; 
echo "<td width='120px'>Business: </td> \n"; 
echo "<td>" . $row['business'] . "</td> \n"; 
echo "</tr> \n"; 
echo "<tr> \n"; 
echo "<td width='120px'>Cars Available: </td> \n"; 
echo "<td>" . $row['cars'] . "</td> \n"; 
echo "</tr> \n"; 
echo "<tr> \n"; 
echo "<td>Name: </td> \n"; 
echo "<td>" . $row['name'] . "</td> \n"; 
echo "</tr> \n"; 
echo "<tr> \n"; 
echo "<td>Phone: </td> \n"; 
echo "<td>" . $row['phone'] . "</td> \n"; 
echo "</tr> \n"; 
echo "<tr> \n"; 
echo "<td>Alt. Phone: </td> \n"; 
echo "<td>" . $row['alt_phone'] . "</td> \n"; 
echo "</tr> \n"; 
echo "<tr> \n"; 
echo "<td>Fax: </td> \n"; 
echo "<td>" . $row['fax'] . "</td> \n"; 
echo "</tr> \n"; 
echo "<tr> \n"; 
echo "<td>Email: </td> \n"; 
echo "<td>" . $row['email'] . "</td> \n"; 
echo "</tr> \n"; 
echo "<tr> \n"; 
echo "<td>Website: </td> \n"; 
echo "<td><a href='" . $row['website'] . "' target='_blank'>" . $row['website'] . "</a></td> \n"; 
echo "</tr> \n"; 
echo "<tr> \n"; 
echo "<td>City: </td> \n"; 
echo "<td>" . $row['city'] . "</td> \n"; 
echo "</tr> \n"; 
echo "<tr> \n"; 
echo "<td>State: </td> \n"; 
echo "<td>" . $row['state'] . "</td> \n"; 
echo "</tr> \n"; 
echo "<tr> \n"; 
echo "<td>Certifications: </td> \n"; 
echo "<td>" . $row['certifications'] . "</td> \n"; 
echo "</tr> \n"; 
echo "<tr> \n"; 
echo "<td>Top Sign: </td> \n"; 
echo "<td>"; 
if($row['signage'] = 1) { 
    echo "Has Top Sign"; 
} 
else { 
    echo "Top Sign Not Listed"; 
} 
echo "</td> \n"; 
echo "</tr> \n"; 
echo "</table> \n\n"; 
} 

$countconditions = "SELECT * FROM pilotOperators WHERE 1=1"; 
# append condition for signage (if required) 
if(isset($_GET['signage'])) { 
    $countconditions .= " AND signage='1'"; 
} 
# append condition for certifications (if required) 
if(isset($_GET['certifications'])) { 
    $certifications = mysqli_real_escape_string($conn,$_GET['certifications']); 
    $countconditions .= " AND certifications='$certifications'"; 
} 
# append condition for state (if required) 
if(isset($_GET['state'])) { 
    if($_GET['state'] != "Select State") { 
    $state = mysqli_real_escape_string($conn,$_GET['state']); 
    $countconditions .= " AND state='$state'"; 
} 
} 
$rows = mysqli_num_rows(mysqli_query($conn, $countconditions)); 

$total=ceil($rows/$limit); 
    echo "<div id='paginationLinks'> \n"; 
    if($pg>1) 
{ 
$q2 = http_build_query(array_merge($_GET, ["pg" => $pg-1])); 
echo "<a href='index.php?".$q2."' class='paginationButton'>PREVIOUS</a> \n"; 
} 
if($pg!=$total) 
{ 
$q = http_build_query(array_merge($_GET, ["pg" => $pg+1])); 
echo "<a href='index.php?".$q."' class='paginationButton'>NEXT</a> \n"; 
} 

echo "<ul class='page'> \n"; 
for($i=1;$i<=$total;$i++) 
{ 
    if($i==$pg) { echo "<li class='current'>".$i."</li> \n"; } 

    else { echo "<li><a href='?pg=".$i."'>".$i."</a></li> \n"; } 
    } 
    echo "</ul> \n"; 
     echo "</div> \n"; 
    mysqli_close($con); 
    ?> 
     </div> 
     </div> 

Edit:

Я забыл упомянуть, что я редактировал эти строки и пытался использовать взрываются:

if(isset($_GET['certifications'])) { 
    $certifications = mysqli_real_escape_string($conn,explode(",",$_GET['certifications'])); 
    $conditions .= " AND certifications='$certifications'"; 
    } 

Но это не сделать трюк.

Я буквально только нужен мой код, чтобы иметь возможность читать одно значение из строки, которая имеет несколько хранящегося:/

ответ

3

Вместо

if(isset($_GET['certifications'])) { 
    $certifications = mysqli_real_escape_string($conn,$_GET['certifications']); 
    $countconditions .= " AND certifications='$certifications'"; 
} 

Вы должны использовать find_in_set например

if(isset($_GET['certifications'])) { 
    $certifications = mysqli_real_escape_string($conn,$_GET['certifications']); 
    $countconditions .= " AND FIND_IN_SET('$certifications', certifications)"; 
} 
+0

Это работает как шарм. Благодаря :) –

Смежные вопросы