Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[SOLVED]Kodowanie znaków w bazie
#1
Pany... poczytajta chwile...

Jest baza danych. Są w niej newsy i takie tam duperele.
Cała baza danych ma ustawione kodowanie utf8_unicode_ci
Oprócz tego pole, w którym znajduje się treść newsa, oraz pole mające tytuł newsa mają ustawiony system porównywania utf8_unicode_ci
informacja naglowkowa to:
Kod:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
wiec dlaczego kurde blaszka w miejscu polskich znaków są tylko śmieszne znaczki zapytania w takich kwadracikach ;|

ok już mi się udało, wystarczyło dodać:
$zmienna = mysql_query('SET NAMES utf8');
przed zapytaniem do bazy.

A nie wie ktoś może, dlaczego jeśli jest najprostsze zapytanie: SELECT * FROM news to wybiera mi wszystko, orpócz pierwszego wiersza ? i jak tamu zaradzić w wypadku wypisywania danych za pomocą pętli while ?
Odpowiedz
#2
no a jak wyswietlasz to z bazy ?
ja to robie tak np i hula
Kod PHP:
<?
$artykuly 
mysql_query("SELECT * FROM artykuly ORDER BY id ASC");
$ilosc mysql_num_rows($artykuly);
if ( 
$ilosc == )
    {
    echo 
"Brak artów w serwisie !<br />";
    }
    else
    {
    while (
$licznik mysql_fetch_array($artykuly))
        {
        
//wyswietlanie pierdół ;)
         
}
?>
Cytat:Wyrazić to co czuję , zabrakło by tyle słów....
Odpowiedz
#3
no a ja to robie dokladnie tak samo, i wyswietla wszystko lasnie, ale bez pierwszego wiersza z bazy. dziwne... wiem ;p no ale zawsze moge mieć po prostu jakiś niepotrzebny wpis na początku bazy i wsio
Odpowiedz
#4
a pokaz kod jak wyswietlasz Smile
Cytat:Wyrazić to co czuję , zabrakło by tyle słów....
Odpowiedz
#5
Kod:
$zapytanie = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT 5");
                        $wiersz = mysql_fetch_assoc($zapytanie);
                        while ($wiersz = mysql_fetch_array($zapytanie)){
                                echo "<div id='jedennews'>";
                                echo "<div id='newsheader'>" . $wiersz['tytul'] . "</div>" ;
                                echo "<div id='data'>" . $wiersz['data'] . "</div>";
                                echo "<div id='txt'>" . $wiersz['tresc'] . "</div>";
                                echo "<div id='rybki'></div>";
                                echo "</div>";
                        }

kurde... jednak to nie tak jak do konca myslalem...
przy wysietlaniu ZAWSZE brakuje najnowszego wiersza (najpóźniej dodanego). jakby to byl najstarszy wiersz to pol biedy, ale z tym musze sobie poradzic. Wie ktos moze dlaczego ?
I przy okazji, moze to cos da, jesli daje LIMIT 5, tak jak np. w tym wypadku wyżej, to zawsze wyświetla tylko 4. Nigdy nie ma tego najnowszego (bo sortowanie jest wedlug daty, ktora ustawiona jest na CURRENT_TIMESTAMP)
Odpowiedz
#6
Może
Kod:
"SELECT * FROM news ORDER BY id DESC LIMIT 0, 5"
Odpowiedz
#7
ja to sobie stronicuje newsy pokażę ci cały mój plik bo nie mam czasu wyodrębnić ( szkoła ;/ )

Kod PHP:
function wyswietl()
{

$page  $_GET['page'];
$na_stronie 2//ilosc newsów na stronie :)
if (!isset($page)) 
    {
    
$page 0;
    }
$newsy mysql_query("SELECT * FROM news");
$ile   mysql_num_rows($newsy);
$newsy2 mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT  ".$page.",".$na_stronie."");

if ( 
$ile == 0)
    {
    echo 
"Brak newsów w serwisie";
    }
    else
    {
    include_once 
'dodatki.php';
    while(
$licznik mysql_fetch_array($newsy2))
        {
        
        echo 
'<div class="nowosc">';
        echo 
'<div class="nagloweknewsa">';
        echo 
emotki("<strong>".$licznik['tytul']."</strong>");
        echo 
"</div>";
        echo 
"<p>";
        echo 
emotki($licznik['tresc']);
        echo 
"</p>";
        echo 
"<div>";
        if (
$licznik['dlugatresc'])
            {        
            echo 
"<small><a href='../?strona=czytajwiecej&id=".$licznik['id']."'>czytaj więcej</a>(".$licznik['czytan'].")</small>";
            }
            
        echo 
$licznik['data'];
        echo 
"</div>";
        echo 
"</div>";
        }
        if(
$ile>$na_stronie
        {
        echo 
'<div class="stronicowanie"><p>';
        echo 
'<b>Strona:</b> ';
        for(
$licz=0$licz<ceil($ile/$na_stronie); $licz++)
        if (
$licz*$na_stronie == $page)
            {
            echo 
'<b>[ '.($licz+1).' ]</b>| ';
            }
            else
            {
            echo 
'<a href="news,strona,'.($licz*$na_stronie).'">'.($licz+1).'</a> | ';
            }
        echo 
"</p></div>";
        } 
        
    }

no to ja robie tak Smile
Cytat:Wyrazić to co czuję , zabrakło by tyle słów....
Odpowiedz
#8
Już próbowałem wcześniej ustalać na LIMIT 0 , 5 i nie działa dalej.
No pojęcia żadnego nie mam czemu tak...
kancik też średnio mam czas na robienie takich rzeczy aktualnie przez szkołe ;>
ehh... poniżej screen z phpmyadmin
[Obrazek: newsh.jpg]
tak wygląda struktura bazy - specjalnie nowa utworzona... nic nie pomogło
przy zapytaniu:
SELECT * FROM newsy
wyswietla jeden wpis na dwa. wiec nie wiem gdzie moze lezec przyczyna
No masakra, zredukowałem co mogłem. Stworzyłem specjalnie nową stronę, a oto jej treść:
Kod:
<?php

        require_once("naglowek.php");
        
        include("polaczenie.php");
        
        $zapytanie = mysql_query("SELECT * FROM newsy");
                        $wiersz = mysql_fetch_assoc($zapytanie);
                        while ($wiersz = mysql_fetch_array($zapytanie)){
                        echo $wiersz['tytul'];
                        echo $wiersz['data'];
                        echo $wiersz['tresc'];
                        }
                        
        
        require_once("stopka.php");


?>

totalne minimum i wyświetla tylko jednego newsa tego pierwszego dodanego
Odpowiedz
#9
Kod:
<?php

        require_once("naglowek.php");
        
        include("polaczenie.php");


$zapytanie ="SELECT * FROM `news` ORDER BY `id` ASC LIMIT 0, 5";
$wpisy = mysql_query($zapytanie);
while($wiersz = mysql_fetch_array($wpisy)) {
    echo $wiersz['tytul'];
            echo $wiersz['data'];
            echo $wiersz['tresc'];
}
       require_once("stopka.php");
?>

Z góry mówię, że piszę z pamięci i zwykle działam obiektowo. Mam nadzieję że nic nie pomyliłem.
Odpowiedz
#10
Poprawiłem i na taki sposób, choć to praktycznie to samo, dodałem linijkę, którą pominąłeś ($wiersz = mysql_fetch_assoc($wpisy));

i uwaga uwaga... NIE DZIAŁA
no kurdeee
dodam tylko cenną wskazówkę: ciągle dzieje się to samo.

Porobiłem nawet najprostsze bazy ktore maja tylko pole id tytul i tresc i nawet kiedy chce sie odwolac zapytaniem: SELECT * FROM newsy WHERE id='X'
to i tak mi to nie działa. Znaczy się wówczas nic się nie wyświtla.

linijka o ktorej mowilem jest wlasnie nieprawidlowa, sprawia cale zamieszanie ($wiersz = mysql_fetch_assoc($wpisy))
po usunieciu jej juz wszystko dziala jak nalezy !
dzieki wielkie chlopaki
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Jak sprawdzić czy adres www znajduje sie w bazie mysql? jarekcda 8 9,040 13-05-2017, 01:02
Ostatni post: miketodson255
  Złe kodowanie po imporcie bazy lomek 5 4,593 16-10-2012, 16:58
Ostatni post: tomekk
  Edycja rekordów w bazie MYSQL Smarth 4 3,883 20-02-2012, 02:26
Ostatni post: Pedro84
  Problem z ciągiem znaków zoom24 1 2,016 23-01-2012, 18:52
Ostatni post: uriziel01
Smile Rola w bazie danych Smarth 1 1,623 21-01-2012, 04:51
Ostatni post: Pedro84

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl