nie prawidłowy typ danych?
2011-04-08 00:48:54
Post #1
korey
Witam.
Mam w bazie tabelkę w której trzymam filmy i podstawowe info o nich, a wygląda ona tak:
http://img823.imageshack.us/img823/7061/tabela1o.jpg
Mój problem polega na tym ze nie wiadomo czemu jeden rekord zapisuje się normalnie a inny z postaci ciągu cyferek i liczb. Oczywiście na stronie tego nie widać i wszystko jest wyświetlane jak należy. poniżej przedstawiam obrazek z przykładem.
http://img849.imageshack.us/img849/3235/tabela2e.jpg
Chciałbym jeszcze zapytać czy tego typu sytuacja może jakoś przeszkodzić w tworzeniu prostej wyszukiwarki.
Pozdrawiam
korey
2011-04-08 07:15:08
Post #2
nospor
No dziwna sytuacja.
Czemu masz utf8_bin a nie np. utf8_general_ci?
No i pokaż kod
2011-04-08 19:42:50
Post #3
korey
Nie wiem jaki kod chcesz wiec wybieram intuicyjnie.
Obrabiam $_POST w ten sposów
1
2
3
4
5
6
7
8
9
10
<?php
foreach ($_POST AS $klucz => $wartosc)
{
$wartosc=is_array($wartosc)?array_map('trim',$wartosc):trim($wartosc);if (get_magic_quotes_gpc())
$wartosc=is_array($wartosc)?array_map('stripslashes',$wartosc):stripslashes($wartosc);
$wartosc=is_array($wartosc)?array_map('htmlspecialchars',$wartosc):htmlspecialchars($wartosc, ENT_QUOTES);
$_POST[$klucz]=$wartosc;
}
?>
2011-04-08 19:50:01
Post #4
korey
a wyświetlam w ten sposób
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php $sql ="SELECT * FROM `movies` WHERE id=$NrGetID";
mysql_query($sql) or die('<br /><br />ZAPYTANIE: '.$sql.'BŁĄD: '.mysql_error());
$odp = mysql_query($sql);
while($wiersz = mysql_fetch_array($odp)){
extract($wiersz);
?>
<title><?php echo ucfirst($_SERVER['SERVER_NAME']).' - '.$tytul_pl;?></title>
<script language="javascript" src="../bbeditor/ed.js"></script>
<div id="data_file">
.
.
. dalsza tresc
.
<?php } ?>
2011-04-11 08:34:17
Post #5
Comandeer
Rzuć jeszcze kodem do zapisywania do bazy, bo ten, co na razie pokazałeś, wygląda poprawnie
2011-04-12 14:42:56
Post #6
korey
dlaej sprawdzam dane jak wszystko jest ok daje to:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php if(!isset($error)){
$aktualnyCzas = date('d-m-Y');
$sql = "INSERT INTO `movies` (`id`, `tytul_first`, `tytul_pl`, `tytul_org`, `produkcja`, `data_premiery`, `jakosc`, `format`, `jezyk`, `opis1`, `opis2`, `obsada`, `inne`, `plakat`, `autor`, `links`, `data_dodania`)
VALUES(NULL, '$title', '$tytul_pl', '$orginalny_tytul', '$produkcja',
'$data_premiery', '$film_jakosc', '$film_format', '$film_jezyk', '$wstep', '$full_opis', '$obsada', '$inne_inf', '$obrazek', '$autor', '$files_links', '$aktualnyCzas' )";
mysql_query($sql) or die('<br /><br />ZAPYTANIE: '.$sql.'BŁĄD: '.mysql_error());
$last_id = mysql_insert_id(); $razem = count($category_movie);for($a=0; $a < $razem; $a++){
$obrobione[]='('.$last_id.', '.$category_movie[$a].')';}
$category_sql_values = implode(", ", $obrobione); $sql = "INSERT INTO `category_movies` (`id_movie`, `id_category`) VALUES $category_sql_values";
mysql_query($sql) or die('<br /><br />ZAPYTANIE: '.$sql.'BŁĄD: '.mysql_error());
$sql = "INSERT INTO `views`(`id`,`id_filmu`) VALUES (NULL, $last_id);"; mysql_query($sql) or die('<br /><br />ZAPYTANIE: '.$sql.'BŁĄD: '.mysql_error());
if(isset($usun)){
unlink($lokalizacja.basename($obrazek));
}
$operacjaOk = 'Film został poprawnie dodany. Nie bawem zostanie sprawdzony przez moderatorów i zaakceptowany<br />
Za chwilę zostaniesz przeniesiony.';
formOdpowiadacz($operacjaOk, true);
?>
<?php
$pokaz_form = 0;
}
?>
tzn wpisuje film do bazy
2011-04-12 14:46:58
Post #7
nospor
No ale jak powstaje $tytul_pl, $tytul ? Nie przepuszczasz tego przypadkiem przez coś? Czy tytuł jest "dziwny", gdy zawiera polskie litery?
2011-04-12 16:57:12
Post #8
korey
To postaje zaraz po obrobieniu przez foreach() w wyżej napisanym kodzie. teraz daje extract($_POST);
wtedy lasnie powstaje $tytul_pl, $tytul i reszta.
przed zapianie sprawdzam pola w taki sposób:
1
2
3
4
5
6
7
8
9
10
<?php if(empty($orginalny_tytul) || empty($tytul_pl) || empty($produkcja)){
$error[] = 'Pole Orginalny tytuł, Polski tytuł, bądź produkcja nie zostało uzupełnione';
}
else if(strlen($orginalny_tytul)>255 || strlen($tytul_pl)>255 || strlen($produkcja)>255){
$error[] = 'Maksymalna ilođ znaków to 255';
}
else{
} ?>
W sumie to przy tym tylko empty() używam
2011-04-13 11:05:49
Post #9
nospor
Ponawiam pytanie: czy to dziwo robi się tylko przy tytułach, które mają polskie litery?
2011-04-13 12:09:00
Post #10
korey
tak. tylko w tytułach które zawierają polskie znaki
2011-04-14 08:28:59
Post #11
nospor
A przed zapisame do bazy, to ten tytuł wyświetla się dobrze?
2011-04-14 10:39:52
Post #12
korey
no ja daje echo po wysłaniu formularza i wyłączeniu zapytania to jest jak trzeba
2011-04-14 10:46:14
Post #13
nospor
No to ja sie poddaję.
Jedyna rzecz, która mnie niepokoi to utf8_bin o którym już ci pisałem w pierwszym poście. Nie wiem jak się to zachowuje, nigdy tego nie używałem
2011-04-14 11:06:02
Post #14
korey
no ale w wyszukiwaniu to moze stanowić jakis problem, skoro filmy wyswietla jak trzeba.?
2011-04-14 11:15:46
Post #15
nospor
Nie wiem, sprawdź
2011-04-14 13:51:55
Post #16
korey
Wyczerpująca odp ;p
2011-04-14 13:56:55
Post #17
nospor
No co? Minutkę ci zajmie sprawdzenie. A ja naprawdę nie wiem
2011-04-14 19:55:49
Post #18
Comandeer
Hmm... jeśli się źle zapisuje w bazie, a wszędzie indziej jest dobrze, to może baza w zapytaniach używa czegoś innego niż UTF-8? Spróbuj walnąć tuż po połączeniu z bazą
1
mysql_query("set names 'utf-8'");
Osobiście też używam UTF-8 bin i nigdy nie było problemów (osobiście te tytuły polskie to mi się z hashami kojarzą

)
Odpowiedz