![]() |
MySQL и PHP
Здравствуйте. Мне нужна помощь по функциям php для работы с базой mysql.
Проблема в том, что я, как я полагаю, не могу установить соединение с базой. Когда делаю запрос на количество строк, получаю такую ошибку: Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in c:\Inetpub\wwwroot\dannie.php on line 32 Сама база находится в каталоге C:\mysql\data. Операционная система Windows XP. Я думаю, что я не открыла доступ к базе или сделала это неправильно. Когда открываю доступ, у базы появляется псевдоним. В запросе надо обращаться к базе по имени или по псевдониму? Или сама база не в том каталоге? Что я делаю не так? Жду вашей помощи. |
|
С этим разобралась, подключение к базе есть, ошибку больше не выдает - просто вместо имени таблицы написала имя базы...
Но теперь не выводит содержимое таблицы и не записывает в нее новые данные(( Вот я пишу: <?$result=mysql_query("select * from pogibshie order by id desc");?> <table border=1 align="center"> <?$row = mysql_fetch_assoc($result); while ($row=mysql_fetch_assoc($result)) {?> <tr> <td><?=$row['fam']?></td> <td><?=$row['im']?></td> <td><?=$row['ot']?></td> </tr> <?}?> </table> Если в таблице одна запись - ничего не выводится. Если несколько - то выводятся все, кроме последней. Как сделать, чтобы выводились все записи? И как добавлять новые? |
Это потому что майскл так работает, он работает построчно, счётчик считает, сколько запрошено было и сколько было подано, а вы уже до while одну строку запрашиваете
<?$row = mysql_fetch_assoc($result); это надо убрать, а то один запрос вы делаете заранее.. |
Убрала, заработало, спасибо.
С добавлением новых тоже разобралась. Но при обновлении страницы последние данные записываются еще раз. Как сделать чтобы они не кэшировались? |
Толком никак, надо чтобы данные одинаковые - были уникальны, тогда не страшно. Посмотрите, какие столбцы вы можете сделать ключевыми, какие не имеют права повторяться.
PS: ещё можно перезагрузку страницы без параметров вынуждать, но это не выход. |
Повторяться не может только id...
Ну что ж, пока вопросов больше нет. Дико извиняюсь за такие нубские вопросы) |
Делаю поиск по базе.
Результаты должны сортироваться в алфавитном порядке, но этого не происходит. Сортируются как-то по-другому=\ Вычитала, что скорее всего не совпадает кодировка. На самой странице используется windows-1251. В общем, как сделать, чтобы сортировалось как надо?... |
подскажите пожалуйста, и если есть материал где на русском конкретно по моему вопросу, был бы рад.
Купил книгу по работе пхп-майскл-апач. Создал я своего пользователя в пхпмаиадмин с паролем, создал базу, пару таблиц в ней. Написал хтмл+пхп+цсс страничку. В страничке конечно прописан юзер пароль и с какой базой соединиться. <?php $db = mysql_connect ("localhost","Misha","14789"); $result = mysql_select_db(mybase,$db); ?> но всегда мучал вопрос!-в пхпмайадмин помимо моего созданного юзера со всеми привелегиями были ещё 4-6 учетных записей (root,....). Вообщем т.к. информации я не нашел для чего эти остальные учетные записи, то я их решил удалить:ржать:. После этого все пошло коту под хвост, руут юзера база не находит, ни одной базы не открывает, думаю опытные юзеры меня понимают. Тогда я попробовал переустановить 3в1, думал появится все обратно. увы:p. Просто не понимаю, для чего делается этот логин в пхпмаиадмин "Misha","14789", если в итоге все смогут смотреть страничку. получается я мог бы так же прописать вместо Misha написать root без пароля? может конечно смешно будет, но я просто не понимаю этого момента:idontnow: |
Вообще-то когда база устанавливается через exe/msi обычно предлагается ввести пароль для root. Если же база просто распакована из архива, то пароль для root пустой. Его нужно либо установить, либо, если база используется локально и только одним пользователем, - оставить пустым.
|
хорошо, понял что надо было на руут просто поставить пароль.
А как теперь мне выйти из сложившийся ситуации? а то он меня теперь к пхпмайадмин совсем не пускает. |
Цитата:
|
Всё затер, но по всей видимости не все. Т.к. после новой установки пакета Денвер, пхпмайадмин все-равно не встал на место, и на экране выводилась та же ошибка "не могу соединиться с базой данных, не сущ. пользователя root@..... pass: .... . Тогда попробовал скачать файлы панели пхпмаиадмин с сайта, подменил старые, но ничего не вышло. Выводил ту же ошибку. Затем нашел конфиг. файл в webservers/home/localhost/www/phpmyadmin/config.inc открыл его и заменил две строчки в нём
$cfg['Servers'][$i]['auth_type'] = 'config'; $cfg['Servers'][$i]['user'] = 'Misha'; $cfg['Servers'][$i]['password'] = '12345'; т.к. этот пользователь у меня был создан, пхпмайадмин сработала и приняла юзера и пароль. ну вроде как решил свою проблему. Всем спасибо. Но никто не подскажет зачем нужен юзерroot изначально? и как будет происходить вообще последующее соединение с данными из базы, когда страница будет помещена в интернет? через юзера которого я прописываю изначально в хтмл странице в соединении? |
Цитата:
Цитата:
Цитата:
|
Цитата:
<?php $db = mysql_connect ("localhost","Misha","14789"); $result = mysql_select_db(mybase,$db); ?> т.е. получается что любой кто захочет, сможет открыть код страницы и посмотреть пароль и имя юзера соединяющегося к базе MySQL. Но опять-таки с другой стороны. Если я не прописываю этого юзера, то страница не соединится с базой данных и не сможет взять из неё информацию. Вообщем вот этот момент:idontnow: сейчас посмотрел код страницы и увидел что PHP код не показывает и вовсе,только HTML Следовательно все что я писал выше - лишнее ;)? Спасибо EvroStandart |
ну естественно PHP код выполняется на сервере и в output не попадает...
|
Возникла следующая проблема.
На странице присутствует форма для заполнения базы данных. 1 кнопка типа submit для сохранения внесенных данных и 1 кнопка типа reset для очищения полей. Необходимо добавить хотя бы кнопку для удаления записи (не говорю уже о редактировании - не до того). Кнопка должна брать ID из текстового поля и удалять запись с таким ID. Что-то подобное получалось, но при удалении записи в базу заносится новая, пустая запись=\ |
Динэра, нужно делать проверку на количество символов в полях. Если поля не заполнены (кол-во символов ==0) то не выполнять insert
|
Цитата:
Показывайте конкретные примеры, кода, запросов... |
Цитата:
Да вообще, фиг с ними. Мне бы кнопку для удаления сделать, а с остальным разберусь. |
А почему удаление именно с тойже формы? И почему id вручную прописывать нужно?
|
Цитата:
Удаление с той же формы потому что это страница для редактирования БД. Я могу сделать и на другой, если узнаю, как вообще эту чертову кнопку сделать. |
<form name="insert_data">
... <input name="SUBMIT_insert" value="Insert" type="submit"> </form > <form name="delete_data"> ... <input name="SUBMIT_delete" value="Delete" type="submit"> </form > В обработке проверяешь какой параметр передался SUBMIT_insert или SUBMIT_delete и пишешь две обработки форм. |
Хехе) Форму-то я нарисую, а обработку как сделать?
Максимум до чего додумалась: <form name="delete_data" class="vvod"> Удалить запись № <input type="Text" size="4" name="drop"> <input name="submit_delete" value="Удалить" type="submit"> </form> <?if ($_POST['submit_delete']) mysql_query("delete * from pogibshie where id=". $drop); ?> Бред, конечно, но что-то подобное мне надо осуществить. |
Цитата:
Цитата:
ЗЫ. В твоём примере нужно проверять через array_key_exists. php.net тебе поможет. |
Если б все давали такие советы, то форумы были бы только для чтения, а на них размещались ссылки на "книги для чайников".
Очень похоже на моего препода - одни понты. Я просила конкретный код. Уже не надо. |
Цитата:
|
Снова косяки
Нужно сделать алфавитный указатель фамилий в виде кнопок.
На кнопках должны быть написаны только первые буквы фамилий и только тех, что есть в таблице. 20 <form method="post" name="sub_fam" action="spisok.php"> 21 <?$result=mysql_query("SELECT DISTINCT LEFT(fam, 1) FROM anketa");?> 22 <?while ($row=mysql_fetch_assoc($result)) 23 {?> 24 <?$m=substr($row['fam'], 0, 1)?> 25 <?echo '<input type="submit" value="'.$m.'" name="sub">'?> 26 <?}?> 27 </form> Появляется ошибка Notice: Undefined index: fam in d:\Inetpub\wwwroot\1.php on line 24 Что значит эта ошибка я знаю, в ссылках на справочники не нуждаюсь. Хочу знать, почему она возникла. |
Все. Получилось. Скомбинировала 2 неработающих варианта.
<?for ($i = 192; $i<224; $i++) { $result=mysql_query("SELECT * FROM anketa WHERE left(fam, 1) regexp CHAR(".$i.")"); $row=mysql_fetch_assoc($result); if ($row>0) { echo '<input type="submit" value="'.substr($row['fam'], 0, 1).'" name="sub">'; } }?> |
| Часовой пояс GMT +4, время: 22:00. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.