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

הוסטס - פורום אחסון האתרים הגדול בישראל (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=32756)

ofek_golan 12-10-06 13:03

[PHP] בדיקת טבלאות
 
איך אפשר לבדוק אם ישנה טבלא קיימת בשם שאני רוצה ליצור טבלא?
דרך PHP כמובן

Eli-Hai 12-10-06 14:41

קוד:

$sql = "SELECT * FROM `tbl_name` ORDER BY `id` DESC";
$result = mysql_query($sql);

$num_rows = mysql_num_rows($result);

if($num_rows == 0) echo "Table don't exists";
else echo "Table exists";

תנסה לבדוק את זה ככה (בכוונה אל תוסיף mysql_error()).

Balrog 12-10-06 14:53

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

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

Level-Serv 12-10-06 15:01

ישנה אפשרות לעשות את הקוד הבא בשאילתה:
PHP קוד:

CREATE TABLE IF NOT EXISTS `table_name

כמובן שחסר פה את המשך השאילתה.

עריכה:
Eli-Hai- הפתרון שהצעת אני לא חושב שהוא נכון, כי אם יש טבלה אבל היא ריקה, אז הוא יציג שהיא לא קיימת.

RS324 12-10-06 15:08

אפשר לעשות שאילתה "SHOW TABLES"
ואז לראות אם הטבלה קיימת. בעזרת SUBSTR או STRSTR

ofek_golan 12-10-06 15:24

אז איך עושים?

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

RS324 12-10-06 15:37

אמרתי לך, תשתמש ב SHOW TABLES ותמשוך אותו לתוך מערך ותבדוק אם קיים
עשיתי את הקוד בדיוק ב 5 דקות...

ofek_golan 12-10-06 16:44

מזה SHOW TABLES?

Balrog 12-10-06 16:54

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

Balrog 12-10-06 16:56

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

ofek_golan 12-10-06 22:31

אני אומר שאני לא מכיר אותה

RS324 12-10-06 22:35

ציטוט:

נכתב במקור על ידי ofek_golan
אני אומר שאני לא מכיר אותה


מה לא מכיר אותה ?

קשה לעשות
mysql_query(SHOW TABLES

ולראות מה אתה מקבל ?
מספיק עם השטויות אתה רוצה שייתנו לך את התשובה וזהו
תריץ את השאילתה
ותעשה ניסיונות
לא הולך לך ?
יש הרבה מידע ב גוגול ובמיוחד ב www.mysql.com
רק צריך לחפש...

Tomer 13-10-06 13:57

התגובות שכללו קוד נמחקו.

ofek_golan: אני מציע לך להפסיק לבקש קודים. נתנו לך הוראות מדוייקות מה לעשות, תסתדר איתם.

ofek_golan 13-10-06 14:21

למה מחקת את הקוד שאני כתבתי אני כתבתי בשביל לראות אם הוא טוב אז מה אתה מוחק לי אותו?

Tomer 13-10-06 15:05

ציטוט:

נכתב במקור על ידי ofek_golan
למה מחקת את הקוד שאני כתבתי אני כתבתי בשביל לראות אם הוא טוב אז מה אתה מוחק לי אותו?

לא אתה כתבת אותו, ואל תתחיל להתווכח איתי.

ofek_golan 13-10-06 18:15

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

Tomer 13-10-06 18:36

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

ofek_golan 13-10-06 19:23

אפשר לדעת מה רע בו?
כאילו הוא קודם עושה
PHP קוד:

SHOW TABLES FROM '{$USER}' 

אחר כך הוא שם את זה בתוך MYSQL_NUM_ROWS
ואז הוא בודק אם זה מעל 1 אז יש טבלא בשם הזה ואם זה מתחת ל1 אז אין

eLad 13-10-06 19:42

ציטוט:

נכתב במקור על ידי ofek_golan
אפשר לדעת מה רע בו?
כאילו הוא קודם עושה
PHP קוד:

SHOW TABLES FROM '{$USER}' 

אחר כך הוא שם את זה בתוך MYSQL_NUM_ROWS
ואז הוא בודק אם זה מעל 1 אז יש טבלא בשם הזה ואם זה מתחת ל1 אז אין

תגיד לי, מה זה בדיוק ה user? מאיפה אתה שולף את כל הטבלאות?

Tomer 13-10-06 19:54

ציטוט:

נכתב במקור על ידי ofek_golan
אפשר לדעת מה רע בו?
כאילו הוא קודם עושה
PHP קוד:

SHOW TABLES FROM '{$USER}' 

אחר כך הוא שם את זה בתוך MYSQL_NUM_ROWS
ואז הוא בודק אם זה מעל 1 אז יש טבלא בשם הזה ואם זה מתחת ל1 אז אין

לא יודע מה איתך, SHOW TABLES FROM x מציג את הטבלאות במסד x ולא אם הטבלה x קיימת.

ofek_golan 13-10-06 20:35

הנה תראה את הכל
 
PHP קוד:

include "connect.php";

$query mysql_query(" SHOW TABLES FROM '{$tblname}' ");
$row mysql_num_rows($query);

if( 
$row ) {

echo 
"טבלא קיימתן";
}
elseif ( 
$row ) {
  echo 
"טבלא לא קיימת";


זה הקוד שעשיתי

Tomer 13-10-06 20:44

ציטוט:

נכתב במקור על ידי ofek_golan
PHP קוד:

include "connect.php";

$query mysql_query(" SHOW TABLES FROM '{$tblname}' ");
$row mysql_num_rows($query);

if( 
$row ) {

echo 
"טבלא קיימתן";
}
elseif ( 
$row ) {
  echo 
"טבלא לא קיימת";


זה הקוד שעשיתי

הקוד הזה לא נכון. אתה לא יכול לעשות SHOW TABLES FROM tblname כי ברגע שאתה עושה FROM אתה בוחר את המסד, ולא את הטבלה.

אתה צריך לקחת את מה ש SHOW TABLES מחזיר לך לתוך מערכת ולבדוק אם הטבלה שאתה צריך קיימת.

ofek_golan 13-10-06 22:01

כאילו אותו קוד רק להוריד את הFROM?
אז איך אני משווה בשמות?

RS324 14-10-06 00:00

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

Tomer 14-10-06 01:02

ציטוט:

נכתב במקור על ידי ofek_golan
כאילו אותו קוד רק להוריד את הFROM?
אז איך אני משווה בשמות?

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

אתה חותר כאן לבקש קוד, שזה דבר אסור כאן בפורום.

אני מבקש מכולם: באשכול הזה ספציפית לא יינתן שום קוד, ואני מתכוון לשום קוד

-VladK- 14-10-06 01:23

תראה אופק...אנשים מסבירים לך...יש לך שיאלתה...SHOW TABLES...כשאתה מוסיף לו FROM X זה יראה לך את הטבלאות שנמצאות במסד X...מסקנה: לא צריך FROM X...כלומר השיאלתה שלך זו רק SHOW TABLES...

ofek_golan 14-10-06 11:52

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

-VladK- 14-10-06 12:57

ציטוט:

נכתב במקור על ידי ofek_golan
זה מה שאמרתי שהקוד שרשמתי נכון ורק צריך להוריד את הFROM..
לא ביקשתי קוד ביקשתי עזרה בתיקון שלו

אז אתה רוצה שאנחנו כאילו נוריד את זה בשבילך? בואנה אתה בכח מנסה להשיג אזהרה נכון? =/

ofek_golan 14-10-06 13:19

לא אמרתי שתוריד שאלתי אם התיקון הזה נכון מאיפה אתה למדת לקרוא?

eLad 14-10-06 13:33

ציטוט:

נכתב במקור על ידי ofek_golan
לא אמרתי שתוריד שאלתי אם התיקון הזה נכון מאיפה אתה למדת לקרוא?

בוא נקצר תהליכים, אני אכתוב לך את האלגוריתם ואתה תיישם, אוקי?

- שלוף את כל הטבלאות מהמסד בשם db-name
- תכניס את שמות הטבלאות למערך
- תרוץ על המערך ותחפש איבר במערך שיהיה שווה ל tbl-name (הטבלה שאתה רוצה לבדוק האם היא קיימת)

במידה ומצאת טבלה כזו, צא מהלולאה (אין טעם להמשיך הרי)..

meshuga 14-10-06 14:49

ציטוט:

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

- שלוף את כל הטבלאות מהמסד בשם db-name
- תכניס את שמות הטבלאות למערך
- תרוץ על המערך ותחפש איבר במערך שיהיה שווה ל tbl-name (הטבלה שאתה רוצה לבדוק האם היא קיימת)

במידה ומצאת טבלה כזו, צא מהלולאה (אין טעם להמשיך הרי)..

אפילו לא צריך לולאה, יש פונקציה in_array...פשוט מחזירה אמת או שקר ;)...

RS324 14-10-06 14:56

ציטוט:

נכתב במקור על ידי meshuga
אפילו לא צריך לולאה, יש פונקציה in_array...פשוט מחזירה אמת או שקר ;)...

דווקא כן צריך לולאה , את ה WHILE של המשיכה מה DB

הפקודה SHOW TABLES מחזירה הרבה שורות
כמו
SELECT * FROM TABLE

אז אתה חייב פה WHILE

ofek_golan 14-10-06 17:37

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

-VladK- 15-10-06 05:07

אההם...mysql_fetch_array

יכול להיות שאני טועה...יש לי נידודי שינה =/ לא מצליח להירדם..בעעע

Tomer 15-10-06 09:53

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

meshuga 15-10-06 10:05

ציטוט:

נכתב במקור על ידי RS324
דווקא כן צריך לולאה , את ה WHILE של המשיכה מה DB

הפקודה SHOW TABLES מחזירה הרבה שורות
כמו
SELECT * FROM TABLE

אז אתה חייב פה WHILE

אה, אני חשבתי שהיא מחזירה שורה אחת ובה כל השמות....;) טעות שלי.

RS324 15-10-06 18:10

ציטוט:

נכתב במקור על ידי Atom-Bomb
מצטער RS324 הקוד שלך נמחק. ביקשתי לא לתת לבחור קודים באשכול הזה.

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


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

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