|
|
|
| У меня возникла проблема. Не получается вывести список фамилий из базы в селектор делал вот так
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Документ без названия</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
$db = mysql_connect ("localhost", "admin", "12345");
mysql_select_db ( "testfs", $db);
$result = mysql_query ("SELECT lastname FROM students ",$db );
$myrow = mysql_fetch_array ($result);
$a = $myrow ["lastname"];
echo $a;
?>
<table class=" table1" align="center" width="400" border="1" cellspacing="0" cellpadding="0">
<tr>
<td>
<form class="form1" id="form1" name="form1" method="post" action="test.php">
<select name="1111" size="1">
<?php
do {
printf (
"<option name='lastname' value='<?php $a ?>' ><?php echo '$a'; ?></option>"
,$myrow ["lastname"]);
}
while ($myrow = mysql_fetch_array ($result));?>
</select>
<input name="logogo" type="submit" value="Продолжить" ></input >
</form>
</td>
</tr>
</table>
</body>
</html>
|
В итоге селектор пуст. Хотя выборка из базы раьотает проверено
Помогите пожалуйста | |
|
|
|
|
|
|
|
для: itch
(01.02.2010 в 16:28)
| | используйте while вместо do while, и fetch_assoc вместо fetch_array. И у вас все должно получиться | |
|
|
|
|
|
|
|
для: Рома
(01.02.2010 в 16:41)
| | >используйте while вместо do while, и fetch_assoc вместо fetch_array. И у вас все должно получиться
Я что-то сомневаюсь что проблема именно в этом, хотя совет полезный(на будущее)
к тому же do while здесь оправдан так как автор 2 раза выводит 1 вытащенную строку
Обратите внимание на этот кусочек кода:
<?php
do {
printf (
"<option name='lastname' value='<?php $a ?>' ><?php echo '$a'; ?></option>"
,$myrow ["lastname"]);
|
Я точно не уверен, но помоему что=то тут не так, (хотя бы <?php ......<?php .....?> ..... - вроде что-то не то да и echo внутри printf я не разу не видел
Вообще правильнее думаю будет так:
<?php
do {
printf (
"<option name='lastname' value='%s' >%s</option>" ,$a,$a);
..............
|
| |
|
|
|
|
|
|
|
для: tvv123456
(01.02.2010 в 19:08)
| | спасибо %s исправил я на этот момент ,но вот это не работает value='%s' да и вообще пробую валуе задавать цифрами и всё равно не передаёт | |
|
|
|
|
|
|
|
для: itch
(01.02.2010 в 21:54)
| | Вы покажите как и что вы исправили, и заодно посмотрите что написал вам t3ma , обработка не прошедшего запроса к базам и прочее, очень полезная вещь. Правда там я бы лучше стыковку использовал. Мне не нравиться когда тупо переменные в кавычки echo беруться | |
|
|
|
|
|
|
|
для: tvv123456
(01.02.2010 в 19:08)
| | >к тому же do while здесь оправдан так как автор 2 раза выводит 1 вытащенную строку
Автор её по ошибке дважды выводит. По ошибке, спровоцированной применением do_while | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2010 в 01:24)
| | По чему по ошибке? примерчик:
<tr><td>лучший ученик там тыры пыры</td></tr>
что то тут еще идет куча всякой ерунды
проголосуйте за ученика
<select ....>
<option...>
и так далее тут
но вот ту был бы полезен do
делаем первый вывод такой же как и при первом выводе(слава do))(можем же мы голосовать за чувака который пока всех опережает)
а дальше цикл
|
Думаю автор тут не привел всех критериев зарпоса | |
|
|
|
|
|
|
|
для: tvv123456
(02.02.2010 в 02:10)
| | да, верно.
Дважды применен mysql_fetch_*
все равно на конюшню в ближайшую субботу. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2010 в 02:14)
| | НУ я бы не сказал что дважды. Все-таки цыкл :)) А насчет того что автор 2 массива тащит(цифровой и ассоциативный) это его проблемы к то му же про это уже написали | |
|
|
|
|
|
|
|
для: tvv123456
(02.02.2010 в 02:17)
| | Дважды.
один раз в строке $myrow = mysql_fetch_array ($result);
второй - в строке while ($myrow = mysql_fetch_array ($result));?>
А значит можно в одной из строк сделать трудноуловимую ошибку. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2010 в 02:25)
| | Но этого же требует структура сайта
если бы не do, то все равно цикл бы сделал бы этот круг но(если убрнать ду) на один шаг больше? Разве не так? | |
|
|
|
|
|
|
|
для: tvv123456
(02.02.2010 в 02:27)
| | послушайте.
проход по резалтсету должен выполняться либо так:
$sql = "SELECT ...";
$res = mysql_query($sql);
while($row = mysql_fetch_assoc($row))
{
// $row
}
|
либо так:
$sql = "SELECT ...";
$res = mysql_query($sql);
for(;$row = mysql_fetch_assoc($row);)
{
// $row
}
|
и никак иначе.
Контролем ошибок и наличия записей можно разбавить. но и только. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2010 в 02:34)
| | Но как сделать структуру показанную выше
нужно одну и туже строку из базы вывести 2 раза в разных местах? | |
|
|
|
|
|
|
|
для: tvv123456
(02.02.2010 в 02:36)
| | Очень надуманный пример.
По-моему, для этого более корректно выполнить либо отдельный захват строки вне цикла и последующий mysql_data_seek()
$sql = "SELECT ...";
$res = mysql_query($sql);
$row = mysql_fetch_assoc($res)
//$row
mysql_data_seek($res, 0);
while($row = mysql_fetch_assoc($res))
{
// $row
}
|
либо сделавть условную вставку в составной оператор.
$sql = "SELECT ...";
$res = mysql_query($sql);
while($row = mysql_fetch_assoc($res))
{
if($i == 0)
{
// $row
$i = 1;
}
// $row
}
|
Хотя.. может и вправду do_while оправдан здесь.
Просто он настолько задолбал, там где его не надо нахрен, что стойку на него делаешь уже на полном автомате. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2010 в 02:42)
| | >Просто он настолько задолбал, там где его не надо нахрен, что стойку на него делаешь уже
>на полном автомате.
:)))))))))
есть чуток
Хотя же по идее do сам по себе относително безобиден(если не применять там супер стили) так что. Все равно нужно делать проверки на не пустоту первой строки.
А на счет mysql_data_seek() полезно, но в данном случае do помогает обойтись и без нее. | |
|
|
|
|
|
|
|
для: itch
(01.02.2010 в 16:28)
| |
<?php
$db = mysql_connect ("localhost", "admin", "12345");
if (!$db) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}
if (!mysql_select_db("testfs")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}
$sql = mysql_query("SELECT * FROM students");
or die("Could not query:" . mysql_error());
while ($row = mysql_fetch_assoc($sql)) {
echo "<option name='lastname' value='$row[lastname]'>$row[lastname]</option>";
}
?>
|
| |
|
|
|
|
|
|
|
для: t3ma
(01.02.2010 в 19:45)
| | Все сделано здорово, но думаю пусть человек сначала разбереться с PRINTF() :)))))))))))))))))))
_____________________
Нужно указывать человеку на его ошибки дабы он не совершал их в будущем. | |
|
|
|
|
|
|
|
для: tvv123456
(01.02.2010 в 21:13)
| | Так указывайте. В ответе t3ma такая есть. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2010 в 01:21)
| | Я не вижу ошибки :) Единственное что я использую)(когда echo использую) стыковку через точку и соответственно кавычки проставляю в массивах типа $row['name'], но это вроде как не ошибка. Просто разные системы подхода.
Можно подсказку плиз | |
|
|
|
|
|
|
|
для: tvv123456
(02.02.2010 в 01:57)
| | подсказка. Сказав Connect и сказав select_db нужно обязательно сказать еще одну фразу.
Её можно опустить, как подразумевающуюся. Но тогда лучше опустить и первые две. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2010 в 02:11)
| | У меня на ум лезет только определение кодировки, но я этим никогда не пользовался(всегда все работало отлично)
Думаю все сдадуться. Можно ответ услышать :))))))))))))
а с точкой с запятой нет проблем(см.ниже)? | |
|
|
|
|
|
|
|
для: tvv123456
(02.02.2010 в 02:15)
| | >У меня на ум лезет только определение кодировки, но я этим никогда не пользовался(всегда все работало отлично)
Оно и есть.
Работает оно отлично только если SET NAMES в INIT_CONNECT прописан.
А если нет - огребете проблем с миграцией при первом же импорте / экспорте. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2010 в 02:27)
| | >Работает оно отлично только если SET NAMES в INIT_CONNECT прописан.
Извините, но когда делаешь инсталятор для сайта то при создании базы это в первую очередь идет или не так? | |
|
|
|
|
|
|
|
для: tvv123456
(02.02.2010 в 02:29)
| | при чем тут создание?
SET NAMES должен выполняться после каждого коннекта!
Сколько тут уже таких страдальцев перебывало.
Ой, у меня все работало, стал переходить на другой хостинг / пытаться забрать копию домой / менять тарифный план - и откуда ни возьмись кракозяблики/вопросики!
Ой, а куда же данные делись?
Ой, спасите помогите!
| |
|
|
|
|
|
|
|
для: Trianon
(02.02.2010 в 02:31)
| | Согласен, но это проблемы не создателя сайта, вы уж извините, но у меня один раз на виндовском сервере вообще не было не utf-8 ни cp=1251 и я им долго обьяснял что не могу переделать сайт под ISO. И что в итоге? они извинились и я обошолся только 1251
Извините за обилие граммотических ошибок :)))) | |
|
|
|
|
|
|
|
для: tvv123456
(02.02.2010 в 02:34)
| | что за iso?
и при чем тут кодировка сайта?
Речь о том, чтобы в БД лежали данные в той кодировке, которой помечены. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2010 в 02:36)
| | Ну дак да, имено про то что в базе при инсталяции сайта нужно строго задавать эту кодировку.
Вопрос не по теме: подскажите плиз прогу где я могу увидеть первый бит(который зараза) не виден в других текстовых прогах(а то задрали меня уже все с этим первым битом когда конфиг настраивают)
я про ошибку: мы не можем послать хедеры так как они ушли в первом бите конфиг файла | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2010 в 01:21)
| | вы про точку с запятой в конце первой строки ниже приведенного кода?
$sql = mysql_query("SELECT * FROM students");
or die("Could not query:" . mysql_error());
|
| |
|
|
|