עבור לתוכן

PHP, MySQL - כתיבת טקסט עם מרווחי שורות במסד נתונים, וקריאתו.

Featured Replies

פורסם

שלום לכולם, סוף סוף החלטתי ללמוד PHP,

תמיד עניין אותי איך ליצור פאנל ניהול, ולהוסיף כתבות ודברים דומים וכו...

החלטתי לעשות מין דף שבו המשתמש יוכל להוסיף "כתבה",

עכשיו למדתי שאפשר להישתמש ב-Post בשביל לשלוח נתונים מ-Form,

ואפשר להיעזר בתגית <textarea> בשביל ליצור תיבת טקסט עם כמה שורות,

הבעייה היא שהמידע ממה שהבנתי נשלח דרך השורת כתובות, מה שיכול ליצור

בעיה, וכאן נוצרת השאלה איך אני יכול ליצור טופס שבו המשתמש

יוכל לשלוח למסד נתונים מסויים לטבלה בשם guestbook לעמודה content

טקסט עם מרווחים של שורות?

שמעתי על הפונקציה:

mysql_query("INSERT INTO guestbook(content) VALUES($_POST[information]);

אבל אני לא יודע אם אפשר להישתמש בה לכמה שורות.

והסוג של העמודה content מוגדרת כ-text אם זה בסדר.

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

(אני לא בטוח שקוראים לזה עמודה זה פשוט מה שעלה לי לראש)

תודה!

פורסם

כשאתה עושה FORM, אז ב GET המידע נשלח דרך שורת הכתובות וב POST זה נשלח דרך הבקשה עצמה. אין בעיה לשים כמה שורות, זה פשוט שם תו של שורה חדשה בין שורה לשורה, אם אתה מנסה להציג את זה ב HTML, פשוט תעשה המרה על המחרוזת שאתה מקבל ותחליף \n (תו של שורה חדשה, זה הפוך) בתגית HTML של <BR>

פורסם

תשתמש ב-"method="post קודם כל.

אח"כ, בזמן התצוגה תשתמש בפונקציה nl2br כדי להמיר את ירידות השורה לקוד HTML.

יש שם גם דוגמה לפונקציה יפה יותר:


function nls2p($str)
{
return str_replace('<p></p>', '', '<p>'
. preg_replace('#([\r\n]\s*?[\r\n]){2,}#', '</p>$0<p>', $str)
. '</p>');
}
?>
<?php

Turns two or more consecutive newlines (separated by possible white space) into a <p>...</p>.

Pass result to regular nl2br() to add <br/> to remaining nl's, eg,


echo nl2br(nls2p("Paragraph1\n\nParagraph2\n line1\n line2\n"));
?>
<?php

result:

<p>Paragraph1</p>

<p>Paragraph2<br/>

line1<br/>

line2<br/></p>

פורסם
  • מחבר

כשאתה עושה FORM, אז ב GET המידע נשלח דרך שורת הכתובות וב POST זה נשלח דרך הבקשה עצמה. אין בעיה לשים כמה שורות, זה פשוט שם תו של שורה חדשה בין שורה לשורה, אם אתה מנסה להציג את זה ב HTML, פשוט תעשה המרה על המחרוזת שאתה מקבל ותחליף \n (תו של שורה חדשה, זה הפוך) בתגית HTML של <BR>

מה ז"א ב-POST זה נשלח דרך הבקשה עצמה? ועדיין לא ממש הבנתי את ההבדלים.

בקשר לפונקצייה, תודה רבה! אבל אפשר להציג גם את המידע ב-PHP והשורה \n מייצגת בעצם שורה חדשה ב-PHP לא? או שבעצם אני חייב את ה-HTML בשביל להציג אותו כמו שצריך?

השאלה היא אם אני משיג את המידע מה-SQL בדרך הזו:

$data=mysql_query("SELECT content FROM guestbook") or die(mysql_error());
echo "This is your content:<br>";
while ($row=mysql_fetch_array($data))
echo $row['content'];
mysql_close();

איך אני יוכל להציג את המידע בכמה שורות כמו שהכנסתי במסד נתונים?

כשניסתי את הקוד הזה הוא הציג לי את המידע אבל בלי ההפרדי שורות אלא רק בשורה אחת (ולא כמו שהכנסתי אותו בעזרת PhpMyAdmin), וגם בלי ה-\n אלא רק את המידע שהכנסתי כמו שהוא אבל רק בשורה אחת.

השאלה היא האם יש פונקצייה שמשיגה לי את המידע עם המרווחי שורות, או שאני צריך "להפוך אותו" בדרך מסויימת לכמה שורות? (למרות שב-sql אני רואה אותו בכמה שורות)

פורסם

אח"כ, בזמן התצוגה תשתמש בפונקציה nl2br כדי להמיר את ירידות השורה לקוד HTML.

או לפי הקוד שלך:


<?php
$data=mysql_query("SELECT content FROM guestbook") or die(mysql_error());
echo "This is your content:<br>";
while ($row=mysql_fetch_array($data))
echo nl2br($row['content']);
mysql_close();
?>

פורסם
  • מחבר

תודה רבה! חשבתי שאולי אני לא משיג את המידע בצורה נכונה,

ואם כבר אני מדבר על איך להשיג את המידע,

האם זאתי דרך מקובלת להשיג מידע? בכאילו מהכוונה שמשתמשים בה הרבה,

או שיש דרכים אחרות ויותר מקובלות להשיג את המידע מהסוג שאני רוצה?

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים