Ru-Board.club
← Вернуться в раздел «Web-программирование»

» MySql/PHP: общие вопросы

Автор: Ljeka2008
Дата сообщения: 18.08.2008 15:26
Подскажите, пожалуйста, как добавлять новую запись в начало таблицы mysql?
Автор: Cheery
Дата сообщения: 18.08.2008 16:46
Ljeka2008

Цитата:
Подскажите, пожалуйста, как добавлять новую запись в начало таблицы mysql?

у таблицы нет начала или конца.. нет привязки к порядку ввода данных, только если с сортировкой по какому то полю
Автор: Ljeka2008
Дата сообщения: 19.08.2008 18:28
Спасибо, пришлось сортировать...
Автор: kurandero
Дата сообщения: 21.08.2008 10:54
Мужики!!!
Хелп!!!! Помогите новичку разобраться.

Есть запрос:


     $sql="SELECT Name FROM Catalog";
$result=@mysql_query($sql) or die ("DATABASE ERROR");
$num_rows=mysql_num_rows($result);
if ($num_rows >=1) {                        
while ($row=mysql_fetch_array($result))
             {
         echo "<a href='".$PHP_SELF."?products=".$row['ID']."'>".$row['Name']."</a><br>";
         }
             }
    

Ниже.... Хотел чтобы кликая на ссылку мне выдавался на экран запрос:

    $sql="SELECT * FROM Catalog";
$result=@mysql_query($sql) or die ("DATABASE ERROR");
$num_rows=mysql_num_rows($result);
if ($num_rows >=1) {                        
while ($row=mysql_fetch_array($result))
             {
         echo "<h3>".$row['Name']."</h3><br><div><img src='".$row['Describtion']."' border=0></div><br>";
         }
             }
         }
        
?>

Не понимаю как реализовать. как ссылку сделать переменной для второго запроса.
Автор: kosola
Дата сообщения: 22.08.2008 16:02
Тут ошибка:

Цитата:

Код: $sql="SELECT Name FROM Catalog";
$result=@mysql_query($sql) or die ("DATABASE ERROR");
$num_rows=mysql_num_rows($result);
if ($num_rows >=1) {
while ($row=mysql_fetch_array($result))
{
echo "<a href='".$PHP_SELF."?products=".$row['ID']."'>".$row['Name']."</a><br>";
}
}
Автор: zerkms
Дата сообщения: 23.08.2008 03:24
kosola
что-нибудь об SQL-инъекциях слышал?
Автор: ak13boda
Дата сообщения: 23.08.2008 08:51
zerkms

Цитата:
что-нибудь об SQL-инъекциях слышал?


Код: $sql="SELECT * FROM Catalog WHERE ID=".(int)$_GET['products'];
Автор: zerkms
Дата сообщения: 23.08.2008 08:57
ak13boda
упс, не заметил модификатор
посыпаю голову пеплом
Автор: leputain
Дата сообщения: 02.10.2008 03:08
вот такой вопрос.
2 сайта на 1 базе. оба на движке textpattern, но не в этом суть.
у каждого сайта таблицы со своим префиксом, так что все работало.
сейчас испортирую из textpattern и wordpress.
wordpress'ы тоже разбиты по таблицам разными префиксами.
на втором сайте все импортируется замечательно.
на первом получается то, что на скриншоте:

если глянуть на таблицы через phpmyadmin, то вторая видна красиво:

а первая таблица корявая

в .htaccess есть
Код: CharsetSourceEnc utf-8
CharsetByExtension utf-8 .php
Автор: FUTURiTY
Дата сообщения: 06.04.2009 01:15
Всем привет!

Помогите советам, как это реализовать:

На сайте есть много формочек для регистрации (каждая на своей странице), конфигурация бд (MYSQL) для формочек прописана на каждой странице. Вопрос: подскажите как вынести конфигурацию бд в один файл и подключить его ко всем рег.формам на сайте? Сделать что то типа сонфиг.пхп

Спасибо!
Автор: Cheery
Дата сообщения: 06.04.2009 01:21
FUTURiTY

Цитата:
Вопрос: подскажите как вынести конфигурацию бд в один файл и подключить его ко всем рег.формам на сайте? Сделать что то типа сонфиг.пхп

так и вынести. записать в отдельном файле переменные с параметрами подключения и делать его include или require в нужных местах
Автор: israel_rider
Дата сообщения: 10.04.2009 00:19
Пипл! Хелп! Я очередной ньюб из тех многих, кто на всех форумах каждый день кричит о проблемах с кодировками. Хочу подойти к этому вопросу нормально. И разобраться наконец то.... Поэтому вопрос.
Кто знает, где, в каком месте, по русски, можно прочитать о том, как работает механизм кодировок и перекодировок при всех движениях файла через MySQL?

В часности. В MySQL несколько параметров "character_set" :

mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+-------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\MySQL Server 5.1\share\charsets\ |
+--------------------------+-------------------------------------+

На что они все влияют, и как они должны быть настроены, что бы при ручном заполнении таблиц из доса или из PHPMyAdmin кирилица отображалась корректно?
Литературы конечно вылазит море, и при поиске через Гугл, и открывая мануал на хомяке MySQL.... Но я во всей этой инфе уже утонул, и голова у меня уже распухла окончательно .
Автор: Cheery
Дата сообщения: 10.04.2009 01:21
israel_rider
http://www.webmasterschool.ru/articles/article18.php
http://rrv.jino-net.ru/wiki/index.php/MySQL_%D0%B8_UTF-8
Имя переменной Описание Зона действия
Автор: israel_rider
Дата сообщения: 10.04.2009 05:21
Чего то тяжело.... То ли лыжи не едут.....
Зато нашёл ещё одну классную инфу - http://www.phpfaq.ru/charset . Вроде там написаны ответы на мои вопросы. Подробно. Пытаюсь разобраться....

Добавлено:
Блин!!!!! Начало доходить вроде!!!!!! Cheery!!!!!!!!!!!! Плиз!!!!!!!!!!! Вопрос!!!!!!!!!!!!
Если я ввожу таблицу с клавы и в дос, в какой она идёт кодировке? У меня всё везде стоит в юникоде, и я всё так и хочу что бы стояло. Но если я ввожу с клавы, в досе же нет юникода? Значит, оно вводится в кои8? Или в 1251? Я должен узнать ответы на эти вопросы, а потом для моей досовской сессии, и только для неё изменить настройки.... Я так думаю. Потому что, повторяю, у меня всё что можно в юникоде! И там, где можно, я хочу юникод оставить.


Добавлено:
Короче, всё я прочитал, всё проверил, и пришёл к выводу.... Короче, дело тут вовсе не в бабине.... А, скорее всего в том, что что то, то ли Апач, то ли РНР, то ли МуSQL у меня на компе просто криво встали.... И поди теперь пойми, в чём тут ошибка....

Добавлено:
Наглядно показываю свою проблему - [more]Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\user>cd C:\MySQL Server 5.1\bin

C:\MySQL Server 5.1\bin> mysql -u alex -p
Enter password: *****
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.32-community MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> USE firstbd;
Database changed
mysql> show create table try2;
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
----+
| Table | Create Table


|
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
----+
| try2 | CREATE TABLE `try2` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`f_name` varchar(40) NOT NULL,
`l_name` varchar(40) NOT NULL,
`title` varchar(40) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 |
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
----+
1 row in set (0.00 sec)

mysql> SHOW VARIABLES LIKE '%char%';
+--------------------------+-------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\MySQL Server 5.1\share\charsets\ |
+--------------------------+-------------------------------------+
8 rows in set (0.08 sec)

mysql> SELECT f_name, l_name, title from try2;
+------------+----------------+------------+
| f_name | l_name | title |
+------------+----------------+------------+
| &#9576;Ь&#9572;Г&#9576;&#9508;&#9576;&#9617;&#9576;&#9553; | &#9576;Ь&#9572;Г&#9576;&#9508;&#9576;&#9617;&#9576;&#9553;&#9576;&#9563;&#9576;&#9619; | &#9576;Ш&#9576;&#9508;&#9576;&#9557;&#9576;&#9563;&#9572;В |
+------------+----------------+------------+
1 row in set (0.00 sec)

mysql> SELECT f_name, l_name, title from try
[/more] .
Автор: israel_rider
Дата сообщения: 10.04.2009 23:34
И вот, ещё один вопрос. У меня на компе localhost – Apache + PHP + MySQL.
Вопрос. Где в аппаче настраиваются кодировки, в которых он выдаёт странички?
У меня странички открытые с него, открываются только в юникоде, хотя ни какая мета у них в голове не прописана. Значит, сам аппач посылает их так, что в хедере HTTP кодировка указана. Но ни каких таких настроек, типа "дефолт чарсет" в httpd.conf аппача я не нашёл…. Не там искал? Или не то искал?
Автор: israel_rider
Дата сообщения: 25.04.2009 08:45
Короче, такая херня…. Голова уже распухла, но понять, в каком месте я не доучил матчасть я так и не могу….. Тренируюсь дома на локали…. Запускаю пример из учебника, в общем то….

Файл 4.php

<?php
session_start();
$_SESSION["access"] = "yes";
header('Location:3.php');
echo '<a href="3.php">Вход на страницу</a><br/>';
?>

Файл 3.php

<?php
session_start();
echo '$_SESSION["access"] = '.$_SESSION["access"].'<br/>';
$x=session_id();
echo 'session_id = '.$x;
?>

Запускаю файл 4.php . Получаю это –

Notice: Undefined index: access in D:\accounts\yoursite\3.php on line 4
$_SESSION["access"] =
session_id = 6ldbsk95g6mnv2kgqr0ehdh7s1

То есть видно, что сессия запускается, и сессионный ID назначается и передаётся, но не передаётся элемент массива $_SESSION. Тогда я в 4.php комментирую перенаправление на страничку 3.php и переезжаю на 3.php просто кликая по ссылке. Файл 4.php по этому теперь выглядит так :

<?php
session_start();
$_SESSION["access"] = "yes";
//header('Location:3.php');
echo '<a href="3.php">Вход на страницу</a><br/>';
?>

И в таком случае я вижу, что всё работает :

$_SESSION["access"] = yes
session_id = du8cf230i7hr2hcac6vb4o7fs4

То, что я где то недоучил матчасть – это понятно. Но …. Блин…. Ну устал… Достали уже эти сессии…. Не разобраться самому. Почему при перенаправлении Хедером значение массива $_SESSION не передаётся?????
И ВЕДЬ ЭТО ЖЕ ПРИМЕР ИЗ УЧЕБНИКА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



Автор: zerkms
Дата сообщения: 25.04.2009 09:05
israel_rider
создал 2 файла. 4.php, 3.php. взял твой код. запросил /4.php
всё работает как ожидается.

какое имя у хоста? + покажи заголовки в обоих случаях, когда всё работает и когда нет.

Добавлено:

Цитата:
То есть видно, что сессия запускается, и сессионный ID назначается и передаётся, но не передаётся элемент массива $_SESSION.

ничто никуда не передаётся. идентификатор сессии определяет ресурс (по дефолту - файл на диске), который хранит данные. так что передаётся только лишь этот идентификатор и всё.
Автор: israel_rider
Дата сообщения: 25.04.2009 09:26
Так а как же тогда люди поступают? Если чел у меня нажимает на страничке "logon", я проверив его аккаунт, должен его перенаправить туда, куда он хочет, автоматически. Каким способом я могу это правильно сделать?
Автор: zerkms
Дата сообщения: 25.04.2009 09:40
israel_rider
ты принципиально пропустил мой вопрос и указания?
Автор: israel_rider
Дата сообщения: 25.04.2009 13:18
zerkms, прошу прощения. Имя хоста - localhost. Как я уже сказал, всё стоит у меня на компе.
Будь добр, порекомендуй программу - снифер, что бы я мог просмотреть заголовки. Я ещё такими прогами ни разу не пользовался, заголовки не смотрел, не доучился ещё до этого.
По поводу твоего указания я не понял ни чего. Буду учиться дальше, может быть потом пойму.
Автор: zerkms
Дата сообщения: 25.04.2009 14:11
israel_rider
firebug для фф, ieHTTPHeaders для ie. для оперы хз.

по поводу указания: тебе нужно обе ситуации изучить, найти, чем они отличаются.
для начала - нужно посмотреть, что в обоих ситуациях в стартовом скрипте (4.php) и следующем - сохраняется session_id(). (вывести его куда-нибудь)
Автор: israel_rider
Дата сообщения: 25.04.2009 14:27
Поставил ieHTTPHeaders, запустил, посмотрел. Ни могу понять, на какую строчку я должен обратить внимание. Пока вижу то же, что и адресной строке - http://localhost/3.php?PHPSESSID=jfm93020gphrmceid0mmicb212, то есть это передаётся идентификатор сессии. Так и не могу понять, как сервер передаёт браузеру элементы массива $_SESSION . И почему в одном случае элемент $_SESSION["access"] браузеру передался, а в другом нет.
Автор: zerkms
Дата сообщения: 25.04.2009 14:36

Цитата:
Так и не могу понять, как сервер передаёт браузеру элементы массива $_SESSION

сервер НИЧЕГО не передаёт БРАУЗЕРУ. скрипт работает на сервере и отдаёт результаты работы.
сессии устроены так: от запроса к запросу браузер передаёт на сервер идентификатор сессии. на сервере лежит файл с именем == идентификатору сессии. все данные лежат там.
далее - session_id() одинаковый, он не меняется?
почему и зачем он у тебя передаётся через урл? ты так настроил веб-сервер?
если нет - то выставь в пхп.ини
session.use_cookies = 1
Автор: Cheery
Дата сообщения: 25.04.2009 19:33
israel_rider

Цитата:
header('Location:3.php');

пробел после Location:
и exit после него

Автор: israel_rider
Дата сообщения: 25.04.2009 23:32
Cheery написал как ты сказал.
Цитата:
пробел после Location:
и exit после него

Получилось - 4.php

<?php
session_start();
$_SESSION["access"] = "yes";
header('Location: 3.php');
exit();
echo '<a href="3.php">Вход на страницу</a><br/>';
?>

Не помогло

zerkms, всё понял. Думаю, над тем, что ты сказал.... Я то как раз session.use_cookies = выставил в 0. Что бы на куки не расчитывать. Ведь есть пользователи, которые куки у себя в браузере отключают.

Автор: Cheery
Дата сообщения: 26.04.2009 00:19
israel_rider

Цитата:
Ведь есть пользователи, которые куки у себя в браузере отключают.

почти нет..
лучше через куки.. иначе смотрите при форварде на 4.php - передается ли id сессии как добавка к URL
Автор: israel_rider
Дата сообщения: 26.04.2009 00:50

Цитата:
Ведь есть пользователи, которые куки у себя в браузере отключают.
почти нет..


Понял. Согласен. Но я студент. Я учу раздел "сессии" и до кук я ещё не дошёл. На практике я буду включать куки, но сейчас пока я хочу разобраться, как работает встроенный механизм сессий. Поэтому я так и упёрся в этот пример из учебника, и пытаюсь понять, почему именно он не работает.

При форварде на 3.php при помощи header('Location: 3.php'); id сессии как добавка к URL не передаётся, то есть в
ieHTTPHeaders я вижу - GET /3.php HTTP/1.1 и всё.
А когда я в файле 4.php комментирую строчку //header('Location: 3.php'); , при помощи которой я осуществляю автоматическое перенаправление на 3.php, то в ieHTTPHeaders я чётко вижу -
GET /3.php?PHPSESSID=jegsr9pkm5filem00ifttpjmb2 HTTP/1.1.
И элемент $_SESSION["access"] в браузер передаётся. То есть всё работает.
Выходит ответ на мой вопрос, почему не работает в первом случае, и работает во втором - в изучении механизма работы функции Хедер.....
Автор: Cheery
Дата сообщения: 26.04.2009 02:50
israel_rider

Цитата:
Выходит ответ на мой вопрос, почему не работает в первом случае, и работает во втором - в изучении механизма работы функции Хедер.....

если не ошибаюсь, то
http://us2.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid
Автор: israel_rider
Дата сообщения: 26.04.2009 03:05
Короче - вот он ответ, на мой вопрос. Цитата из учебника: "В PHP изменение заголовка(header) возможно лишь ДО того, как начнет формироваться HTML-код web-документа!". То есть, в моём случае я не могу пользоваться функцией header() для редиректа.
Вопрос. Есть ли в РНР ещё средства, которыми я мог бы осуществить перенаправление?

Cheery
Мало что понял, но проверил. У меня session.use_trans_sid = 1 , то есть включена.
Автор: zerkms
Дата сообщения: 26.04.2009 04:20

Цитата:
Короче - вот он ответ, на мой вопрос. Цитата из учебника: "В PHP изменение заголовка(header) возможно лишь ДО того, как начнет формироваться HTML-код web-документа!". То есть, в моём случае я не могу пользоваться функцией header() для редиректа.

где у тебя до редиректа какой-либо вывод???

Страницы: 12345678910111213

Предыдущая тема: PHP: лимит времени на выполнение скрипта


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.