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

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



  #1  
ישן 21-06-2006, 08:25
  -=Dark_Moon=- -=Dark_Moon=- אינו מחובר  
 
חבר מתאריך: 17.06.06
הודעות: 257
[PHP] דאטא בייס מסוג MySql

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


המדריך לדאטא בייס מסוג MYSQL

ידע שצריך:
ידע בסיסי ב-PHP.

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

נתחיל מההתחברות:
קוד:
mysql_connect("localhost", "user","pass");

localhost=
שרת
user=
משתמש
pass=
סיסמא
בדרך זו אנו נתחבר ל-DB ובכך אנחנו נוכל להוציא מידע ממנו.
כאשר אין סיסמא אפשר פשוט לא לרשום אותה במקום להשאיר את המרכעות ללא ערך, לדוגמא:

קוד:
mysql_connect("localhost", "itaigili");


בדוגמא הזאת התחברתי לשרת בשם localhost למשתמש בשם itaigili.

כפי שאתם רואים לא עשיתי כלל שימוש בסיסמא, אבל התחברתי ל-DB.

לאחר ההתחברות אנו צריכים לסגור את ה-DB בגלל סיבה פשוטה:
למנוע עומס מן השרת- ברגע שלא סוגרים את ה-DB אתם מפעילים "לחץ" על השרת וזה יוצר באגים ועלול לגרום לשרת לקרוס.
אז עכשיו לאחר שלמדנו להתחבר בואו נסגור את ההתחברות:
קוד:
mysql_close();


עכשיו בואו נשלב בין השניים:
קוד:
$mysql=mysql_connect("localhost", "itaigili"); echo "SQL working"; mysql_close($mysql);


פה הגדרתי את ההתחברות כמשתנה כדי שיהיה נוח לסגור אותו. פקודות המשתתפות בקוד הן: mysql_connect();
echo;
mysql_close();

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

אחרי התחברות ל-mysql שזה בעצם השרת צריך להתחבר לדאטא בייס:
קוד:
mysql_select_db("name");

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

לדוגמא לשימוש:
קוד:
mysql_select_db("test");

התחברתי לדאטא בייס בשם test.

והינה סיכום של מה שלמדנו:
קוד:
$mysql=mysql_connect("localhost", "itaigili"); mysql_select_db("test"); echo "good, the db is working"; mysql_close($mysql);



לעבוד עם כמה mysql לא מומלץ ואותו דבר בנוגע לטבלאות, כי אז כל הקוד מתחיל להסתבך!

אבל אם צריך הרבה נתונים מה עושים? הפיתרון נקרא טבלאות!
אני אומנם לא ילמד לבנות אחת אבל להתחבר אליהן זה ממש לא סיפור:
קוד:
$test = mysql_query("SELECT * FROM table");

אמרתי ל-PHP לסמן את הטבלא table ואת הכל הגדרתי למשתנה test,
עכשיו המידע לא קריא ובאפשרותי לעשות 2 דברים:
1.
להפוך אותו למשתנים
2.
לספור את השורות שהתקבלו

נעבור על שני האפשרויות:
1.
להפוך אותו למשתנים:
קוד:
$array = mysql_fetch_array($test);


הפכתי אותה (את הטבלא test) ברגע זה למשתנה (בשם array) קריא שאפשר לקרוא לו מתי שארצה!
הינה דוגמא להדפסת הנתון שמתקבל:
קוד:
echo $array["text"];

2.
לספור את השורות שהתקבלו:
קוד:
$num = mysql_num_rows($test);


הפכתי אותה (את הטבלא test) ברגע זה למספר (על שם המשתנה num) קריא שאפשר לקרוא לו מתי שארצה!

אם לא נספרו שורות הערך יהיה שווה 0, בדר"כ הקוד שימושי כאשר לא רוצים להסתבך עם מונה בתוך הטבלא האחראית על המשתמשים.
הינה דוגמא להדפסת הנתון שמתקבל:
קוד:
echo $num;



הינה דוגמא לקוד של העלת נתונים:
קוד:
mysql_query("UPDATE table SET row='value'");

table=
טבלא
row=
עמודה או תא
value=
הערך אותו נעדכן
בהעלת נתונים אנחנו בעצם לא יוצרים תאים אלא משנים את הערך שבהם, זה מאוד שימושי בכל מערכת שבונים שיהיה ניתן לערוך דברים ולא רק לשמור או למחוק.
ב-ASP לדוגמא קוד זה כלל לא קיים וזה יתרון שהופך את PHP לטוב יותר.

לדוגמא:
קוד:
mysql_query("UPDATE test SET text='$text'");



פה עדכנתי לטבלא test לעמודה test את המשתנה text. ולמי שלא הבן, פה בחרתי לשנות את הערך של התא text שבטבלא test למשתנה text.
כמובן שניתן לרשום יותר ממשתנה אחד אותו אנו רוצים להחליף:
קוד:
mysql_query("UPDATE test SET text='$text', title='$title'");


הפקודה WHERE:
WHERE
זו פקודה מאוד שימושית כאשר רוצים לסמן מקום מדוייק או לשנותו או למחוקו, במקום למחוק את כל הטבלא פשוט משתמשים ב-WHERE ואז ניתן למחוק לדוגמא רק את התא המסויים.
לדוגמא:
קוד:
$id= $_GET["id"]; mysql_query("UPDATE test SET text='$text', title='$title' WHERE id='$id' ");

אתם בטח בשוק של מה שעשיתי פה, אז אני יסביר:
פה כמו מקודם ערכתי את התאים של text ושל title בטבלא test.
אבל, פה הוספתי מן תנאי שאומר לו "איפה שה-id שווה למשתנה id", מה שבמקרה פה הוא מקבל את ה-id מלינק.

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

קוד:
mysql_query("INSERT INTO `table` VALUES ('','$pid','$title','$text'')");

מה שחשוב ביצירה זה לכתוב את שם הטבלא (table) ואז למלאות את כל העמודות אחרת תיהיה שגיאה!
כאן לדוגמא הוספתי שורה לטבלא table שכניראה בעלת 4 עמודות:
עמוד ראשונה היא כניראה אוטומתית ולכן לא הכנסתי לה כלל ערך, היא לא תצטרך את זה, היא תתמלא מעצמה.
עמודה שניה תקבל את הערך של המשתנה pid
עמודה שלישית תקבל את הערך של המשתנה title
והעמודה הרביעית תקבל את הערך של המשתנה text ובכך יצרתי שורה.

אבל אם נניח שיש 5 עמודות וחסר לי אחת, הוא יציג לי לצערי שגיאה שלא תמיד אני רוצה ולכן יש פיתרוך מעולה (העובד על כל השאלתיות):
1.
התעלם:
קוד:
@mysql_query("INSERT INTO `table` VALUES ('','$pid','$title','$text'')");

כאן אמרתי לו שבזמן שגיאה התעלם ממנה ותמשיך רגיל ללא הצגת נתונים על השגיאה, זה מעולה כאשר לא רוצים שבזמן שגיאה הגולשים יגלו מה היא!
2.
עצור את התוכנית:

קוד:
mysql_query("INSERT INTO `table` VALUES ('','$pid','$title','$text'')") or die ("ERROR");



כאן אמרתי לי שבזמן שגיאה יעצר הכל ותודפס המילה ERROR.

ולסיום נלמד מחיקה:
קוד:
mysql_query("DELETE FROM table");

table=
טבלא
מחיקה יכולה להיות של תא אחד או של טבלא שלמה.
בדר"כ טבלא שלמה לא מומלץ אבל לעיתים זה שימושי.

לדוגמא:
קוד:
mysql_query("DELETE FROM test");


פה מחקתי את מה שיש בטבלא test

אבל תזכרו שיש לנו WHERE מה שיאפשר לנו למחוק רק שורה מסויימת:
קוד:
mysql_query("DELETE FROM test WHERE id='1' ");


פה מחקתי רק איפה שה-ID שווה ל-1, כלומר מחקתי שוררה אחד פשוטה^^

אבל בואו נחזור לעניין חשוב בקשר הסימון שורות:
קוד:
$test = mysql_query("SELECT * FROM table");


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

קודם כל היא מקבלת WHERE כמו שהעלת נתונים ומחיקה יכולים גם לקבל (שמירת נתונים כלומר יצירת שורות לא יכול לקבל את WHERE).
אבל קיימים עוד תכונות.
קוד:
WHERE id='$id'



אם כבר חזרנו את ה-WHERE בואו נספר לכם שבמקום שווה ניתן גם לכתוב: > קטן מ...
<
גדול מ...
זה מאוד שימושי בסימון שורות ומאוד יעיל

והינה דוגמא לשימוש:
קוד:
$test = mysql_query("SELECT * FROM table WHERE id='$id'");



אם כבר דיברנו על WHERE אז הינה תכונה מעניינת אצלו:
ניתן לסמן שורות רק שהנתון אותו אנו מחפשים הוא בערך, מה זאת אומרת:
קוד:
like '$name%'

היכן שהמשתנה like מתחיל כמו הערך של העמודה
קוד:
like '$name%'



היכן שהמשתנה like נגמר כמו הערך של העמודה
קוד:
like '$name%'



היכן שהמשתנה like מופיע בערך של העמודה

*
קצת מבלבל ואם תרצו לשאול על זה אז בשמחה*

ואם כבר הזכרנו אותם הינה דוגמא לשימוש בכל אחד מהם:
קוד:
$test = mysql_query("SELECT * FROM table WHERE id like '$name%' "); //1 $test = mysql_query("SELECT * FROM table WHERE id like '%$name' "); //2 $test = mysql_query("SELECT * FROM table WHERE id like '%$name%' "); //3


כדי לא להשאיר אותכם ללא דוגמאות הינה הסבר: 1. אני מסמן את הטבלא table איפה שה-ID מתחיל במשתנה name
2.
אני מסמן את הטבלא table איפה שה-ID מסתיים במשתנה name
3.
אני מסמן את הטבלא table איפה שה-ID מכיל את המשתנה name

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

נמשיך עדין עם סימון נתונים מה שגורם לי לחשוב על הכוכבים (*), אתם רוצים לדעת מה היא מסמנת?
היא מסמנת בעצם את כל העמודות אך לעיתים אנו לא זקוקים לכולם וכדי למנוע סתם עומס ניתן "לקצץ":

קוד:
$test = mysql_query("SELECT id,name FROM table");



כאן סימנתי את העמודות id ו-name שבטבלא table.

בין עמודה לעמודה אני מפריד בפסיק!

ועכשיו לסימון כמה שורות בלבד:
קוד:
LIMIT 1,5

מהתוצאה ה-1 עד התוצאה ה-5 היותר גבוהה
קוד:
LIMIT 1


שורה ראשונה מהתוצאה

אני מבין שלא הבנתם אותי וגם אני לא הכי מבין את הפקודה כי לעיתים היא עושה בעיות אבל הינה דוגמא לשימוש בה:
קוד:
$test = mysql_query("SELECT * FROM table LIMIT 1,5");


כאן סימנתי את השורה הראשונה עד החמישית שבטבלא table.
למרות שפה אני כבר חייב לספר לכם על בעיה ופיתרון:
לעיתים שיש לנו כמה שורות אנחנו יודעים שלהפוך אותם למשתנים לא יספיק
קוד:
$array = mysql_fetch_array($test);



כי אז נוכל להדפיס את הנתונים פעם 1, אז מה עושים?
הפיתרון מאוד פשוט:
קוד:
$test = mysql_query("SELECT name FROM table WHERE id>'2' LIMIT 1,5"); while ($array = mysql_fetch_array($test)) { echo "השם של השורה הוא: ".$array["name"]; }

זאת לדעתי דוגמא נפלאה המציגה מצד אחד שילוב של כמה פקודות והדפסת נתונים.
כאן אני סימנתי את העמודה name שבטבלא table היכן שהנתון ב-ID גדול מ-2 ולקחתי מכל זה את השורה הראשונה עד החמישית.
לאחר מכן הפכתי את זה למשתנים ב-while ובכך זה יחזור על ה-while עש שיגמרו השורות אותם סימנתי.
בתוך ה-while השתמשתי ב-echo שבין היתר יציג את התוצאה של העמודה name.

לקינוח הייתי רוצה להראות לכם איך מסדרים דברים לפי סדר מסויים:

קוד:
ORDER BY id

כאן בעצם אמרתי לו לסדר לפי ה-ID.
והינה דוגמא לשימוש:
קוד:
$test = mysql_query("SELECT * FROM table ORDER BY id");


פה בעצם סימנתי את כל הטבלא table ואמרתי לו לסדר את הנתונים לפי id, אך אם רוצים לסדר הכל בסדר יורד, הינה שיטה מעולה לכך:
קוד:
ORDER BY id DESC

והינה השילוב:
קוד:
$test = mysql_query("SELECT * FROM table ORDER BY id DESC");



כאן כמו מקודם סימנתי את כל הטבלא table וסידרתי אותה לפי id בסדר יורד. וסתם כדי שתידעו שהפקודה LIMIT היא האחרונה בשאלתיה.

זהו, עברנו על כל מה שאפשר אם לא שכחתי כלום!
אתם מוזמנים לשאול שאלות ולחכות למדריך הבא^^


והמדריך הבא כבר בכתיבה: הוא יהיה עם דברים שלא כתבתי פה ועם עבודה עם 2 טבלאות...

©
כל הזכויות שמורות ל-"-=Dark_Moon=-" (לי, לעצמי ולאנוכי, מת על המשפט)!
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 21-06-2006, 09:25
  -=Dark_Moon=- -=Dark_Moon=- אינו מחובר  
 
חבר מתאריך: 17.06.06
הודעות: 257
בתגובה להודעה מספר 1 שנכתבה על ידי -=Dark_Moon=- שמתחילה ב "[PHP] דאטא בייס מסוג MySql"

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

לדוגמא לא פירטתי על DISTINCT או על IN של WHERE...
בכל מקרה אני עובד על מדריך חדש של זה עם יותר מידע והרבה יותר^^

בקשר לזה שכתבתי שזה עובד, זה בגלל שבאותו חלק לא סיפרתי על OR DIE...
ושוב, אני מכין מדריך חדש והרבה יותר מדוייק...

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

עריכה:
בגלל שאני חדש שכחתי לכתוב אילו שפות אני יודע^^''
HTML
XHTML
CSS
DHTML (דומה ל-CSS אבל יש הבדל, אנשים נוהגים לחבר אותן ביחד...)
JS (בסיסי)
AS (השפה של הפלאש למי שמכיר)
ASP (בסיסי מאוד, התחלתי וזה לא היה ניראה לי מעניין אז עברתי ל-PHP)
PHP
MYSQL (למרות שמדובר על שפת SQL כי ה-MYSQL זה רק המסד נתונים)
AJAX (שילוב בין JS ו-XML המאפשר לך שימוש בצד שרת גם לאחר שהדף עלה, זה לא ממש שפה אלא קובץ שפות)

מקווה להשתלב^^

נערך לאחרונה ע"י -=Dark_Moon=- בתאריך 21-06-2006 בשעה 09:29.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 21-06-2006, 09:40
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 4 שנכתבה על ידי -=Dark_Moon=- שמתחילה ב "את המדריך כתבתי לנפי חצי שנה..."

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

אין צורך להרחיב על DISTINCT, IN וכל השאר, זה מידע סלט.
אתה צריך לחשוב מה מטרת המדריך ולמה הוא מיועד, אם זה מיועד להסביר איך להתממשק ב-PHP עם מסד הנתונים MySQL, אזי תוותר על הסברים אודות השאילתות השונות מלבד SELECT.
אם זה מדריך מסד נתונים, אזי תוריד את כל פקודות ה-PHP כדי לא לבלבל את המשתמש.
תוכל כמובן לחלק את המדריך למספר חלקים ולכל פרק לתת את הכותרת שלו, לדוגמה:
* פרק א' - מבוא למסדי נתונים (אני ממליץ לך לא לכתוב את זה... אולי תקשר למדריך יעיל יותר).
* פרק ב' - שאילתות ופקודות בסיסיות.
* פרק ג' - עבודה ב-PHP עם MySQL.
* פרק ד' - שאילתות ופקודות מורחבות.
* פרק ה' - פונקציות PHP נוספות לניתוח תוצאות מסד הנתונים.

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

בהצלחה
ישראל
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 21-06-2006, 10:56
  -=Dark_Moon=- -=Dark_Moon=- אינו מחובר  
 
חבר מתאריך: 17.06.06
הודעות: 257
בתגובה להודעה מספר 1 שנכתבה על ידי -=Dark_Moon=- שמתחילה ב "[PHP] דאטא בייס מסוג MySql"

אף אחד לא מתייחס לזה שאני כותב מדריך חדש ומסודר ולזה שהמדריך לפני חצי שנה...

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

מידע על המדריך החדש:
המדריך החדש יכנס לתוך אתר מיוחד למדריכים (כניראה שללא פורום תמיכה) ובוא יהיה קטגורייה מיוחדת לתיכנות ובניית אתרים ובה מיני קטגורייה ל-SQL עליה אני יהיה אחראי...

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

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

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

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

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

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



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

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

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

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