Вы можете заполнить поле выбора, используя саму таблицу:
$sql = mysql_query('SELECT model FROM product ORDER BY model');
$models = array();
while ($row = mysql_fetch_array($sql)){
$models[] = $row;
}
?>
<form action="search.php" method="post">
<select name="term">
<?php
foreach ($models as $model) {
?>
<option value="<?php echo $model['model']?>"><?php echo $model['model']?></option>
<?php
}
?>
</select>
<input type="submit" name="submit" value="Submit" />
</form>
Чтобы получить список общих корней модели, вы можете сделать что-то вроде этого:
$sql = mysql_query('SELECT model FROM product ORDER BY model');
$models = array();
while ($row = mysql_fetch_array($sql)){
/*
* Break the model name up into parts, assuming each part
* is separated by a space. Then just use the first part
* to build up an array of common model starts.
*
* Because we're using the sub-part as a key, we'll only
* get a single instance of each one.
*/
$modelParts = explode(' ', $row['model']);
// e.g. $models['product'] = 'product'
$models[$modelParts[0]] = $modelParts[0];
}
Фактически, вы, вероятно, могли бы использовать это для создания поля выбора, которое содержит как полные, так и частичные названия моделей:
$sql = mysql_query('SELECT model FROM product ORDER BY model');
$models = array();
while ($row = mysql_fetch_array($sql)){
$modelParts = explode(' ', $row['model']);
$models[$modelParts[0]][] = $row['model'];
}
// Equivalent to ending up with something like:
// $models['product'] = array('product 1', 'product 2');
Затем вы можете просмотреть их и вывести список, подобный этому:
<select name="term">
<?php foreach ($models as $modelRoot => $modelEntries) { ?>
<option value="<?php echo $modelRoot?>"><?php echo $modelRoot?></option>
<?php foreach ($modelEntries as $model) { ?>
<option value="<?php echo $model['model']?>"><?php echo $model['model']?></option>
<?php } ?>
<?php } ?>
</select>