IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   MySQL и PHP (https://www.imho.ws/showthread.php?t=130302)

Динэра 08.03.2008 12:01

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. Я думаю, что я не открыла доступ к базе или сделала это неправильно. Когда открываю доступ, у базы появляется псевдоним. В запросе надо обращаться к базе по имени или по псевдониму? Или сама база не в том каталоге?

Что я делаю не так? Жду вашей помощи.

RaZEr 08.03.2008 12:32

http://www.php.net/manual/en/function.mysql-error.php

Динэра 08.03.2008 13:34

С этим разобралась, подключение к базе есть, ошибку больше не выдает - просто вместо имени таблицы написала имя базы...

Но теперь не выводит содержимое таблицы и не записывает в нее новые данные((

Вот я пишу:

<?$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>

Если в таблице одна запись - ничего не выводится. Если несколько - то выводятся все, кроме последней. Как сделать, чтобы выводились все записи? И как добавлять новые?

Viroman 08.03.2008 14:01

Это потому что майскл так работает, он работает построчно, счётчик считает, сколько запрошено было и сколько было подано, а вы уже до while одну строку запрашиваете
<?$row = mysql_fetch_assoc($result);
это надо убрать, а то один запрос вы делаете заранее..

Динэра 08.03.2008 14:07

Убрала, заработало, спасибо.
С добавлением новых тоже разобралась. Но при обновлении страницы последние данные записываются еще раз. Как сделать чтобы они не кэшировались?

Viroman 08.03.2008 14:15

Толком никак, надо чтобы данные одинаковые - были уникальны, тогда не страшно. Посмотрите, какие столбцы вы можете сделать ключевыми, какие не имеют права повторяться.
PS: ещё можно перезагрузку страницы без параметров вынуждать, но это не выход.

Динэра 08.03.2008 14:21

Повторяться не может только id...
Ну что ж, пока вопросов больше нет. Дико извиняюсь за такие нубские вопросы)

Динэра 13.04.2008 19:27

Делаю поиск по базе.
Результаты должны сортироваться в алфавитном порядке, но этого не происходит. Сортируются как-то по-другому=\
Вычитала, что скорее всего не совпадает кодировка.
На самой странице используется windows-1251.
В общем, как сделать, чтобы сортировалось как надо?...

kasha 27.04.2008 20:24

подскажите пожалуйста, и если есть материал где на русском конкретно по моему вопросу, был бы рад.
Купил книгу по работе пхп-майскл-апач. Создал я своего пользователя в пхпмаиадмин с паролем, создал базу, пару таблиц в ней. Написал хтмл+пхп+цсс страничку. В страничке конечно прописан юзер пароль и с какой базой соединиться.
<?php
$db = mysql_connect ("localhost","Misha","14789");
$result = mysql_select_db(mybase,$db);
?>

но всегда мучал вопрос!-в пхпмайадмин помимо моего созданного юзера со всеми привелегиями были ещё 4-6 учетных записей (root,....). Вообщем т.к. информации я не нашел для чего эти остальные учетные записи, то я их решил удалить:ржать:. После этого все пошло коту под хвост, руут юзера база не находит, ни одной базы не открывает, думаю опытные юзеры меня понимают.
Тогда я попробовал переустановить 3в1, думал появится все обратно. увы:p.
Просто не понимаю, для чего делается этот логин в пхпмаиадмин "Misha","14789", если в итоге все смогут смотреть страничку. получается я мог бы так же прописать вместо Misha написать root без пароля?

может конечно смешно будет, но я просто не понимаю этого момента:idontnow:

RaZEr 27.04.2008 20:44

Вообще-то когда база устанавливается через exe/msi обычно предлагается ввести пароль для root. Если же база просто распакована из архива, то пароль для root пустой. Его нужно либо установить, либо, если база используется локально и только одним пользователем, - оставить пустым.

kasha 28.04.2008 01:33

хорошо, понял что надо было на руут просто поставить пароль.
А как теперь мне выйти из сложившийся ситуации? а то он меня теперь к пхпмайадмин совсем не пускает.

EvroStandart 28.04.2008 13:57

Цитата:

Сообщение от kasha (Сообщение 1548720)
А как теперь мне выйти из сложившийся ситуации?

Затереть всё и установить снова.

kasha 28.04.2008 22:16

Всё затер, но по всей видимости не все. Т.к. после новой установки пакета Денвер, пхпмайадмин все-равно не встал на место, и на экране выводилась та же ошибка "не могу соединиться с базой данных, не сущ. пользователя 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 изначально? и как будет происходить вообще последующее соединение с данными из базы, когда страница будет помещена в интернет? через юзера которого я прописываю изначально в хтмл странице в соединении?

EvroStandart 30.04.2008 12:32

Цитата:

Сообщение от kasha (Сообщение 1548985)
т.к. этот пользователь у меня был создан,

Значит базу ты не затёр.


Цитата:

Сообщение от kasha (Сообщение 1548985)
зачем нужен юзерroot изначально

Это первый пользователь. Для этого и нужен.


Цитата:

Сообщение от kasha (Сообщение 1548985)
когда страница будет помещена в интернет

Там тебе на серваке отдельного пользователя сделают.

kasha 01.05.2008 11:06

Цитата:

Сообщение от EvroStandart (Сообщение 1549417)
Цитата:
Сообщение от kasha Посмотреть сообщение
когда страница будет помещена в интернет
Там тебе на серваке отдельного пользователя сделают.

Я не совсем это имел ввиду. То что там дадут др. отдельного юзера - это понятно. А я имею ввиду что я вот в коде страницы прописываю там
<?php
$db = mysql_connect ("localhost","Misha","14789");
$result = mysql_select_db(mybase,$db);
?>


т.е. получается что любой кто захочет, сможет открыть код страницы и посмотреть пароль и имя юзера соединяющегося к базе MySQL. Но опять-таки с другой стороны. Если я не прописываю этого юзера, то страница не соединится с базой данных и не сможет взять из неё информацию. Вообщем вот этот момент:idontnow:
сейчас посмотрел код страницы и увидел что PHP код не показывает и вовсе,только HTML
Следовательно все что я писал выше - лишнее ;)?
Спасибо EvroStandart

lyolik1 12.05.2008 00:50

ну естественно PHP код выполняется на сервере и в output не попадает...

Динэра 04.06.2008 20:49

Возникла следующая проблема.

На странице присутствует форма для заполнения базы данных. 1 кнопка типа submit для сохранения внесенных данных и 1 кнопка типа reset для очищения полей.

Необходимо добавить хотя бы кнопку для удаления записи (не говорю уже о редактировании - не до того).

Кнопка должна брать ID из текстового поля и удалять запись с таким ID.

Что-то подобное получалось, но при удалении записи в базу заносится новая, пустая запись=\

Псих 04.06.2008 21:50

Динэра, нужно делать проверку на количество символов в полях. Если поля не заполнены (кол-во символов ==0) то не выполнять insert

Hubbitus 04.06.2008 22:15

Цитата:

Сообщение от Динэра (Сообщение 1561365)
Что-то подобное получалось, но при удалении записи в базу заносится новая, пустая запись=\

Это как?? Вы делаете DELETE ... FROM tableName WHERE... а у Вас появляется новая запись в таблице??? Не бывает такого.

Показывайте конкретные примеры, кода, запросов...

Динэра 04.06.2008 22:19

Цитата:

Сообщение от Hubbitus (Сообщение 1561393)
Это как?? Вы делаете DELETE ... FROM tableName WHERE... а у Вас появляется новая запись в таблице??? Не бывает такого

Ды не, я, получается, делаю 2 кнопки submit. Поля-то не заполнены, а при нажатии все равно записываются...

Да вообще, фиг с ними.

Мне бы кнопку для удаления сделать, а с остальным разберусь.

EvroStandart 05.06.2008 10:08

А почему удаление именно с тойже формы? И почему id вручную прописывать нужно?

Динэра 05.06.2008 10:31

Цитата:

Сообщение от EvroStandart (Сообщение 1561498)
А почему удаление именно с тойже формы? И почему id вручную прописывать нужно?

Вручную потому что так проще)
Удаление с той же формы потому что это страница для редактирования БД. Я могу сделать и на другой, если узнаю, как вообще эту чертову кнопку сделать.

EvroStandart 06.06.2008 10:10

<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 и пишешь две обработки форм.

Динэра 06.06.2008 11:10

Хехе) Форму-то я нарисую, а обработку как сделать?
Максимум до чего додумалась:

<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);
?>

Бред, конечно, но что-то подобное мне надо осуществить.

EvroStandart 06.06.2008 16:19

Цитата:

Сообщение от EvroStandart (Сообщение 1561838)
В обработке проверяешь какой параметр передался SUBMIT_insert или SUBMIT_delete и пишешь две обработки форм.

Цитата:

Сообщение от Динэра (Сообщение 1561850)
а обработку как сделать?

Так в чём вопрос? Если не знаешь как проверить передаваемые параметры и в зависимости от проверки делать разные действия - книжки для чайников тебе помогут.


ЗЫ.
В твоём примере нужно проверять через array_key_exists. php.net тебе поможет.

Динэра 06.06.2008 16:57

Если б все давали такие советы, то форумы были бы только для чтения, а на них размещались ссылки на "книги для чайников".
Очень похоже на моего препода - одни понты.
Я просила конкретный код.
Уже не надо.

Hubbitus 07.06.2008 02:05

Цитата:

Сообщение от Динэра (Сообщение 1561850)
mysql_query("delete * from pogibshie where id=". $drop);

Ну да, именно как-то так, как Вы привели пример и делаете.

Динэра 22.08.2008 18:02

Снова косяки
 
Нужно сделать алфавитный указатель фамилий в виде кнопок.
На кнопках должны быть написаны только первые буквы фамилий и только тех, что есть в таблице.

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

Что значит эта ошибка я знаю, в ссылках на справочники не нуждаюсь. Хочу знать, почему она возникла.

Динэра 23.08.2008 18:37

Все. Получилось. Скомбинировала 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.