ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
nir2149לא בפורום כעת ת.הצטרפות: 27/02/2010 · הודעות: 18 ·
 

הודעה פורסם: 26/06/2014 - 14:38
נושא ההודעה: מנסה להכניס נתונים דרך PHP לבסיס נתונים MYSQL ונכנס זבל

הי שלום לכולם .

הגדרתי database (ששמו heb3) ב utf8_general_ci ןכמובן הטבלה שלי h1 גם כן מוגדרת ככה

והנה הקוד:

קוד:

<html>
<head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8" />

<title>Insert title here</title>
</head>
<body>

<?php
header('Content-Type: text/html; charset=utf-8');
$con=mysqli_connect("localhost","root","123456","heb3");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysql_query("SET NAMES 'utf8'");

// escape variables for security
$firstname = mysqli_real_escape_string($con, $_POST['title']);
$lastname = mysqli_real_escape_string($con, $_POST['editor']);

$sql="INSERT INTO h1 (n1, n2, n3)
VALUES ('$firstname', '$lastname', 'XXX')";

if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}
echo "1 record added";

mysqli_close($con);

?>


</body>
</html>


הבעיה שבמקום עיברית נכנס זבל . ובדקתי את הקידוד במשתנים firstname and lastname וזה אכן utf-8 (באמצעות mb_detect_encoding) וכמובן גם קובץ ה PHP נשמר כ UTF-8 . למישהו יש מושג למה הוא מכניס לי זבל?

_________________
fedora 16 verne , kernel 3.3 rc2
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
mad_dr unpluggedאורח · ·
 

הודעה פורסם: 26/06/2014 - 19:09
נושא ההודעה:

קצת קשה לבדד מהפלאפון, רק שמתי לב לheader שלך שלא מתבצע.
ההדר חייב להיות לפני שמשהו נכתב לב אפר. הטקסט לפני תגית הphp נכתב לב אפר לפני שההדר נקרא.
מקווה שזה מספיק ברורWink
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
mad_dr unplugged‏אורח · ·
 

הודעה פורסם: 26/06/2014 - 20:53
נושא ההודעה:

יש מצב שהבעיה רק בקליינט שאתה מסתכל בו, אצלי זה עובד.
עשיתי מעט שינויים בקוד, אבל הם לא מה שעשו את ההבדל:
קוד:
<?php
header('Content-Type: text/html; charset=utf-8');

print '<html>
    <head>
        <meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8" />

        <title>Insert title here</title>
    </head>
    <body>
   
        <form method="post">
            <input name="title" placeholder="Title"/>
            <input name="editor" placeholder="Editor"/>
            <input type="submit"/>
        </form>';

$con=mysqli_connect("localhost","root","b0oo34","heb3");
// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
} else {
    mysqli_query($con, "SET NAMES 'utf8'");

    // escape variables for security
    $firstname = mysqli_real_escape_string($con, $_POST['title']);
    $lastname = mysqli_real_escape_string($con, $_POST['editor']);

    $sql="INSERT INTO h1 (n1, n2, n3)
    VALUES ('$firstname', '$lastname', 'XXX')";

    if (!mysqli_query($con,$sql)) {
        die('Error: ' . mysqli_error($con));
    }
    echo "1 record added<br />";

    mysqli_close($con);
}

print '
    </body>
</html>';


וכדי לקרוא את הטבלה:
קוד:
<?php
header('Content-Type: text/html; charset=utf-8');

print '<html>
    <head>
        <meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8" />

        <title>Insert title here</title>
    </head>
    <body>
   
        <form method="post">
            <input name="title" placeholder="Title"/>
            <input name="editor" placeholder="Editor"/>
            <input type="submit"/>
        </form>';

$con=mysqli_connect("localhost","root","b0oo34","heb3");
// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
} else {
    if ($result = mysqli_query($con, "select * from h1")) {
        print "<table>\n";
        while ($row = mysqli_fetch_assoc($result)) {
            printf ("<tr><td>%s</td><td>%s</td><td>%s</td></tr>\n", $row["n1"], $row["n2"], $row["n3"]);
        }
        print "</table>\n";
    } else {
        print "no result!";
    }

    mysqli_close($con);
}

print '
    </body>
</html>';


ההדרות במסד הנתונים:
קוד:
mysql> show create database heb3\G
*************************** 1. row ***************************
       Database: heb3
Create Database: CREATE DATABASE `heb3` /*!40100 DEFAULT CHARACTER SET utf8 */
1 row in set (0.00 sec)

mysql> show create table h1\G
*************************** 1. row ***************************
       Table: h1
Create Table: CREATE TABLE `h1` (
  `n1` char(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `n2` char(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `n3` char(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
SoOmSoOmלא בפורום כעת ת.הצטרפות: 31/08/2005 · הודעות: 627 ·
 

הודעה פורסם: 27/06/2014 - 10:11
נושא ההודעה:

כמה דברים:
1) שים לב שהחל מהגרסאות הבאת של PHP ההתחברות למסד הנתונים והשימוש בהם יעשה דרך PDO, ממליץ לך להכנס לאתר של PHP ולקרוא על זה.

2) אין צורך ב
קוד:
header('Content-Type: text/html; charset=utf-8'); 

כאשר יש לך את:
קוד:
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8" />
.
זה עושה אותו הדבר (אומר לדפדפן באיזה קידוד להשתמש).
אז אפשר לוותר על אחד מהם, אני הייתי מוותר על הheader().

3) אין לך פה בכלל תנאי שבודק אם יש ערכי $_POST. זה כאילו אתה ממלא כל הזמן את המסד נתונים שלך בזבל, אתה גם כל הזמן מתחבר אליהם כשלא צריך.

4)
מה זה?
קוד:
mysqli_query($con, "SET NAMES 'utf8'");

לא חושב שצריך את זה. הרי כבר כל הטבלה מוגדרת על שמירת ערכים בקידוד UTF8

5) אני הייתי בכלל מוציא מprint את כל התאגי HTML ואז בbody הייתי מכניס קוד PHP.
זה יעשה לך גם קצת סדר עם כל העניין של הקידוד, וגם סדר בקוד.

אני תמיד מעדיף שהhead של הHTML ירוץ לפני שהשרת יריץ לי קוד PHP וישלח נתונים לקליינט.
מכיוון שככה אני אדע בוודאות שכל מה שהכנסתי בHEAD ייושם בדפדפן.
אלא אם כן מדובר בדף PHP שמריץ פקודות PHP בלבד ולא מוציא פלט.

אם אתה עדיין רואה שיש בעיות אני פה Smile מוכן לעזור.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
nir2149לא בפורום כעת ת.הצטרפות: 27/02/2010 · הודעות: 18 ·
 

הודעה פורסם: 27/06/2014 - 11:07
נושא ההודעה:

תודה רבה .מעריך את עזרתכם

_________________
fedora 16 verne , kernel 3.3 rc2
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. nir2149
  2. אורח [mad_dr unplugged]
  3. אורח [mad_dr unplugged‏]
  4. SoOmSoOm
  5. nir2149