Deerua about Coding -> Заметки с тегом «mysql»

Блог о кодинге, автор Deerua

coding, javascript, css, html, php, jquery, mysql, deerua

Deerua about Coding

 Избранное

 Самые комментируемые за всю историю

 198 заметок ненаглядно

 Архив за 2010, 2009, 2008  год


 9 июня 2010, 10:18       более месяца назад

Сравнение таблиц в двух БД (и больше)

Когда дохера работы, начинаешь страдать такой ерундой :)
Раз в несколько месяцев приходится сравнивать БД, и каждый раз в ручную. Один даже раз софт сутки искал, но он ужасен, весь. Немного пострадав, минут 30, получился такой код:
  • собираем всё в масcив;
  • выводим всё красиво в табличках;
  • подключаем jQ и делаем удобную «обёрточку»;
  • Profit
<?php
  $user  = "root";
  $userp = "";
  mysql_connect("localhost", $user, $userp) or die(mysql_error());
	$table2compare = array("test1", "test2");
	$comparedtables = array(); $i = 0;
  foreach ($table2compare as $tablename){
  	$comparedtables["title"][$i] = $tablename;
    $db = mysql_query("SHOW TABLES IN $tablename");
    while($dbt = mysql_fetch_array( $db )){
      $table = mysql_query("SHOW COLUMNS FROM $dbt[0] FROM $tablename ");
      while($tbf = mysql_fetch_array( $table ))
      	$comparedtables["tables"][$dbt[0]][$i][] = $tbf;
    }
    $i++;
  }
	echo "<table><tr>";
	for ($j = 0; $j < $i; $j++) 
		echo "<td>".$comparedtables["title"][$j]."</td>";
	echo "</tr>";
	foreach ($comparedtables["tables"] as $table => $fields) {
		echo "<tr>";
		for ($j = 0; $j < $i; $j++) {
			if ($j > 0) $eq = $fields[$j] == $fields[0]; else $eq = true;
			echo "<td valign='top' ".(!$eq ? "style='background: #fcc;'" : "").">";
			if (empty($fields[$j])) continue;
			echo "<span>$table</span><br><table rules=all frame=box cellpadding='2'>
            <tr>
            	<td>Field</td>
            	<td>Type</td>
            	<td>Null</td>
            	<td>Key</td>
            	<td>Default</td>
            	<td>Extra</td>
            </tr>";
  		foreach ($fields[$j] as $field)
	      echo "<tr>
	      				<td>$field[0]</td>
	      				<td>$field[1]</td>
	      				<td>$field[2]</td>
	        			<td>$field[3]</td>
	        			<td>$field[4]</td>
	        			<td>$field[5]</td>
	        		</tr>";
      echo "</table></td>";
    }
    echo "</tr>";
  }
  
  echo "</table>";
  mysql_close();
?>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
	$(function(){
	  $("table table").hide();
	  $("table span").click(function(){
	  	$(this).next().next().toggle();
	  }).css({"cursor":"pointer"});
	});
</script>

 Комментировать…

 Теги: javascript, mysql, php

 13 декабря 2009, 14:03       более 7-и месяцев назад

Утилит полезных пост 2

Сегодня речь пойдёт о утилитах для Мускула (MySQL).
Первая это php-утилита Sypex Dumper универсальный дампер БД (сделан нашими ребятами)
  • можно просто и быстро создать резервную копию (бэкап, дамп)
  • работает очень быстро с огромными БД
  • есть куча фич (свой cmd, cron)
Вторая — javascript-утилита WWW SQL Designer — для создания структуры БД, установки связи между таблицами и всё это в удобном GUI
  • очень простая и удобная
  • установка — просто залил на сервер
  • сохранение/загрузка результатов
  • експорт в SQL и XML
  • в демке всё круто видно %)

 1 комментарий

 Теги: УПП, php, mysql, javascript, шпаргалка

 11 декабря 2009, 13:13       более 7-и месяцев назад

Утилит полезных пост

Первая это php-утилита Admiter
  • php MySQL Admin одним файлом, всегда мечтал ;)
  • умеет всё что нужно, но не такой мощный как PhpMyAdmin
Вторая это javascript-утилита DD_roundies
  • она от автора супер PNG-fix для ИЕ6
  • css-selectors для выбора применяемых элементов
  • работает очень быстро и просто, одни бонусы :)
  • умеет за одно делать прозрачными png-рисунки

 3 комментария

 Теги: php, mysql, javascript, УПП, шпаргалка

 2 августа 2009, 15:42       более 12-и месяцев назад

MySQL convert All tables (encoding, alter)

Иногда нужно поменять кодировку БД (появился новый язык, и нужен утф8 срочно, или поменялась ЦМС, или власть сменилась).
Хм, у нас для этого есть стандартные команды:
ALTER TABLE sometable CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;
ALTER TABLE sometable DEFAULT CHARACTER SET cp1251;
# another way
ALTER TABLE articles CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci
ALTER TABLE articles DEFAULT CHARACTER SET utf8
Казалось бы, всё просто ;) Но а если таблиц 100, 200, 300 о_О это что по одной колбасить? :D
Не смешно :( но выход есть, всё теми же стандартными фишками ;)
# мы возьмём и используем ИнфоСхему ;)
use information_schema;
# Запихаем все таблички базы someDB в МЕМ
select TABLE_SCHEMA, TABLE_NAME from TABLES where TABLE_SCHEMA = "someDB";
# Нарисуем команды
select 
	CONCAT("Alter Table `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` 
		CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;
		Alter Table `", TABLE_SCHEMA,"`.`", TABLE_NAME, "` 
		DEFAULT CHARACTER SET cp1251;") 
	as MySQLCMD from TABLES where TABLE_SCHEMA = "someDB";
# Думаете всё? Магия произошла? нееет!
# Теперь смотрим в аутпут, копируем все команды, 
# и выполняем огромный запрос.
# Для удобства советую phpMyAdmin

ЗЫ: все таблички то в нужной кодировочке, а база то нет ;) не забываем
ALTER DATABASE `someDB` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;

 1 комментарий

 Теги: mysql

 28 июля 2009, 20:23       более года назад

MySQL и NULL (заблуждения)

В мускуле сравнить с NULL(равно) или отрицать от NULL(неравно), нельзя, вернее бесполезно ;) Можно только сопоставить с помощью IS или IS NOT, тогда мы получим результат ;)

То есть так не работает
SELECT * FROM table WHERE column = NULL;
SELECT * FROM table WHERE column != NULL;
А вот так работает
SELECT * FROM table WHERE column IS NULL;
SELECT * FROM table WHERE column IS NOT NULL;

 Комментировать…

 Теги: mysql

 26 мая 2008, 15:24       более 2-х лет назад

«cp1251 vs Mysql» и знаки вопроса (windows-1251)

после коннекта нужно вставить магические строчки :)
@mysql_query("SET NAMES cp1251");
@mysql_query("SET CHARACTER SET cp1251");
@mysql_query("SET character_set_client = cp1251");
@mysql_query("SET character_set_connection = cp1251");
@mysql_query("SET character_set_results = cp1251");

что это даст?:
* первые 2 строчки будут считывать с базы не «????», а нормальный текст;
* следующие строчки дадут возможность записывать в базу текст в правильной кодировке, а не «????» :)

 4 комментария

 Теги: bugs   знаки вопроса, mysql   charset   cp1251

 26 мая 2008, 15:17       более 2-х лет назад

Книги по програмингу (старенькие, запыленные)

Книги по MySQL Книги по CGI Книги по HTML Книги по CSS Книги по JS Книги по PHP

 Комментировать…

 Теги: cgi, css, css   css2, html, javascript, mysql, php

Нужно создать сайт на 1С-Битрикс(Bitrix)?
Работает на движке e2 Selecta * All sources code was highlighted with w3club Highlighter.
deer.org.ua © 2008—2010 Vitaliy Bogdanets Deerua