לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי         אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
האשכול נעול
 
כלי אשכול חפש באשכול זה



  #5  
ישן 23-07-2013, 08:51
  תוכניתן תוכניתן אינו מחובר  
 
חבר מתאריך: 07.10.08
הודעות: 193
בתגובה להודעה מספר 4 שנכתבה על ידי שימי שמתחילה ב "שוב לא כתבת לנו את..."

ציטוט:
במקור נכתב על ידי שימי
שוב לא כתבת לנו את השאילתא.

אתה זה שכותב מה שנכנס, אתה צריך לדעת באיזה קידוד כתבת. אם זה קלט ממשתמש, זה תלוי במדיום ההכנסה. אם זה מטופס בדף אינטרנט, אז הדף צריך להיות utf-8 וכדאי גם לשים מאפיין accept-charset בהגדרת הטופס..

קוד PHP:
 השאילתה 
$query 
"INSERT INTO `stag`  (id,bb) VALUES  ('$id','$bbb')"
result mysql_query($query)or die("Query failed: " mysql_error()); 

המשתנה $bbb מייצג מחרוזת
המשתנה $id מייצג מספר
אם אני מנסה להכניס ל2 העמודות את המשתנה $id זה עובד
אם אני מנסה להכניס ל 2 העמודות את המשתנה $bbb זה לא עובד.....
משמע שהמחרוזת של $bbb יש בה בעיה

עכשיו...את הנתונים אני מקבל מקובץ CSV שאני קורא...
זה בעמוד CSV שאני קורא כדי להכניס למסד נתונים
את הטבלה קודדתי ב UTF 8 ואת המסד קודדתי ב UTF8

אם אני מוחק את השורה
קוד PHP:
 mysql_query("SET NAMES 'UTF8'"); 


שהיא מופיע לפני השאילתה הכל עובד טוב

אז כיוון שהטקסט נלקח מ CSV איך אני בודק וממיר את הקידוד שלו ל UTF8 אם זה אכן הבעיה

עכשיו רשמתי בשורה שלפני ההכנסה למסד
קוד PHP:
 $bbb=iconv_set_encoding($bbb"UTF-8"); 
</font>
כדי להמיר ל UTF 8 וזה עדיין ניכנס ריק....

נערך לאחרונה ע"י תוכניתן בתאריך 23-07-2013 בשעה 08:58.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 23-07-2013, 19:23
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,605
בתגובה להודעה מספר 5 שנכתבה על ידי תוכניתן שמתחילה ב "[QUOTE=שימי]שוב לא כתבת לנו..."

אותי קצת מטריד שיש לך שדה שהוא מספר (id) ואתה מכניס לו מידע כאילו הוא טקסט. האם זה אומר שהגדרת את הטור בטבלה, שאמור להיות מספר, כטקסט, במקום בשדה מסוג מספרי? אם כן, למה עשית את זה...

תדפיס את התוכן של המשתנה של השאילתא, אחרי ההצבה, תראה מה קיבלת שם. כאן אני לא רואה שאילתא, אני רואה קוד שיוצר שאילתא, אולי חוקית, אולי לא, מתוכן שלא ידוע לי. אין פה קוד מלא. אין פה את קובץ הקלט. לכן, תציג לנו את השאילתא אחרי העיבוד שלה. או יותר מעניין, פשוט תיקח אותה, ותקליד אותך לתוך לקוח של mysql בשורת הפקודה (כמובן אחרי שעשית SET NAMES כמו שאתה רוצה).

לשם הפשטות שבדבר, תתחיל בתווים באנגלית ומספרים בשדה הטקסטואלי, כדי לא לבלבל את "חלונות" (שאני משער שאתה משתמש בה) עם דברים מסובכים יותר מ latin1 (לא יודע עד כמה בחלונות cmd נתמכים קידודים שונים, והאמת היא שלא בא לי להתחיל לבדוק...). ואז תראה מה MySQL החזיר כתוצאה מהרצת השאילתא דרך ה CLI שלו.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 24-07-2013, 12:21
  תוכניתן תוכניתן אינו מחובר  
 
חבר מתאריך: 07.10.08
הודעות: 193
בתגובה להודעה מספר 6 שנכתבה על ידי שימי שמתחילה ב "אותי קצת מטריד שיש לך שדה..."

ציטוט:
במקור נכתב על ידי שימי
אותי קצת מטריד שיש לך שדה שהוא מספר (id) ואתה מכניס לו מידע כאילו הוא טקסט. האם זה אומר שהגדרת את הטור בטבלה, שאמור להיות מספר, כטקסט, במקום בשדה מסוג מספרי? אם כן, למה עשית את זה...

תדפיס את התוכן של המשתנה של השאילתא, אחרי ההצבה, תראה מה קיבלת שם. כאן אני לא רואה שאילתא, אני רואה קוד שיוצר שאילתא, אולי חוקית, אולי לא, מתוכן שלא ידוע לי. אין פה קוד מלא. אין פה את קובץ הקלט. לכן, תציג לנו את השאילתא אחרי העיבוד שלה. או יותר מעניין, פשוט תיקח אותה, ותקליד אותך לתוך לקוח של mysql בשורת הפקודה (כמובן אחרי שעשית SET NAMES כמו שאתה רוצה).

לשם הפשטות שבדבר, תתחיל בתווים באנגלית ומספרים בשדה הטקסטואלי, כדי לא לבלבל את "חלונות" (שאני משער שאתה משתמש בה) עם דברים מסובכים יותר מ latin1 (לא יודע עד כמה בחלונות cmd נתמכים קידודים שונים, והאמת היא שלא בא לי להתחיל לבדוק...). ואז תראה מה MySQL החזיר כתוצאה מהרצת השאילתא דרך ה CLI שלו.

הנה
יצרתי קובץ CSV עם ערכים בעיברית
הנה הקוד שפשוט קורא אותו ומכניס למסד את המידע
המסד והקובץ מקודדים כ UTF 8

קוד PHP:
<?php
$host 
"localhost" ;
$dbuser "root" ;
$dbpass "" ;
$dbname "tel" ;
$connect mysql_connect($host$dbuser $dbpass) or die("coulden't connetct!");
$db=mysql_select_db($dbname,$connect)or die ("coulden't find db".mysql_error());

mysql_query("SET NAMES 'UTF8'");



$file_handle fopen('A.csv','r');

while(
$values fgetcsv($file_handle))
{

    foreach(
$values as $value)
    {
        echo(
$value);
        
        
$query "INSERT INTO `questions3`  (first_name,last_name) VALUES  ('$value','דשגד')"
        
$result mysql_query($query)or die("Query failed: " mysql_error());
    }
    
}
fclose($file_handle);

?>


כל שורה אני מכניס גם את "דשגד" סתם לצורך בדיקה
עכשיו מה שקורה שהערך $value הוא ניכנס למסד ריק
והטקסט בעיברית ניכנס כמו שצריך
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 24-07-2013, 20:33
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,605
בתגובה להודעה מספר 7 שנכתבה על ידי תוכניתן שמתחילה ב "[QUOTE=שימי]אותי קצת מטריד..."

תשמע ידידי,

אם אתה רוצה להיות מה שהכינוי שלך, ולהצליח בזה, אתה חייב ללמוד לקרוא הוראות.

אתה בא ומצטט את מה שביקשתי, ואז מביא לי חלק קטן מאוד (!) ממה שביקשתי. אם ביקשתי רשימה של דברים, יש סיבה שביקשתי אותם - אני לא בא לבזבז לך את הזמן כאן.

אני אחזור על זה שוב בפעם האחרונה - אני רוצה לקבל מלבד הקוד גם את קובץ הקלט שעליו הקוד עובד, כדי להסתכל עליו. איך אני אמור למצוא את הבעייה, אם אתה לא מביא לי את כל המרכיבים שלה???

ואת הקובץ - תעלה לאתר, אל תדביק אותו. דברים יכולים להשתנות בהדבקה, בייחוד בענייני קידוד. קובץ מצורף יישאר כפי שהוא.

אני לא מצליח להבין מדוע, למרות שהבהרתי שהנושא בעייתי, וביקשתי שתתחיל בקובץ עם תווים באנגלית ומספרים בלבד, החלטת לעשות בדיוק ההפך ולשים עברית...

כמו כן, כפי שכבר ביקשתי, זה היה נחמד אם היית מדפיס את $query לפני mysql_query, ומראה לנו מה כתוב שם. זה בכלל טיפ עבורך בחיים: קודם תעשה שהאפליקציות שאתה כותב ידפיסו את השאילתות שאמורות לרוץ - תראה שהן נכונות, ורק לאחר מכן - תריץ אותן בפועל. להתחיל לשלוח דברים למסד הנתונים בלי שהם יודעים אם הם בכלל אמורים לעבוד - זה רעיון רע - בייחוד כשאתה מתחיל.

ויודע מה, אני מוסיף עוד דרישות: אני רוצה גם לראות את סכמת הטבלה. תתחבר באמצעות לקוח MySQL (בין אם בשורת הפקודה, ובין אם גרפי, לא איכפת לי) - ותראה לי את הפלט של השאילתא:
קוד:
SHOW CREATE TABLE questions3

אם בתגובתך הבאה לא יהיו כל הדברים שביקשתי (בכל ההודעות בשרשור, לא רק בזאת), אני פורש מלנסות לעזור לך...

נ.ב. מהקוד שכן צרפת, אני רואה לפחות בעייה פוטנציאלית אחת (שאולי היא הבעייה שלך, כיוון שאין לי את קובץ ה CSV שעליו אתה עובד - אי אפשר לדעת) - וזה שאתה מכניס מחרוזות לתוך שאילתא סתם כך, בלי להגן על מקרים שבהם יש תווים שיש להם משמעות מיוחדת בשפת SQL (מה שגם גורם לבעיית אבטחה שנקראת SQL Injection). מחרוזת, לפני שדוחפים אותה לתוך שאילתא (בהנחה שלא משתמשים ב PDO / Parameterized Queries) - חייבת לעבור תהליך Escaping, באמצעות הפונקציה mysql_real_escape_string().
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
האשכול נעול

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 04:26

הדף נוצר ב 0.33 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2020 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר