Архив рубрики: PHP

PHP — Перевод русских букв на транслит

Необходимо перевести русские буквы на транслит. Будем использовать языки AJAX  и PHP.

Шаг первый

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

Форма для обработки

Листинг пример формы

<form id="myForm">
Текст на русском для транслита:<br/>
<textarea rows="15" cols="50" id="t1" style="float:left"></textarea>
<textarea id="transl" rows="15" cols="50"></textarea>
<br/>
<input class="b"type="button" value="перевести" id="butt"/>
</form>

Шаг второй

Пишем след AJAX код для обработки  нажатия на кнопку

<script>
$(document).ready(function(){

$('#butt').click(function(){
$.ajax({
type: "POST",
url: "translate.php",
data: "t1="+$("#t1").val(),
success: function(html){
$("#transl").html(html);
}
});
return false;
});

});
</script>

Шаг третий

пишет обработчик в файле translate.php

$str=$_REQUEST['t1'];

function translit($str)
{
$tr = array(
"А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
"Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
"Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
"О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
"У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
"Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
"Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
"ы"=>"yi","ь"=>"'","э"=>"e","ю"=>"yu","я"=>"ya",
"."=>".","?"=>"?","/"=>"_","\\"=>"_",
"*"=>"_",":"=>":","*"=>"_","\""=>"_","<"=>"_",
">"=>"_","|"=>"_"
);
return strtr($str,$tr);
};
$tans=translit($str);
echo $tans;

Готовый пример онлайн перевода в транслит (транслитирования)

Число в строку, строку в число на разных языках.

Преобразование числа в строку и обратной операции на разных языках программирования.

Строку в число

С++

int atoi(const char* str) //для чисел типа integer
long atol(const char* str)//для чисел типа long
double atof(const char* str)//для чисел типа double

 PHP

<?php
$foo = 1 + "10.5";                // $foo это float (11.5)
$foo = 1 + "-1.3e3";              // $foo это float (-1299)
$foo = 1 + "bob-1.3e3";           // $foo это integer (1)
$foo = 1 + "bob3";                // $foo это integer (1)
$foo = 1 + "10 Small Pigs";       // $foo это integer (11)
$foo = 4 + "10.2 Little Piggies"; // $foo это float (14.2)
$foo = "10.0 pigs " + 1;          // $foo это float (11)
$foo = "10.0 pigs " + 1.0;        // $foo это float (11)
?>

C#

m = int32.Parse("123456");//из строки целое число

 Javascript

Для явного преобразования можно использовать 2 способа:

var number = Number(string_value);
var number = string_value - 0;

parseInt("3 blind mice"); // Возвращает 3
parseFloat("3.14 meters"); // Возвращает 3.14
parseInt("12.34"); // Возвращает 12
parseInt("0xFF"); // Возвращает 255

Число в строку

С++

char* itoa(int value, char* string, int radix) //для чисел типа integer
char* itoa(long value, char* string, int radix)//для чисел типа long
char* itoa(double value, char* string, int radix)//для чисел типа double

PHP

$name=5;
$string_name = (string)$name;

C#

int a=5;
string s=a.toString();

 Javascript

var string_value = String(number); // Использование конструктора String()
// в качестве функции
var string_value = number + ""; // Конкатенация с пустой строкой

Еще одну возможность предоставляет метод toString():

var n = 17;
string_value = number.toString();

AJAX и PHP — работа с базой данных

Задача:

Динамический показ данных (товар) в зависимости от выбора элемента (категория) в выпадающем списке , используя AJAX.

Решение (Пример):

Шаг 1

Создать файл index.php, в котором

  • подключаемся к базе данных для получения списка категории

Листинг файла подключения к БД auth.php

<?
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
$password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "test"; // название базы данных

/* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
mysql_query('SET NAMES utf8') or header('Location: Error');

/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());
?>
  •  выводим форму с выпадающим списком из этих категорий

Выпадающий список

  • пишем AJAX запрос на обработку выбранного элемента

Листинг файла с AJAX запросом index.php

<?php
include "auth.php";//Подключаем БД
//делаем запрос на категории
$query = "select * from allcat where Id_parent=0 ";
$result = mysql_query($query) or die(mysql_error());
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; Charset=UTF-8">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<form id="myForm">
Выберите Категорию:<br/>
<select id="idcat">
<?php
//Выводим категории и ее ID
while ($row=mysql_fetch_array($result))
{
print "<option value=".$row['Id_cat'].">";
print $row['Name'];
echo("</option>");
}
?>
</select>
</form>

<div id="content"></div>

<script>
$(document).ready(function(){

$('#idcat').change(function(){
$.ajax({
type: "POST",
url: "show.php",
data: "idcat="+$("#idcat").val(),
success: function(html){
$("#content").html(html);
}
});
return false;
});

});
</script>

</body>
</html>

Шаг 2

Создать файл show.php, в котором обрабатываем AJAX запрос

  • подключаемся к базе данных для получения списка товаров по ID категории
  • выводим полученные товары

Листинг файла для обработки запроса show.php

<?php
include "auth.php"; //Подключаем БД
//делаем запрос на товары этой категории
$query = "select * from allcat where Id_parent=".$_REQUEST['idcat']."";
$result = mysql_query($query) or die(mysql_error());
// выводим товары полученные по запросу
while ($row=mysql_fetch_array($result))
{
print $row['Name']."<br>";
}
?>

 

Реализация авторизации на сайте с помощью PHP и сессий

Шаблонный стандартный вариант без использования БД с пользователями.

Задача:

Предоставить доступ к определенной странице сайта по логину и паролю.

Решение:

Для авторизации надо создать к примеру 3 файла:

Index.php — здесь форма для авторизации, ввод логина и пароля;

Login.php – здесь происходит проверка авторизации;

Sekret.php – здесь страница доступ к которой только для авторизированных пользователей;

Листинг этих файлов ниже

Листинг index.php

<!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>
</head>
<body>
<form action="login.php" method="post">
<table align=center>
<tr>
<td>Логин:</td>
<td><input type="text" name="login" /></td>
</tr>
<tr>
<td>Пароль:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="buttons" value="Войти" /></td>
</tr>
</table>
</form>
</body>
</html>

Листинг файла Login.php

<?
//Запуск сессий;
session_start();

if (isset($_POST['login']) && isset($_POST['password']))
{
// получаем данные из формы с авторизацией
$login = mysql_real_escape_string($_POST['login']);
$password = $_POST['password'];
//проверка пароля и логина
if (($login=='a123')&& ($password=='123')){
echo ("логин совпадает и пароль верны");
$_SESSION['Name']=$login;
// идем на страницу для авторизованного пользователя
header("Location: /author/sekret.php");
}
else
{die('Такой логин с паролем не найдены в базе данных.');
}
}
?>

Листинг Sekret.php

<?
//Запуск сессий;
session_start();
//если пользователь не авторизован

if (!(isset($_SESSION['Name'])))
{
//идем на страницу авторизации
header("Location: /author/index.php");
exit;
};
//Выводим саму страницу для авторизованных пользователей
$nm =$_SESSION['Name'] ;
echo ("<div style=\"text-align: center; margin-top: 10px;\">");
print "Пользователь системы $nm <br> ";
print "Вы на секретной странице $nm <br> ";
?>

Важно:

Чтобы сессии работали необходимо в начале каждой страницы запускать session_start();

Запрос SQL для добавления записи в БД

Запрос SQL для добавления записи в таблицу БД.

Общий вид  запроса

INSERT INTO имя таблицы (поле1, поле2) VALUES (‘данные поля1’,’данные поля2’)
или
INSERT INTO имя таблицы SET поле1=‘данные поля1’, поле2=’данные поля2’

Пример запроса

INSERT INTO fruit (Name, color) VALUES (‘apple’,’green’);

Рабочий пример листинга использования запроса на добавления (MySql + php.)

/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя
$password = ""; // пароль пользователя (если пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "test"; // название базы данных
 /* Таблица MySQL, в которой хранятся данные */
$table = "test_table";
 /* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
/* Корректный вывод русских букв */
mysql_query('SET NAMES cp1251') or header('Location: Error');
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());
/* Запрос на добавление */
  $query = "INSERT INTO
   	     $table
	    SET
	     dolzhnost='$dolz',
	     inn='$inn',
	     fullnameorg='$fname',
	     fio='$fioname',
	     date='$cdate',
	     yuradres='$yuradress',
	     factadres='$fadress'
  	   ";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die(mysql_error());
/* В случае успешного сохранения выводим сообщение и ссылку возврата */
echo ("<div style=\"text-align: center; margin-top: 10px;\">
<font color=\"green\">Данные успешно отправлены!</font>
<a href=\"index.php\">Вернуться назад</a></div>");
header("Location: /eoz/index.php");
        exit;
};
/* Закрываем соединение */
mysql_close();)

Также можно посмотреть:

Пример запроса SQL на обновления поля в таблице БД