Ajaxos eseménynaptárnál karakterkódolási hiba, mysql ba..
Üdv!
Van egy ajaxos eseménynaptáram, de annyi problémám van vele, hogy az ékezetes betűket így írja be az adatbázisba:
űűűáááééúúő helyett ŹŹŹåååÊÊúúĹ�
az adatbázisba, ahol a szöveget tárolom, annak a mezőnek a karakterkódolása: latin2_general_ci
Hozzá kell tenni, hogy máshol jó az ékezet, csak ennél nem, de ha én írom be a phpmyadminba az ékezetes betűt, akkor jól jeleníti meg.
Szóval a beírással van a gond. na igen, ez úgy működik hogy egyik php átadja a másiknak a beírt szöveget ajax-al.
és én arra gyanakszok, hogy itt rontja el az ékezeteket..
Próbáltam már a lekérdezésnél UTF8 , LATIN2 , stb.. de egyikel se lett jó.
Szóval a beírást kéne megcsinálni, hogy ékezetesen írja be..
Kiszedtem a scriptből, így csak azt osztom meg, ami ehhez szükséges:
index.php (form):index.php (javascript):rpc.php (beszúrás az adatbázisba):rpc.php (lekérdezés, a SET NAMES-nál már többel is próbálkoztam, és egyik se lett jó.. [LATIN2, UTF8]):próbálkoztam -al is, de nem változtatott a problémán..
Mi lehet a probléma?
■ Van egy ajaxos eseménynaptáram, de annyi problémám van vele, hogy az ékezetes betűket így írja be az adatbázisba:
űűűáááééúúő helyett ŹŹŹåååÊÊúúĹ�
az adatbázisba, ahol a szöveget tárolom, annak a mezőnek a karakterkódolása: latin2_general_ci
Hozzá kell tenni, hogy máshol jó az ékezet, csak ennél nem, de ha én írom be a phpmyadminba az ékezetes betűt, akkor jól jeleníti meg.
Szóval a beírással van a gond. na igen, ez úgy működik hogy egyik php átadja a másiknak a beírt szöveget ajax-al.
és én arra gyanakszok, hogy itt rontja el az ékezeteket..
Próbáltam már a lekérdezésnél UTF8 , LATIN2 , stb.. de egyikel se lett jó.
Szóval a beírást kéne megcsinálni, hogy ékezetesen írja be..
Kiszedtem a scriptből, így csak azt osztom meg, ami ehhez szükséges:
index.php (form):
<div style="display: none; margin-top: 10px;" id="addEventForm">
<b>Új esemény</b>
<br>
Date: <input type="text" size="2" id="evtDay" disabled> <input type="text" size="2" id="evtMonth" disabled> <input type="text" size="4" id="evtYear" disabled>
<br>
<textarea name="szoveg" id="evtBody" cols="32" rows="5"></textarea>
<br>
<input type="button" value="Új esemény" onClick="addEvent($F('evtDay'), $F('evtMonth'), $F('evtYear'), $F('evtBody'));">
</div>
<script type="text/javascript">
function highlightCalendarCell(element) {
$(element).style.border = '1px solid #999999';
}
function resetCalendarCell(element) {
$(element).style.border = '1px solid #000000';
}
function startCalendar(month, year) {
new Ajax.Updater('calendarInternal', 'rpc.php', {method: 'post', postBody: 'action=startCalendar&month='+month+'&year='+year+''});
}
function showEventForm(day) {
$('evtDay').value = day;
$('evtMonth').value = $F('ccMonth');
$('evtYear').value = $F('ccYear');
displayEvents(day, $F('ccMonth'), $F('ccYear'));
if(Element.visible('addEventForm')) {
// do nothing.
} else {
Element.show('addEventForm');
}
}
function displayEvents(day, month, year) {
new Ajax.Updater('eventList', 'rpc.php', {method: 'post', postBody: 'action=listEvents&&d='+day+'&m='+month+'&y='+year+''});
if(Element.visible('eventList')) {
// do nothing, its already visble.
} else {
setTimeout("Element.show('eventList')", 300);
}
}
function addEvent(day, month, year, body) {
if(day && month && year && body) {
// alert('Add Event\nDay: '+day+'\nMonth: '+month+'\nYear: '+year+'\nBody: '+body);
new Ajax.Request('rpc.php', {method: 'post', postBody: 'action=addEvent&d='+day+'&m='+month+'&y='+year+'&body='+body+'', onSuccess: highlightEvent(day)});
$('evtBody').value = '';
} else {
alert('There was an unexpected script error.\nPlease ensure that you have not altered parts of it.');
}
// highlightEvent(day);
} // addEvent.
function highlightEvent(day) {
Element.hide('addEventForm');
$('calendarDay_'+day+'').style.background = '#<?= $eventColor ?>';
}
function showCP() {
Element.show('cpBox');
}
function deleteEvent(eid) {
confirmation = confirm('Are you sure you wish to delete this event?\n\nOnce the event is deleted, it is gone forever!');
if(confirmation == true) {
new Ajax.Request('rpc.php', {method: 'post', postBody: 'action=deleteEvent&eid='+eid+'', onSuccess: Element.hide('event_'+eid+'')});
} else {
// Do not delete it!.
}
}
</script>
case 'addEvent':
$day = $_POST['d'];
$month = $_POST['m'];
$year = $_POST['y'];
$body = $_POST['body'];
$timeStamp = mktime(0,0,0, $month, $day, $year);
$bodyF = addslashes(trim($body));
mysql_query("INSERT INTO event (text, timestamp) VALUES ('$body', '$timeStamp')");
break;
case 'listEvents':
$day = $_POST['d'];
$month = $_POST['m'];
$year = $_POST['y'];
$timeStamp = mktime(0,0,0, $month, $day, $year);
$eventQuery = mysql_query("SET NAMES `LATIN2` COLLATE `latin2_general_ci`");
$eventQuery = mysql_query("SELECT id, text FROM event WHERE timestamp='$timeStamp' ORDER BY id DESC");
if($eventQuery) {
if(mysql_num_rows($eventQuery) >0) {
echo '<br><b>Események a következő napra: '. date("Y", $timeStamp) .'/'. date("m", $timeStamp) .'/'. date("d", $timeStamp) .'</b>';
for($i=0; $i<mysql_num_rows($eventQuery); $i++) {
if($i % 2) { $bgColor = '#'. $iteratorColor1 .''; } else { $bgColor='#'. $iteratorColor2 .''; }
extract(mysql_fetch_array($eventQuery), EXTR_PREFIX_ALL, 'e');
if($_SESSION[admin_session] == "true") {
echo '<div style="background-color: '. $bgColor .'; margin-bottom: 4px; padding: 1px;" id="event_'.$e_id.'">
<div>
'. nl2br($e_text) .'
</div>
<div style="font-size: 9px;">
<span style="color: blue; text-decoration: underline; cursor: pointer;" onClick="deleteEvent('.$e_id.')">
Delete this event
</span>
</div></div>';
} else {
echo '<div style="background-color: '. $bgColor .'; margin-bottom: 4px; padding: 1px;">
'. nl2br($e_text) .'
</div>';
}
} // for.
} else {
echo 'Erre a napra nincs esemény bejegyezve!';
}
} else {
echo 'Hiba az adatok lekérdezésekor!';
}
break;
<meta content="text/html; charset=ISO-8859-2" http-equiv="content-type">
Mi lehet a probléma?
Karakterkódolás
Ha ez mind megvan, akkor elvileg jól kellene menjen. Vegyes karakterkódolásokkal már több baj van.
thx
teljesen átalakítottam, kiszedtem belőle az ajax részt és mostmár tökéletes