Проблем при проверка за съществуващи записи

vladislav

Registered
Имам следния проблем в базата данни записвам информацията от текстови фахлове - encoding-a навсякъде е utf8

текстов файл:

Код:
Иван,Иванов,1,Allianz Arena
Димитър,Ангелов,2,Vitra Campus_1
Кремена,Иванова,4,Vittorio Emanuele
Николай,Николов,5,Allianz Arena

кода за добавянето:
PHP:
	$target_path = "lists_up/";

				$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

				if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) 
				{
				  				
						$file = "lists_up/students_$pr.txt";
						$fp = fopen($file, "r");
						$data = fread($fp, filesize($file));
						fclose($fp);
						$output = explode("\n", $data);

						foreach($output as $var) {
						$tmp = explode(",", $var);
						$name = $tmp[0];
						$family = $tmp[1];
						$number = $tmp[2];
						$obekt = $tmp[3];

						$host= "localhost";
						$dbuser =".....";
						$dbpass = "....";
						$dbname = ".....";
						$connection = mysql_connect($host, $dbuser, $dbpass) or die(mysql_error());
						mysql_query('set names utf8', $connection);
						mysql_select_db($dbname) or die(mysql_error());
						$sql = "INSERT INTO students SET name='$name', family='$family', fnumber='$number', obekt='$obekt'";
						mysql_query($sql);
						}
						echo "Списъкът  е успешно добавен към базата данни за Практика $pr";
				}
				  else{
    echo "Възникна проблем";
}


кода да изкарването на резултатите
PHP:
<?PHP
			$ob=$_GET['obekt'];
			mysql_query('set names utf8', $connection);
			$query = "SELECT obekt_code FROM obekti WHERE obekt='$ob' LIMIT 1";
			
	//Executing the query.
	$result = mysql_query($query) or die(mysql_error());
	//Displaying the results of the query.
	$query_s = "SELECT * FROM students WHERE obekt='$ob'";
		$result_s = mysql_query($query_s) or die(mysql_error());
		echo("<h2><center>$ob</center></h2><br/>Изготвено от:<br/><br/>");
		while ($row_s = mysql_fetch_array($result_s)) 
		{
			extract($row_s);
			echo("<b>$name $family</b><br/>");
		}
		
	while ($row = mysql_fetch_array($result)) 
	{
	
		//extract() takes an associative array and treats the keys as variable names and values as variable values.
		extract($row);
echo("<br/><br/><table cellspacing=\"0\" cellpadding=\"0\" ><tr>
<td style=\"width: 50%; border-right: solid 1px white; vertical-align: top;\"><img src=\"praktiki/$praktika/zaglavni/$obekt_code.jpg\" style=\"width: 200px; padding: 0; margin:0; \" /><br/><br/><br/>
Есето е предоставено в учебно-методическия кабинет на 3 етаж</td>
<td style=\" width: 50%; vertical-align: top; text-align: right;\">
<a href=\"fullsizeimage.php?obc=$obekt_code&pr=$praktika&obn=$ob\"  style=\" border: 0;\"><img src=\"praktiki/$praktika/tabla/$obekt_code.jpg\" style=\"width: 200px; padding: 0; margin:0;\" /> </a><br/> <i>Натиснете за цял размер</i>
</td>
</tr>
</table>
");
}
			?>

Примерно за обекта Allianz Arena трябва да извади 2 имена от базата дани обаче Всичко е наред изкарва името на обекта правилно но при приоверката в таблицата students разпознава примерно само единия запис с Allianz Arena или нито един при др обекти ако после ръчно променя в базата данни обектите - изкопирам Allianz Arena и го редактирам в съответните записи всичкос е оправя, от какво може да се поражда този пробелем - някак си не записва символите еднакво въпреки че записите си изглеждат абсолютно еднакви като външен вид пише си Allianz Arena но не ги разпознава като еднакви
 
vladislav каза:
Ако за проверка изпозвам

WHERE obekt LIKE '$ob%'
вместо
obekt='$ob'

нещата се оправят
защото първото е "Като" ,а второто е "Равно"

ето така г/д е :
Ако това е подобно на това
Ако това е равно на това
 
Това ми е ясно записите в базата данни са видимо еднакви и искам а и би трябвало да става да става със =(равно/equal) а не с LIKE
 
Не,защото може примерно единия запис има 2 интервала ,а другият един.На пръв поглед всичко е еднакво,но интервала си е има + това може едното да си го написал с "а" английско ,а другото с "А" Българско.

Аз ти препоръчвам да си използваш LIKE.Аз го използвам и аз за същата ситуация
 
Ясноо...
просто не мога да разбера от къде идва тази разлика в записите
и как мога да постигна да са абсолютно еднакви, иначе за момента ще ползвам LIKE явно което е и май по удачно за string-ове
 
Като преглеждам кода от браузър нещо ми е доста разместено...

Я си дай точния код за проверяване,защото мисля,че мога да го оправя.
 

Back
Горе