הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [PHP] בקשת עזרה בגרשי(י)ם עם מסד נתונים - דחוף (https://hosts.co.il/forums/showthread.php?t=45807)

Source 20-05-07 01:18

[PHP] בקשת עזרה בגרשי(י)ם עם מסד נתונים - דחוף
 
שלום :) מעולם לא קרה שהייתי צריך עזרה דחופה אם בכלל היתי צריך עזרה, אבל עכשיו באמת חייב עזרה בעניין הבא:
יש לי טופס שבאחד השדות שלו הטקסט יכול לבוא עם גרשיים (") או גרשים (') פעם אחת או יותר. זה יוצר את הבעיות הבאות:
  1. הטקסט צריך להופיע לאחר מכן בתגית <option value='the text'> בתוך <select>.
  2. הטקסט צריך להיות מועבר לאחר 1. בשורת הכתובת (מועבר בGET) .
  3. הטקסט מגיע לאחר 2. לדף שמשתמש בטקסט כתנאי בשאילתה (Where).

ניסיתי כל שילוב שעלה בדעתי בין הפונקציות: htmlspecialchars, htmlspecialchars_decode, addslashes, stripslashes, str_replace בשביל למצוא את הפתרון ולא הצלחתי.

עזרה בבקשה - המצב חמור =X
עם איזה פונקציות להכניס את הטקסט למסד ועם איזה להוציא?

תודה רבה,
פיני

Tomer 20-05-07 01:22

תכניס עם mysql_escape_string, ושצריך להציג תעשה לו stripslashes..

syn 20-05-07 01:23

אתה יכול להכניס את הטקסט ב option בלי גרשיים בכלל.
אם ה option בתוך echo אתה יכול לעשות \" ב option.

אתה יכול להוציא מהמסד עם -
echo "$some";
לא תיהיה שום בעיה עם הגרשיים.

Udi 20-05-07 01:40

ציטוט:

נכתב במקור על ידי Tomer (פרסם 481007)
תכניס עם mysql_escape_string, ושצריך להציג תעשה לו stripslashes..


אני משתמש ב
mysql_real_escape_string ומציג כמו שתומר כתב, עם stripslashes, עובד יופי.

חיים 20-05-07 08:01

אתה יכול להשתמש פשוט ב-htmlspecialchars ואז זה ימיר אותו לתבי ASCII וככה זה יציג לך גרש ולא קוד של PHP אם לזה התכוונת

Source 20-05-07 11:55

ציטוט:

נכתב במקור על ידי Tomer (פרסם 481007)
תכניס עם mysql_escape_string, ושצריך להציג תעשה לו stripslashes..

זה לא יפתור את הבעיות שרשמתי, כי אם אחרי ההוצאה מהמסד אני עובד על הגרשים והגרשיים תהיה בעיה בהצגה בתוך <option> למשל.

ציטוט:

נכתב במקור על ידי syn (פרסם 481008)
אתה יכול להכניס את הטקסט ב option בלי גרשיים בכלל.
אם ה option בתוך echo אתה יכול לעשות \" ב option.

אתה יכול להוציא מהמסד עם -
echo "$some";
לא תיהיה שום בעיה עם הגרשיים.

ניסיתי כבר, אבל אם יש גרשיים וגרשיים במחרוזת זה עושה בעיות.

ציטוט:

נכתב במקור על ידי masterpl (פרסם 481053)
אתה יכול להשתמש פשוט ב-htmlspecialchars ואז זה ימיר אותו לתבי ASCII וככה זה יציג לך גרש ולא קוד של PHP אם לזה התכוונת

htmlspecialchars לא ממיר לASCII אלא להצגת תווים מיוחדים נכונה בHTML
אבל אז יש בעיה עם ההעברה בGET והשאילתה... ניסיתי להחזיר בhtmlspecialchars_decode אבל לא ממש הלך



בכל מקרה, נראה לי שמצאתי פתרון =] אני הופך כל גרשיים (") לגרשים (' ' - בלי הרווח), כל גרש בזמן שצריך להעביר או להכניס בשאילתה אני הופך נגיד לכוכבית (*), ורק כשצריך להציג אני הפוך את הכוכבית לגרשים (') ומקיף את הטקסט בגרשיים (")... זה אמור לעבוד לדעתי =]

O-B 20-05-07 14:53

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

הינה הפתרון..
(הצורה השניה...)
PHP קוד:

<?php
$str 
"A 'quote' is <b>bold</b>";
// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str);
// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($strENT_QUOTES);
?>


Constant Name - Description
ENT_COMPAT - Will convert double-quotes and leave single-quotes alone.
ENT_QUOTES - Will convert both double and single quotes. או בעיברית ממיר את שני סוגי הגרשיים גם (") וגם (')..
ENT_NOQUOTES - Will leave both double and single quotes unconverted
.

Source 20-05-07 17:21

יש הבדל בין מה שנתת לhtmlspecialchars?

בכל מקרה, הצלחתי בסוף - העניין עם הכוכביות בשילוב עם stripslashes וזהו =] אפשר לנעול

בניה 20-05-07 17:26

ציטוט:

נכתב במקור על ידי Source (פרסם 481339)
יש הבדל בין מה שנתת לhtmlspecialchars?

בכל מקרה, הצלחתי בסוף - העניין עם הכוכביות בשילוב עם stripslashes וזהו =] אפשר לנעול

htmlentities יהפוך גם את העברית ליצוג שלה בHTML שזה לא טוב.


כל הזמנים הם GMT +2. הזמן כעת הוא 18:15.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ