עבור לתוכן

איך אפשר לקרוא לפונקציה מתוך MYSQL ?

Featured Replies

פורסם

הבנתי שאי אפשר לקרוא לפונקציה של PHP מתוך MYSQL..

אז איך כן ניתן לעשות כזה דבר ?

ניסיתי באמצעות הפונקציה EVAL ללא כל הצלחה.....

פורסם

השאלה היא למה אתה רוצה לעשות את זה.

תסביר מה הבעיה שאתה מנסה לפתור.

פורסם
  • מחבר

אוקיי אני ינסה לפשט את זה.

יש לי טבלה אחת שנקראת PAGES : בתוכנה כל מיני שדות אבל העיקריים זה PAGE SUBJECT שהוא בעצם נושא העמוד וPAGE BODY שהוא תוכן העמוד.

עכשיו קיים נושא שנקרא לו PHOTOS, בתוך הנושא הזה אני לא מעוניין שיהיה באופן מיידי תוכן

יצרתי עוד טבלה בשם PHOTOS ובתוכה גם כל מיני עמודות ועוד פעם PAGE SUBJECT וPAGE BODY

עכשיו יש כל מיני נושאים של PHOTOS שאני מעוניין להציג אותם בתוך הPAGE BODY של PAGES

אני כאמור צריך לקרוא לאותה פונקציה שקראתי לה בPAGES מתוך הINDEX.PHP , רק שכאן כאמור העסק לא עובד כי אין לי אפשרות לקרוא לפונקציה מתוך הTEXT שבPAGE BODY....

מקווה שהיה ברור :P

פורסם

האמת היא לא ממש...

תן לי להבין, בתוך הטבלאות שלך יושב קוד php?

פורסם
  • מחבר

לא.. הפונקציות יושבות בקבצי PHP

לטבלה הראשונה PAGES אני קורא דרך הINDEX.HTML

אבל לטבלה השניה אני כבר צריך לקרוא דרך הטבלה הראשונה........

פורסם

מה זאת אומרת "לקרוא דרך הטבלה הראשונה"?

אם אתה צריך לשלוף מידע מטבלה אחת ואז להכניס אותו לטבלה אחרת, אז תשתמש בכמה שאילתות SQL בזו אחר זו...

פורסם
  • מחבר

מהתחלה

יש טבלה בשם PAGES

שם נמצאים הנושאים של תפריט האתר וגם התוכן של אותם נושאים

כדי לקבל את רשימת הנושאים לתפריט האתר אני מפעיל את הפונקציה הבאה מתוך הINDEX.PHP



function get_all_subjects() {
global $connection;
// get id and linkpage from page database
$sqlCommand="SELECT id,linklabel FROM pages ORDER BY pageorder ASC";
$query=mysql_query($sqlCommand,$connection) or die(mysql_error());




// Use returned data
$menuDisplay='';
while ($row= mysql_fetch_array($query)){
$pid=$row["id"];
$linklabel=$row["linklabel"];

$menuDisplay .='<li><a href="index.php?pid=' . $pid . '">' .$linklabel . '</a></li>';
}

return $menuDisplay;
}

עכשיו בכדי לקבל את התוכן של הדף של אותם נושאים אני מפעיל מINDEX.PHP את הפונקציה הבאה



function get_content(){
global $connection;
// determine whice page id to use in our query below
if(!$_GET['pid']){
$pageid='1';
}
else{
$pageid= preg_replace('#[^0-9]#i', '', $_GET['pid']);
}
// query the body section for the proper page

$sqlCommand="SELECT pagebody FROM pages WHERE id='$pageid' LIMIT 1";
$query=mysql_query($sqlCommand,$connection) or die(mysql_error());
while ($row=mysql_fetch_array($query)) {
($body=$row["pagebody"]);

}
// mysql_freeresult($query);
return ($body);

}

אחד מאותם נושאים נקרא PHOTOS

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

עד כאן מבין ?

פורסם

אז אתה יכול לנסות להרחיב את מסד הנתונים שלך כך שיתמוך בזה. אתה יכול להוסיף עמודה לטבלת הנושאים ככה שלכל נושא יוכל להיות נושא "אבא", ואז בשליפה אתה יכול לבחור באמצעות תנאי where מתאים את כל הנושאים שיש להם אבא מסוים.

פורסם
  • מחבר

תוכל בבקשה להסביר לי איך לעשות את זה?

פורסם

הרעיון הוא של-pages יש עמודה בשם parent, שאומרת לכל דף מי ה"אבא" שלו. כברירת מחדל לדף אין אבא, ככה שהערך הזה הוא null או איזה משהו דיפולטי (0 או 1-, לדוגמה).

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

נניח ש-photos הוא דף מספר 5. אז לכל הדפים שהם "בנים" שלו (כלומר אלו שאתה רוצה להגיע אליהם כשאתה בוחר את האופציה הזו) יש parent=5, ול-photos יש is_parent=true.

כשאתה מציג את רשימת הנושאים הראשית, אתה צריך להציג רק את הדפים שאין להם אבא.

כשאתה בא לשלוף דף מה-DB, אתה בודק - אם הוא לא אבא של דפים אחרים (כלומר is_parent=false), תציג אותו כרגיל. אחרת, שלוף את כל הבנים שלו (באמצעות where) ובנה את רשימת הלינקים מהתוצאה

ארכיון

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

דיונים חדשים