עבור לתוכן

PHP - הוספת מערכת תגובות למערכת כתבות קיימת

Featured Replies

פורסם

שלום לכולם! ;)

כתבתי מערכת כתבות ב-PHP אשר לוקחת את המידע מה-Sql

ששמה אני יכול לעדכן, להוסיף ולהסיר כתבות קיימות.

מערכת הכתבות שלי מחולקת לעמודות הבאות:

title - כותרת הכתבה.

author - כותב הכתבה.

content - תוכן הכתבה.

thumb - התמונה המוקטנת שמתארת את הכתבה.

אני רוצה להוסיף מערכת תגובות ככה שניתן יהיה להוסיף לכול כתבה מספר תגובות

מכמה משתמשים שונים (שאינם בהכרח רשומים)

למשתמש יהיה טופס שבו הוא יכניס את שמו ואת תוכן התגובה.

הבעיה שלי היא "ההבנה" של איך אני יעשה זאת, חשבתי בהתחלה לעשות עמודה

נוספת של תגובות אך הבעיה העיקרית היא שעמודה אחת תוכל להכיל רק תגובה אחת

חשבתי שאולי אפשרי להישתמש במערכים ב-Mysql אבל כניראה שזה לא אפשרי (?).

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

להגיב לכתבה מסויימת כפי שהזכרתי למעלה (צורת החשיבה בעיקר זה מה שאני מחפש, קוד

דוגמא יכול לעזור).

תודה רבה! :xyxthumbs:

פורסם

פשוט מאוד - טבלה נפרדת לתגובות, שיש בה שדה שמקשר בין התגובה לכתבה המקורית שלה (והשדה הזה יהיה foreign key).

פורסם
  • מחבר

תודה רבה! :xyxthumbs:

המערכת עובדת אבל אני לא בטוח שיש הקשר בין הכתבות לתגובות, הכוונה היא

אם כתבה תימחק, האם כול הערכים של אותה הכתבה גם ימחקו?

האם ה-Syntax של ה-Foreign key שהשתמשתי בו הוא נכון ליצירת העמודה?

//Articles comments table
mysql_query('CREATE TABLE news_comments
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
date TINYTEXT,
author TINYTEXT,
content MEDIUMTEXT,
news_id INT REFERENCES news(id) ON DELETE CASCADE
)') or die(mysql_error());

פורסם

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

כל מה שאתה צריך זאת טבלת תגובות בדיוק כמו שעשית, כאשר news_id יהיה INT רגיל, וזהו.

כשאתה מוסיף תגובה אתה מכניס את ה-id של החדשה ל-news_id של התגובה, וכשאתה קורא תגובות בחדשה X אתה טוען את כל התגובות שה-news_id שלהן הוא X.. מה יותר פשוט מזה..

פורסם
  • מחבר

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

כל מה שאתה צריך זאת טבלת תגובות בדיוק כמו שעשית, כאשר news_id יהיה INT רגיל, וזהו.

כשאתה מוסיף תגובה אתה מכניס את ה-id של החדשה ל-news_id של התגובה, וכשאתה קורא תגובות בחדשה X אתה טוען את כל התגובות שה-news_id שלהן הוא X.. מה יותר פשוט מזה..

אתה צודק בהחלט, אבל ארצה שברגע שאמחק כתבה כול התגובות אשר קשורות

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

פורסם

אני לא בטוח שיש אפשרות כזו...

מה הבעיה להוסיף לשאילתת המחיקה שאילתה נוספת שמוחקת מטבלת התגובות את כל התגובות שה-ID שלהן תואם לכתבה שנמחקה הרגע? אני חושב שזו הדרך הכי יעילה. דוגמה:

DELETE * FROM `articles` WHERE `id` = "X"
DELETE * FROM `ar_comments` WHERE `news_id` = "X"

התחביר כמובן לא נכון מבחינת PHP, לא היה לי כוח לרשום את זה. אבל אני חושב שהדוגמה ברורה.

בנוגע לסיבוך עם הKey...

אתה פשוט עושה id רגיל ומסמן כ-Foreign Key, מסמן כ-Null והכי חשוב לסמן גם את האופציה Auto increment (זה סופר אוטומטית את ה-id של התגובות בלי שאתה תצטרך להרכיב פונקציה שתספור בעצמה ותתן להם מספר), ואילו ל news_id אתה לא מסמן דבר חוץ מ-INT.

עריכה- שניצל, לא ידעתי שקיימת. אשמח אם תדגים כאן את השיטה שגם אני אוכל ללמוד. :)

פורסם

בטח שיש אפשרות כזו, זה בדיוק מה שאומר "on delete cascade", וזה חוסך לך שאילתות מיותרות שמוחקות דברים.

אני לא מבין מה רע בטבלה שהוא יצר.

פורסם
  • מחבר

תודה רבה! פשוט לא הייתי בטוח ובגלל זה שאלתי,

תודה רבה! :xyxthumbs:

ארכיון

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

דיונים חדשים