Интервали в името

bilbe

Registered
Добър ден. Имам името Илиян - Йо-Йо примерно и ми трябва да го напише автоматично така : Илиян_-_Йо-Йо, защото не ми възприема интервали.
Имам и друго питане. Имам голяма база от данни в която имам колонка download_description и ми трябва да проверява и където в download_description намери съвпадение на дадена фраза в download_url да изтрия сегашната информация и да копира адреса като преди него сложи http:// на същото ID и така за всички съвпадения.

Надявам се съм се изразил правилно и мерси предварително :)
 
Здравей приятел,

аз ти препоръчвам да изгледаш урока за регулярните изрази.

http://web-tourist.net/login/login/view.php?st=3060
 
За първия всичко се оправи и мерси, а за втрото ще се опитам да обясна по-ясно. Имам голяма база от данни с да речем 15 000 реда . Тази таблица има към 10 колонки. Трябва ми скрипт който да търси в 3-тата колонка примерно да има съвпадение на някаква дума при мен (4shared.com) и като намери съвпадения примерно на ID номер 50 да изтрива информацията от 2-рата кононка на това ID и да копира информацията от 3-тата колонка на 2-рата като преди това добави http:// . Това ми трябва да се направи за всички съвпадения, т.е може би на 10 000 от записите. Дано сега съм бил по ясен :)
 
bilbe каза:
За първия всичко се оправи и мерси, а за втрото ще се опитам да обясна по-ясно. Имам голяма база от данни с да речем 15 000 реда . Тази таблица има към 10 колонки. Трябва ми скрипт който да търси в 3-тата колонка примерно да има съвпадение на някаква дума при мен (4shared.com) и като намери съвпадения примерно на ID номер 50 да изтрива информацията от 2-рата кононка на това ID и да копира информацията от 3-тата колонка на 2-рата като преди това добави http:// . Това ми трябва да се направи за всички съвпадения, т.е може би на 10 000 от записите. Дано сега съм бил по ясен :)
Дай структура на таблицата (и името на таблицата) за да мога да напиша скрипта както трябва. Ако можеш дай ми един примерен ред от тази таблица, за да видя точно какво записваш. :lol:
 
Таблицата се казва download. От структората ни трябва 3 колонки от всичките 20 и няколко, а тези които ни трябват са са : download_id, download_url, download_description .

Ето ти и 1 примерен запис :

(`download_id`, `download_name`, `download_url`, `download_author`, `download_author_email`, `download_author_website`, `download_description`, `download_filesize`, `download_requested`, `download_category`, `download_active`, `download_datestamp`, `download_thumb`, `download_image`, `download_comment`, `download_class`, `download_mirror`, `download_mirror_type`, `download_visible`) VALUES

(11499, 'Christian Craken - Progressive Feelings 2010', 'http://www.4shared.com/audio/9qCu5AFQ/Christian_Craken_-_Progressive.html', '', '', '', '4shared.com/img/274406215/d096a9f6/dlink__2Fdownload_2F274406215_2Fd096a9f6_3Ftsid_3D20100428-124942-57c83ce0/preview.mp3', '0', 18, 28, 1, 1272461828, '', '', 0, '0', '', 0, '0');
 
Надявам се, че съм успял да го направя както трябва. За всеки случай първо си направи бекъп на БД!

Код:
<?php
# Задаваме по-дълго време за изпълнение на скрипта (1 ден), понеже има много записи.
# Най-вероятно няма да отнеме чак толкова много време.
ini_set('max_execution_time', 86400);
# Данни за сървъра
$server = 'localhost'; // сървър
$user = 'user'; // потребител
$pass = 'pass'; // парола
$db = 'db'; // база данни
# Връзка към сървъра и базата данни
mysql_connect($server, $user, $pass);
mysql_select_db($db);
# Реалният код
$query = mysql_query('SELECT `download_id`,`download_description` FROM `downloads`');
$count = 1;
while($r = mysql_fetch_assoc($query))
{
	if(!empty($r['download_description']))
	{
		$url = 'http://'.$r['download_description'];
		$q = mysql_query('UPDATE `downloads` SET `download_url`="'.$url.'" WHERE `download_id`="'.$r['download_id'].'"');
		if($q)
		{
			echo $count.'. успешно променен запис!<br/>';
		} else echo $count.'. неуспешно променен запис!<br/>';
	} else echo $count.'. непроменен запис!<br/>';
}
?>
 
Ами нещо не работи както трябва. Значи трябва ми да търси съвпадение в колонката download_description на фразата 4shared.com и като открие такова съвпадение примерно на ID 50 да изтрие информацията от download_url на ред 50 и да копира от download_description в download_url като преди това добави http://

Не мога да ти го обясна по друг начин
 
bilbe каза:
Ами нещо не работи както трябва. Значи трябва ми да търси съвпадение в колонката download_description на фразата 4shared.com и като открие такова съвпадение примерно на ID 50 да изтрие информацията от download_url на ред 50 и да копира от download_description в download_url като преди това добави http://

Не мога да ти го обясна по друг начин
Код:
<?php
# Задаваме по-дълго време за изпълнение на скрипта (1 ден), понеже има много записи.
# Най-вероятно няма да отнеме чак толкова много време.
ini_set('max_execution_time', 86400);
# Данни за сървъра
$server = 'localhost'; // сървър
$user = 'user'; // потребител
$pass = 'pass'; // парола
$db = 'db'; // база данни
# Връзка към сървъра и базата данни
mysql_connect($server, $user, $pass);
mysql_select_db($db);
# Реалният код
$query = mysql_query('SELECT `download_id`,`download_description` FROM `downloads`');
$count = 1;
while($r = mysql_fetch_assoc($query))
{
	if(!empty($r['download_description']) && substr($r['download_description'], 0, 11) == '4shared.com')
	{
		$url = 'http://'.$r['download_description'];
		$q = mysql_query('UPDATE `downloads` SET `download_url`="'.$url.'" WHERE `download_id`="'.$r['download_id'].'"');
		if($q)
		{
			echo $count.'. успешно променен запис!<br/>';
		} else echo $count.'. неуспешно променен запис!<br/>';
	} else echo $count.'. непроменен запис!<br/>';
}
?>
Така?
 
bilbe каза:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\fafa.php on line 16
Да. Сбъркал съм името на таблицата на 16 ред от `downloads` го промени на `download` и вече трябва да работи. :?:
 
Ами всичките ми резултати са такива :

1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. неуспешно променен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. неуспешно променен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. неуспешно променен запис!
1. неуспешно променен запис!
 
bilbe каза:
Ами всичките ми резултати са такива :

1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. неуспешно променен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. неуспешно променен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. непроменен запис!
1. неуспешно променен запис!
1. неуспешно променен запис!
Код:
<?php
# Задаваме по-дълго време за изпълнение на скрипта (1 ден), понеже има много записи.
# Най-вероятно няма да отнеме чак толкова много време.
ini_set('max_execution_time', 86400);
# Данни за сървъра
$server = 'localhost'; // сървър
$user = 'user'; // потребител
$pass = 'pass'; // парола
$db = 'db'; // база данни
# Връзка към сървъра и базата данни
mysql_connect($server, $user, $pass);
mysql_select_db($db);
# Реалният код
$query = mysql_query('SELECT `download_id`,`download_description` FROM `download`');
$count = 1;
while($r = mysql_fetch_assoc($query))
{
	if(!empty($r['download_description']) && substr($r['download_description'], 0, 11) == '4shared.com')
	{
		$url = 'http://'.$r['download_description'];
		$q = mysql_query('UPDATE `download` SET `download_url`="'.$url.'" WHERE `download_id`="'.$r['download_id'].'"');
		if($q)
		{
			echo $count.'. успешно променен запис!<br/>';
		} else echo $count.'. неуспешно променен запис!<br/>';
	} else echo $count.'. непроменен запис!<br/>';
	$count++;
}
?>
 
Работи :) А как да се направи да изкарва кое ID точно е променено и примерно да обработва последните 50 отзад напред :)
 
bilbe каза:
Работи :) А как да се направи да изкарва кое ID точно е променено и примерно да обработва последните 50 отзад напред :)
Код:
<?php
# Задаваме по-дълго време за изпълнение на скрипта (1 ден), понеже има много записи.
# Най-вероятно няма да отнеме чак толкова много време.
ini_set('max_execution_time', 86400);
# Данни за сървъра
$server = 'localhost'; // сървър
$user = 'user'; // потребител
$pass = 'pass'; // парола
$db = 'db'; // база данни
# Връзка към сървъра и базата данни
mysql_connect($server, $user, $pass);
mysql_select_db($db);
# Реалният код
$query = mysql_query('SELECT `download_id`,`download_description` FROM `download` LIMIT 50 ORDER BY `download_id` DESC');
while($r = mysql_fetch_assoc($query))
{
	if(!empty($r['download_description']) && substr($r['download_description'], 0, 11) == '4shared.com')
	{
		$url = 'http://'.$r['download_description'];
		$q = mysql_query('UPDATE `download` SET `download_url`="'.$url.'" WHERE `download_id`="'.$r['download_id'].'"');
		if($q)
		{
			echo $r['download_id'].'. успешно променен запис!<br/>';
		} else echo $r['download_id'].'. неуспешно променен запис!<br/>';
	} else echo $r['download_id'].'. непроменен запис!<br/>';
	$count++;
}
?>
 
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\fafa.php on line 15

И пробвах да търси същия начин да копира, но за space4sharing.com и нещо не работи
 
bilbe каза:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\fafa.php on line 15

И пробвах да търси същия начин да копира, но за space4sharing.com и нещо не работи
За да търси за друго трябва да посочиш за кое в $what
Код:
<?php
# Задаваме по-дълго време за изпълнение на скрипта (1 ден), понеже има много записи.
# Най-вероятно няма да отнеме чак толкова много време.
ini_set('max_execution_time', 86400);
# Данни за сървъра
$server = 'localhost'; // сървър
$user = 'user'; // потребител
$pass = 'pass'; // парола
$db = 'db'; // база данни
# Какво да търси?
$what = '4shared.com';
$whatint = strlen($what);
# Връзка към сървъра и базата данни
mysql_connect($server, $user, $pass);
mysql_select_db($db);
# Реалният код
$query = mysql_query('SELECT `download_id`,`download_description` FROM `download` ORDER BY `download_id` DESC LIMIT 50');
while($r = mysql_fetch_assoc($query))
{
	if(!empty($r['download_description']) && substr($r['download_description'], 0, $whatint) == $what)
	{
		$url = 'http://'.$r['download_description'];
		$q = mysql_query('UPDATE `download` SET `download_url`="'.$url.'" WHERE `download_id`="'.$r['download_id'].'"');
		if($q)
		{
			echo $r['download_id'].'. успешно променен запис!<br/>';
		} else echo $r['download_id'].'. неуспешно променен запис!<br/>';
	} else echo $r['download_id'].'. непроменен запис!<br/>';
}
?>
 
Значи сега ползвам това :

<?php
$server = 'localhost'; // сървър
$user = 'xxxx'; // потребител
$pass = 'xxxx'; // парола
$db = 'xxx'; // база данни
# Връзка към сървъра и базата данни
mysql_connect($server, $user, $pass);
mysql_select_db($db);
$what = '4shared.com';
# Реалният код
$query = mysql_query('SELECT `download_id`,`download_description` FROM `download` ORDER BY `download_id` DESC LIMIT 50');
while($r = mysql_fetch_assoc($query))
{
if(!empty($r['download_description']) && substr($r['download_description'], 0, $whatint) == $what)
{
$url = 'http://'.$r['download_description'];
$q = mysql_query('UPDATE `download` SET `download_url`="'.$url.'" WHERE `download_id`="'.$r['download_id'].'"');
if($q)
{
echo $r['download_id'].'. успешно променен запис!<br/>';
} else echo $r['download_id'].'. неуспешно променен запис!<br/>';
} else echo $r['download_id'].'. непроменен запис!<br/>';
$count++;
}
?>

Така нещо не работи изкарва само

11409. непроменен запис!
11408. непроменен запис!
11407. непроменен запис!
11406. непроменен запис!
11400. непроменен запис!
11399. непроменен запис!
11398. непроменен запис!
11397. непроменен запис!
11396. непроменен запис!
11395. непроменен запис!
 
Извинявам се не бях копирал целия код с новите промени :) Всичко работи 6+ :) Мерси много за помощта
 

Back
Горе