Jump to content

Recommended Posts

Posted

έφτιαξα μία φόρμα στην όποια μέσω PHP καταχωρώ νέες εγγραφές σε μία βάση δεδομένων στην mysql

 

unledyi.png

 

αλλά όποτε καταχωρώ μέσω του site μια νέα εγγραφή με Ελληνικούς χαρακτήρες όπως βλέπετε στην mysql τους εμφανίζει με ερωτημάτικα αν και έχω αλλάξει την κωδικοποίηση στις PHP σελίδες σε UTF8 όπως έχω αλλάξει και την κωδικοποήση στην mysql σε UTF8

 

ξέρει κάνεις τι πρέπει να κάνω για να το διορθώσω?

Posted

Αν μπορείς δώσε μας τον κώδικα που που βάζεις κάθε καταχώρηση μέσα στην db.

Posted

ορίστε

 

<?php

 

$con=mysql_connect("localhost","developer","javalab");

if(!$con)

{

die('Δεν έγινε η σύνδεση με την βάση δεδομένων'.mysql_error());

}

 

mysql_select_db("cycladestravel", $con);

 

$sql="INSERT INTO travels(travel_id,travel_destination,travel_description,travel_price) VALUES

('$_POST[tID]','$_POST[tDestination]','$_POST[tDescription]','$_POST[tPrice]')";

mysql_set_charset('utf-8');

mysql_query("SET NAMES 'utf8';", $con);

mysql_query("SET CHARACTER SET 'UTF8';", $con);

if (!mysql_query($sql, $con))

{

die('Σφάλμα: ' . mysql_error());

}

 

echo " 1 εγγραφή καταχωρήθηκε ";

 

mysql_close($con)

?>

Posted

Δοκίμασε όπως φτιάχνεις το table να το ορίσεις κάπως έτσι:

 


CREATE TABLE IF NOT EXISTS `travels` (
  `travel_id` int(11) NOT NULL auto_increment,
  `travel_destination` varchar(255) collate utf8_unicode_ci NOT NULL,
  `travel_description` varchar(255) collate utf8_unicode_ci NOT NULL,
  `travel_price` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

 

Είναι πολύ βασικό επίσης να έχεις βάλει τα σωστά charsets και στις σελίδες που προβάλλονται τα records.

Posted

Δοκίμασε όπως φτιάχνεις το table να το ορίσεις κάπως έτσι:

 


CREATE TABLE IF NOT EXISTS `travels` (
  `travel_id` int(11) NOT NULL auto_increment,
  `travel_destination` varchar(255) collate utf8_unicode_ci NOT NULL,
  `travel_description` varchar(255) collate utf8_unicode_ci NOT NULL,
  `travel_price` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

 

Είναι πολύ βασικό επίσης να έχεις βάλει τα σωστά charsets και στις σελίδες που προβάλλονται τα records.

to dokimasa afto kai akoma to idio provlima iparxei kai epeisis oles i php selides exoun charset utf8

Posted

Μόνο στην db έχεις το πρόβλημα με το πως εμφανίζονται, ή και στην ιστοσελίδα που προβάλλεις τα records;

Posted

στην σέλιδα που προβάλω τα records εμφανίζονται κανονικά εκτός βέβαια αυτά τα οποία στην mysql εμφανίζονται με ??

Posted

στην σέλιδα που προβάλω τα records εμφανίζονται κανονικά εκτός βέβαια αυτά τα οποία στην mysql εμφανίζονται με ??

 

kita afou sta dixni stin selida mia xara logika kati pezei me to programa pou blepis tin db sou.

 

Posted

kita afou sta dixni stin selida mia xara logika kati pezei me to programa pou blepis tin db sou.

 

 

Αυτό ακριβώς. Άμα κάνεις τη δουλειά σου στην ιστοσελίδα, είσαι gg.

Posted

Αυτό ακριβώς. Άμα κάνεις τη δουλειά σου στην ιστοσελίδα, είσαι gg.

oxi den katalaves enow oses eggrafes exw kataxorisi me elinikous xaraktires stin db apo tin mysql tous emfanizei kanonika sto site alla an kanw kataxorisi apo to site me elinikous xaraktires tote kai stin mysql kai sto site tous emfanizei me erotimatika

Posted

μετα το connection με την database σου, βαλε

mysql_query("SET NAMES UTF8");

 

οταν κανεις POST data στο column travel_description,

απλα κανε escape το text μεσω του mysql_real_escape_string()

 

οταν το εμφανιζεις,

χρησιμοποιεισαι στο text για να διαβασει σε UTF-8

διαβασε περισσοτερο για to function αυτο στο php.net

$text = htmlentities($text, ENT_COMPAT, 'UTF-8');

 

πρεπει παντα να χρησιμοποεις UTF8(MySQL) και UTF-8(Browser) encoding.

επισης στο <head> tag βαλε

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

εαν εχεις και παλι προβλημα, reply.

Posted

evala to

mysql_query("SET NAMES UTF8");

 

kai to

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

alla den exw idea pou na valw to

$text = htmlentities($text, ENT_COMPAT, 'UTF-8');

 

kai pos na xrisimopoihso to  mysql_real_escape_string()

Posted

εφοσον εχεις μια φορμα που κανεις POST στην database σου, οταν πατησεις το button της φορμας σου και πριν βαλεις τα data μεσω του mysql_query("INSERT INTO ....");

 

οτιδηποτε μεταβλητη θα την περνας μεσω του

mysql_real_escape_string()

π.χ $text = mysql_real_escape_string($text); // εαν βαλω π.χ '1' or '' θα το κανει escape => \'1\' or \'\' ετσι ωστε να αποφυγεις το SQL injection

 

εαν θες να εμφανισεις κατι που ειναι se foreign characters, πρεπει να το τρεξεις μεσω του htmlentities($text, ENT_COMPAT, 'UTF-8') , ετσι ωστε να κανει encode ολους τους χαρακτηρες...

 

εαν παλι εχεις προβλημα, ποσταρε το μερος του κωδικα που χρησιμοποιεις για αυτη την λειτουργια

Posted

επείδη δεν βλέπω να βγάζω άκρη :)

 

 

<?php

 

$con=mysql_connect("localhost","developer","javalab");

mysql_query("SET NAMES UTF8");

if(!$con)

{

die('Δεν έγινε η σύνδεση με την βάση δεδομένων'.mysql_error());

}

 

mysql_select_db("cycladestravel", $con);

$sql="INSERT INTO travels(travel_id,travel_destination,travel_description,travel_price) VALUES

('$_POST[tID]','$_POST[tDestination]','$_POST[tDescription]','$_POST[tPrice]')";

mysql_set_charset('utf-8');

mysql_query("SET NAMES 'utf8';", $con);

mysql_query("SET CHARACTER SET 'UTF8';", $con);

if (!mysql_query($sql, $con))

{

die('Σφάλμα: ' . mysql_error());

}

 

echo " 1 εγγραφή καταχωρήθηκε ";

 

mysql_close($con)

?>

Posted

επείδη δεν βλέπω να βγάζω άκρη :)

 

 

<?php

 

$con=mysql_connect("localhost","developer","javalab");

mysql_query("SET NAMES UTF8");

if(!$con)

{

die('Δεν έγινε η σύνδεση με την βάση δεδομένων'.mysql_error());

}

 

mysql_select_db("cycladestravel", $con);

$sql="INSERT INTO travels(travel_id,travel_destination,travel_description,travel_price) VALUES

('$_POST[tID]','$_POST[tDestination]','$_POST[tDescription]','$_POST[tPrice]')";

mysql_set_charset('utf-8');

mysql_query("SET NAMES 'utf8';", $con);

mysql_query("SET CHARACTER SET 'UTF8';", $con);

if (!mysql_query($sql, $con))

{

die('Σφάλμα: ' . mysql_error());

}

 

echo " 1 εγγραφή καταχωρήθηκε ";

 

mysql_close($con)

?>

 

εφοσον δεν εμφανιζεις τιποτα αλλα κανεις post μονο, το htmlentities δεν το χρειαζεσαι.

 

Δοκιμασε τον παρακατω κωδικα:

<?php

 

$con=mysql_connect("localhost","developer","javalab");

mysql_query("SET NAMES UTF8");

if(!$con)

{

  die('Δεν έγινε η σύνδεση με την βάση δεδομένων'.mysql_error());

}

 

mysql_select_db("cycladestravel", $con);

$tID = $_POST["tID"];

$tDestination = $_POST["tDestination"];

$tDestination = mysql_real_escape_string($tDestination);

$tDescription = $_POST["tDescription"];

$tDescription = mysql_real_escape_string($tDescription);

$tPrice = $_POST["tPrice"];

$sql="INSERT INTO travels(travel_id,travel_destination,travel_description,travel_price) VALUES

('$tID','$tDestination','$tDescription','$tPrice')";

if (!mysql_query($sql, $con))

{

  die('Σφάλμα: ' . mysql_error());

}

 

echo " 1 εγγραφή καταχωρήθηκε ";

 

mysql_close($con)

?>

 

επεισης , δες αν η database σου ειναι utf8_unicode_ci οπως και ολα τα tables σου, τα columns που εχουν κειμενο

και οπως ειπα και να βαλεις και το meta tag

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

μετα το head tag.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...