מספר שאלות PHP

dino_din

New member
מספר שאלות PHP

מקבץ שאלות שנאספו אצלי בשבוע האחרון - 1) כאשר אני שולח נתונים מטופס מסויים לעמוד אחר שאמור להכניס אותם לקובץ. כמה זמן לוקח לנתונים להתווסף ? (יש לי הוראה בראש הדף שמקבל את הנתונים לעבור ישר לעמוד אחר אחרי שתי שניות. האם יש מצב שזה לא יספיק לנתונים להיקלט ?). 2) אני רוצה בדף התצוגה להתיג את נתוני המשתנים ב PHP בתוך טבלה. האם ליצור קובץ HTML ובכל תא של תבלה לשים תג PHP ובתוכו את שם המשתנה או ליצור דף HTML ואת כל הטבלה ליצור ב ECHO ? מה נהוג ? 3) אחרי שבדקתי את הקוד הבא נראה לי שאם בקובץ יש יותר מחמש רשומות הם יוצגו שוב ושוב ושאר הרשומות (מהחמישית והלאה) לא יוצגו אף פעם כי זה מדפיס רק את חמשת התאים הראשונים המערך. למרות זאת כאשר אני מריץ את הקוד גם אם ב AFILE יש 10 תאים זה מציג את כולם ...לא ברור לי למה ?
$afile = file($data); for ($num = 0; $num < count($afile); $num++) { $bfile = explode("|", $afile[$num]); echo "$bfile[0]"; echo "$bfile[1]"; echo "$bfile[2]"; echo "$bfile[3]"; echo "$bfile[4]"; }​
קצת מבולבל אני יודע אבל אני לא יודע איך להסביר זאת טוב יותר. תודה למי שינסה לענות :) בברכה, דינו.
 

matroz

New member
answers

1. no problem. the php uses a thread when working with files, and it would not take 2 secs. 2. either way is good. note that writing html runs faster than using the echo/print command. 3. explaing it again. sorry for the english, no hebrew on my machine.
 

תמר,

New member
בקשר למספר 2

זה בדוק שתגי html יותר מהירים? בבדיקה שנעשתה להשוואת מהירות, נמצא ש-printf הכי מהיר, לאחריו תגי html ואח"כ echo ו-print. האם ידוע לך על המלצות של php בנידון?
 

matroz

New member
php

yes. running the code using the html hardcoded html tags will be faster. from the php developers themselves. if you stop and think about : on the serverside you are callng a function to write a client side code for you . the code needs to be interpeted by the client browser. as for hardcoding the tags requires no server side time (no matter how little it is), and the client browser. may you be the judge.
 

תמר,

New member
נשמע הגיוני

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

matroz

New member
בדיקת מהירות

בדקתי את נושא המהירות. ההשוואה מתייחסת אך ורק לפונקציות מצד השרת המובנות ב php. printf מהירה יותר מ -echo,print . אך עדיין כולם נופלות מ hardcoded html. מתי
 

dino_din

New member
Thanks and explain

תודה מאטרוז. נראה לי שאני אשתמש בקוד HTML ובתוכו אני אשלב PHP בכל מקום שארצה להכניס ערך של משתנה. השאלה האחרונה שלי הייתה קצת מסובכת. יש לי את הקוד הבא :
$afile = file($data); for ($num = 0; $num < count($afile); $num++) { $bfile = explode("|", $afile[$num]); echo "$bfile[0]"; echo "$bfile[1]"; echo "$bfile[2]"; echo "$bfile[3]"; echo "$bfile[4]"; }​
במשתנה AFILE יש לי עשר מילים מופרדות בקו ולכן אחרי פקודת הEXPLODE אמור לי מערך בשם BFILE שיש בו 10 תאים ובכל אחד מילה.
bfile[0] = word1 bfile[1]= word1 bfile[2]= word1 bfile[3]= word1 bfile[4]= word1 bfile[5]= word1 bfile[6]= word1 bfile[7]= word1...​
לכן כאשר אני מציג למסך את הערך של BFILE מ -0 עד 4 אני מצפה לקבל את חמשת המשתנים הראשונים נכון ? כמו שאתה רואה ההצגה של המשתנים נמצאת בלולאה וכל פעם זה מדפיס לי את חמשת המשתנים הבאים בתור. השאלה שלי היא כזו : למה בסוגרים המרובעים יש מספר (תא 1, תא 2 וכך הלאה) ולא משתנה שכל פעם מקודם באחד ? לפי מה שנראה לי זה יכנס ללולאה וכל פעם ידפיס לי רק את חמשת המשתנים הראשונים שהופרדו מה AFILE ולמרות זאת כשאני מריץ את זה זה פועל בסדר וכל פעם בתאיפ 1 עד חמש יש לי את המשתנים הבאים בתור. שוב, אני יודע שקצת קשה להסביר את זה אז תסלחו לי... תודה למי שיתיחס, ושנה טובה, דינו.
 

matroz

New member
let me see

i don´t know if i understood you correctly, but let´s see: you are asking why you are seeing always the first 5 and not the same ones ? if this is the question than the answer is very simple - every time you run the loop the explode function erases the values once in $bfile[], and recreates the array, so no increamention is required. hope that it helpes you understand that.
 

dino_din

New member
בדיוק ההפך...

הייתי מצפה לראות את חמשת הראשונים כל פעם אבל זה דווקא לא קורה ! אני כן רואה את הבאים בתור. נגיד ואחרי פקודת ה EXPLODE יש לי מערך שנקרא BFILE ויש בו 15 תאים. כמו שראית בקוד יש הדפסה של התאים:
bfile[0] bfile[1] bfile[2] bfile[3] bfile[4]​
לכן אני חשבתי ששאר התאים (ממקום 5 והלאה) לא יודפסו כי בפקודת ה ECHO יש רק תאים מ - 0 ועד 4. למרות זאת אני כן רואה הדפסה של שאר התאים. אומנם זו התוצאה הרצויה אבל אני לא מבין איך זה קורה ? שוב תודה על העזרה, דינו.
 

תמר,

New member
אתה מדפיס בלולאה?

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

dino_din

New member
תודה תמר

מה אני אגיד לך... זה פועל כמו שצריך אבל אני פשוט לא מבין למה... הקטע הוא שיש לי בעיה אחרת עם הצגת הנתונים בקובץ. אני לא מצליח להכניס ירידת שורה. זה כל הזמן דופק לי את ההצגה...הרשומות מתבלבלות וכלום לא עוזר (ניסיתי אנטר רגיל, ניסיתי /n ניסית <BR>). אז אני מנסה להבין איך בדיוק הנתונים נקלטים כי אולי זה יעזור לי למצוא פתרון... תודה על העזרה. שנה טובה, דינו.
 
למעלה