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

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   תכנות - מדריכים, code snippets (https://hosts.co.il/forums/forumdisplay.php?f=68)
-   -   [מדריך] PHP - הפונקציה EXTRACT (https://hosts.co.il/forums/showthread.php?t=22171)

-VladK- 20-05-06 05:47

[מדריך] PHP - הפונקציה EXTRACT
 
היי.
אוקיי אז ככה ככול הנראה שמתם לב שאני כמעט כל הזמן רק מבקש עזרה וכמעט שלא נותן...
אז החלטתי שנמאס לי להיות נצלן או במילים אחרות אחד שרק מבקש....
אז היום ב-6 בבוקר התעוררתי והיתה לי הרגשה שבא לי לעזור אז הנה אני בא לפה ואני עכשיו מביא לכם פונקציה שנראה לי חוץ ממני אף אחד לא משתמש בא....לפחות בפורום הזה...
הפונקציה נקראת extract() והיא משמשת ל"העפת" האותיות המיותרות...
נראה לכם מבלבל? נראה לכם מיותר? אוקיי אז בואו תסתכלו על זה:
PHP קוד:

<?php
if(isset($_POST['submit'])) {
    require 
'db.php';
    
extract($_POST);
    
$check mysql_query("SELECT aPassword FROM Users WHERE aUsername='$Username'") or die(mysql_error());
}
?>

אוקי בוא נראה מה עשינו פה....בדקנו אם נלחץ הכפתור SUBMIT הבאנו את הקובץ DB אבל אז הופיעה לנו שורה extract($_POST);...מה היא בעצם עושה כאן אתם שואלים? אוקיי השורה הזאת אומרת שאיפה שיש את הביטוי $_POST אז אפשר לא לכתוב אותו כלומר במקום לקחת את השורה: ($_POST['Username']) אנחנו יכולים פשוט לכתוב $Username! פשוט נכון?
למה הפונקציה הזאת טובה חוץ מבגלגל שהיא מאפשרת לי לא להשתמש בחלקים מעצבנים?
תסתכלו טוב על הקוד של לקיחת שורה מהמסד... (SELECT * FROM......) כידוע לכם אסור לשים ($_POST['Username']) בתוך שורת SQL...נגיד ואתם לא רוצים לבזבז משאבי שרת בכך שתעשו משתנה שהערך שלו יהיה ($_POST['Username']) רק על מנת שיהיה ניתן להכניס את הערך של ($_POST['Username']) לשורת הSQL...

אלו היו רק דוגמאות אחדות לשימוש בEXTRACT!....יש עוד מלא דרכים לשימוש בהם...הנה דוגמא אחרונה אבל בSQL...

תסתכלו על השורה הזאת:
PHP קוד:

$userres mysql_fetch_assoc($check); 

השורה הזאת לא זוכר איך בדיוק קוראים לפעולה הזאתי אבל היא מאפשרת לי להוציא שורות מהטבלה במסד הSQL שלי...עכשיו הוצעת השורות אמורות להיראות כך:
$userres['TITLE'];
אבל אם נגדיר את הפונקציה EXTRACT כך:
extract($userres);
הקוד של הוצעת השורה יראה כך:
$TITLE;
יותר נוח...יותר פשוט...וניתן לדחוף אותו לכל מקום :) מקווה שעכשיו לא תעשו סתם קודים מיותרים |winky|
יאלה ביי|לב|

BlueNosE 20-05-06 07:43

צר לי לאכזב אותך
אבל כל הקודים שלי באתר הם עם extract
חוץ מקודים בהם אני צריך לאמת אם המשתנה ריק ואם כן להחזיר שקר
אני משתמש בזה כל הזמן בכל מקום אפשרי...
בכל מקרה, תודה =]

-VladK- 20-05-06 08:10

חחחחח חפיף...פשוט שמתי לב שאנשים כל הזמן אומרים תכניס למשתנה וזה .... תאמת לפונקציה הזאת יש רק חסרון אחד ויחיד...בקשר לSQL...נגיד ואני מוציא פעמיים מידע...רק שבאחד אני משתמש בנגיד ב$userres = mysql_fetch_assoc($check); ובשני אני משתמש ב$userres1 = mysql_fetch_assoc($check1); ...עכשיו נגיד ובשתי הטבלאות שבמסד יש לי את אותם שמות השורות...לדוגמה TITLE...אז בלי הפונקציה זה יראה כך:
$userres['TITLE']
ו...
$[userres1['TITLE']
ואם אני יפעיל את הפונקציה אז שניהם יראו אותו הדבר והPHP לא ידע במה להשתמש...

BlueNosE 20-05-06 08:38

הוא יקח את האחרון..
כע, לא טוב לאותו מסד או עם שמות זהים..

Rom 20-05-06 08:52

מדריך נחמד
אבל אני משתמש מלא בextract
חוץ ממקרים שאני צריך שהשם של המשתנה יהיה שונה מהשם של העמודה במסד/בפוסט

meshuga 20-05-06 09:06

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

PhS 20-05-06 09:32

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

-VladK- 20-05-06 09:38

שמח לעזור :) חחח אולי אני יביא עוד איזה הסברים על פונקציות שימושיות ולא מוכרות ;)

meshuga 20-05-06 09:40

ציטוט:

נכתב במקור על ידי CriSis
שמח לעזור :) חחח אולי אני יביא עוד איזה הסברים על פונקציות שימושיות ולא מוכרות ;)

חח...בכיף...

-VladK- 20-05-06 09:42

ציטוט:

נכתב במקור על ידי meshuga
חח...בכיף...

השאלה איזה..................

Ori The Man 20-05-06 09:42

לא מת על הפונקציה פעם ניסיתי להשתמש בה
עשתה לי הרבה בעיות

-VladK- 20-05-06 09:45

ציטוט:

נכתב במקור על ידי Ori The Man
לא מת על הפונקציה פעם ניסיתי להשתמש בה
עשתה לי הרבה בעיות

איזה למשל?

Ori The Man 20-05-06 09:49

ציטוט:

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

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

אבל תודה על ההשקעה :)

MasterNir 20-05-06 12:10

ציטוט:

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

כנ"ל, מקרים של כפילויות יהיו בעייתיים... חוצמיזה, יותר נוח לקבל תוצאות לתוך מערך, ולתת לו שם משמעותי, לדוגמה: $user['nickname']
וכו'

יש גם את הפונקציה list אם לא יצא לכם להכיר אותה שעושה משהו דומה.
PHP קוד:

list ($var1$var2$var3) = array(=> var1=> var2=> var3); 

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

PhS 20-05-06 12:22

הכי נח וקל
PHP קוד:

$user=$_POST['user']; 

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

-VladK- 20-05-06 14:30

ציטוט:

נכתב במקור על ידי MasterNir
כנ"ל, מקרים של כפילויות יהיו בעייתיים... חוצמיזה, יותר נוח לקבל תוצאות לתוך מערך, ולתת לו שם משמעותי, לדוגמה: $user['nickname']
וכו'

יש גם את הפונקציה list אם לא יצא לכם להכיר אותה שעושה משהו דומה.
PHP קוד:

list ($var1$var2$var3) = array(=> var1=> var2=> var3); 

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

חחח אני לא הבנתי...

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

MasterNir 20-05-06 15:34

ציטוט:

נכתב במקור על ידי CriSis
חחח אני לא הבנתי...

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

הופנקציה מקבלת מספר משתנים ($var1, $var2, $var3 במקרה שלנו) מפרקת מערך.
תוכל לקרא עליה ב-www.php.net/list

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

-VladK- 20-05-06 15:48

מגניב! אבל לדעתי זה לא ממש שימושי

MasterNir 20-05-06 15:52

זה פותר את הבעיה של כפילויות בשמות...

Morishani 20-05-06 17:06

RE
 
זה מה שזה עושה?
PHP קוד:

foreach ($_POST as $key=>$value)
    $
$key $value

אם כן אז זה בערך כמו register globals, וזה עושה הרבה בעיות מבחינת בטיחות האתר.
ידוע שאפשר להוסיף לpost ולget ערכים בלי סוף גם אם זה לא מטופס באתר.
אם זה מה שזה עושה, אז אני לא ממליץ אבל תודה על הפונקציה :)

meshuga 20-05-06 17:18

ציטוט:

נכתב במקור על ידי CriSis
מגניב! אבל לדעתי זה לא ממש שימושי

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

-VladK- 20-05-06 18:53

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


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

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