Поэтому у меня есть форма, которую пользователи заполняют некоторыми переключателями. Значения из переключателей передаются в MySQL. Теперь я хочу извлечь эти значения из базы данных, отобразить их в таблице на другой странице и применить к ним разные стили с тегами span.
Вот код из формы:
<input class="radio_style" type="radio" name="job_type" value="fulltime"/>Full-time<br/> <input class="radio_style" type="radio" name="job_type" value="parttime"/>Part-time<br />
Вот код страницы, где я хочу ее отобразить:
<div class='job_type_div'> <?php if($job_type=='fulltime') {?> <span class='job_type_style'> <?php echo $row['job_type']; ?> </span> <?php if($job_type=='parttime') {?> <span class='job_type_style2'> <?php echo $row['job_type']; ?> </span> <?php } ?> <?php } ?> </div>
Поэтому в идеале значение «fulltime» будет иметь один стиль, а значение «parttime» будет иметь другой стиль. Но когда я пытаюсь запустить этот код, ничего не происходит. Я определенно правильно подключаюсь к базе данных. И имя строки правильно помечено как «job_type». Любые идеи о том, где я могу ошибиться? Любая помощь будет принята с благодарностью 🙂
может быть проблемой в вашем php. Есть ли какая-то логика?
$job_type=null; if($job_type=='fulltime'){ ... if($job_type=='parttime'){ ... } }
вы установили переменную $ job_type? Может быть, вам нужно что-то вроде этого:
<div class='job_type_div'> <?php if($row['job_type']=='fulltime') {?> <span class='job_type_style'> <?php echo $row['job_type']; ?> </span> <?php } elseif($row['job_type']=='parttime') {?> <span class='job_type_style2'> <?php echo $row['job_type']; ?> </span> <?php } ?> </div>
Прежде всего, ваша форма должна быть примерно такой:
<form action="page_you_want_to_display.php" method="POST"> <label for="type">Job Type:</label> <label for="fulltime"> <input class="radio_style" id="fulltime" name="job_type" type="radio" value="fulltime"> Fulltime </label> <label for="parttime"> <input class="radio_style" id="parttime" name="job_type" type="radio" value="parttime"> Part Time </label> <input name="submitted" type="submit" value="Submit"> </form>
Страница, которую вы хотите отобразить, должна выглядеть примерно так:
if(isset($_POST["submitted"])){ $job_type = $_POST['job_type']; echo '<div class="job_type_div">'; if($job_type=='fulltime'){ $res = mysql_query("SELECT * FROM jobs WHERE job_type='fulltime'"); while ($row = mysql_fetch_assoc($res)) { echo '<div class="fulltime">'; echo $row['job_title'].' - '.$row['job_type']; echo '</div>'; echo '<br>'; } } elseif ($job_type=='parttime'){ $res = mysql_query("SELECT * FROM jobs WHERE job_type='parttime'"); while ($row = mysql_fetch_assoc($res)) { echo '<div class="parttime">'; echo $row['job_title'].' - '.$row['job_type']; echo '</div>'; echo '<br>'; } } echo '</div>'; }
и CSS:
.fulltime { margin:0px; padding:5px; width:300px; background:#9C0; color:#fff; } .parttime { margin:0px; padding:5px; width:300px; background:#069; color:#fff; }
Проверено:
Надеюсь это поможет
Я не верю, что условия будут работать так, как вы его реализовали, попробуйте сделать это следующим образом:
<?php echo "<div class='job_type_div'>"; if($job_type=='fulltime') { echo "<span class='job_type_style'>"
//и т.д…
Пока вы извлекаете массив из базы данных, вам нужно использовать MYSQL_BOTH для извлечения столбцов по имени.
mysql_fetch_array($res, MYSQL_BOTH)
Поэтому у вас должно быть что-то вроде этого:
$job_type_query = "SELECT * FROM `job`; "; $res = mysql_query($job_type_query) or die(mysql_error()); while ($row = mysql_fetch_array($res, MYSQL_BOTH)) { echo $row['job_type']; }
form.php
если вы первоначально установили один «выбранный» в своей форме, не нужно проверять, установлен ли его набор, простой набор db:
... mysql_query("UPDATE X SET (job_type='{$_GET['job_type']}') WHERE Y"); ...
display.php
Поскольку вы, вероятно, будете создавать таблицу стилей, обратитесь к селекторам с метками job_type, которые вы поместили в свою базу данных
while($row = mysql_fetch_assoc($resultsource)) echo "<div class='job_type_div'> <span class='{$row['job_type']}_style'>{$row['job_type']}</span>";