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);//usuwamy białe znaki
          
if (get_magic_quotes_gpc()) 
              
$wartosc=is_array($wartosc)?array_map('stripslashes',$wartosc):stripslashes($wartosc);
        
$wartosc=is_array($wartosc)?array_map('htmlspecialchars',$wartosc):htmlspecialchars($wartoscENT_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);

/*    id
    -- tytul_first
    -- tytul_pl
    -- tytul_org
    -- kategoria
    + produkcja
    + data_premiery
    -- jakosc
    -- format
    -- jezyk
    opis1
    opis2
    + obsada
    + inne
    -- plakat
    + links
*/
    
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)){
//Dodaje film
$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(); //Ostatnie od dodane do bazy z filmami

 
$razem count($category_movie);//wszystkie kategorie
for($a=0$a $razem$a++){
$obrobione[]='('.$last_id.', '.$category_movie[$a].')';// obrabiamy w nawias i tworzymy tabele
}
$category_sql_values implode(", "$obrobione); //rozdzielamy każdy element tabeli przecinkiem



//dodaje kategorie
$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());


//dodaje Licznik VIEWS
$sql "INSERT INTO `views`(`id`,`id_filmu`) VALUES (NULL, $last_id);"//tworzymy rekord do wgranego filmu
mysql_query($sql) or die('<br /><br />ZAPYTANIE: '.$sql.'BŁĄD: '.mysql_error());



// Po udanej operacji dodania filmu usówamy tymczasowy plik
if(isset($usun)){
 
unlink($lokalizacja.basename($obrazek));
}
// oddajemy komunikt
$operacjaOk 'Film został poprawnie dodany. Nie bawem zostanie sprawdzony przez moderatorów i zaakceptowany<br />
Za chwilę zostaniesz przeniesiony.'
;
formOdpowiadacz($operacjaOktrue);
?>
<?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 // Sprawdzamy orginalny tytuł, polski tztu i produkcje
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{
// ok
?>
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