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

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



  #8  
ישן 26-07-2013, 17:49
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 7 שנכתבה על ידי דוכובניק שמתחילה ב "זה בא מקוד PHP"

אם אתה רוצה שמסד הנתונים יעשה משהו - זאת שאלת SQL

אם אתה רוצה לעשות משהו ב PHP, אז זה לא קשור ל SQL, ולא קשור לפונקציות SQL.

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

למעשה, אין שום הבדל בקונספטים...

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

אם אתה צריך לדעת גם את זמן ההתחלה והסיום וגם רוצה שיעשו את החישוב בשבילך מה היה זמן העבודה, אז שים רק את ההתחלה והסיום ב DB, ובשליפה, שלוף אותם, יחד עם ההפרש (שאותו אתה יכול אכן לחשב באמצעות פונקציית ה SQL שציינת, שהיא TimeDiff) - אין צורך לשמור מידע פעמיים ב DB... זה נגד חוקי הנרמול, וזה מסבך עדכונים בהמשך..
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 27-07-2013, 09:58
  דוכובניק דוכובניק אינו מחובר  
 
חבר מתאריך: 29.04.04
הודעות: 638
ראשית אני מודה לך על "נירמול" :-) העבודה שלי
בתגובה להודעה מספר 8 שנכתבה על ידי שימי שמתחילה ב "אם אתה רוצה שמסד הנתונים יעשה..."

כפי שבודאי הבנת אלו צעדי הראשונים ב PHP.
דו"ח השעות שברצוני להפיק זו משימה דחופה יותר מלעבוד נכון.
אני רוצה שכל המידע הדרוש ימצא במסד הנתונים כדי לחסוך ממני עוד ועוד אבני נגף .
ישנתי על התגובה שלך ומצאתי אותה נכונה ומוצדקת. והבעיה היא ב MYSQL ולא ב PHP.
למעשה מלכתחילה ניסיתי להוסיף את הפרש : סיום עבודה - תחילת עבודה באמצעות שאילתת MYSQL. מכיוון שלא הצלחתי קיוויתי שהישועה תבוא מכיוון PHP.
ניסיתי שוב כך:
קוד PHP:
<?php
$con
=mysqli_connect("localhost","root","root","db");
// Check connection
if (mysqli_connect_errno())
  {
  echo 
"Failed to connect to MySQL: " mysqli_connect_error();
  }

$sql="INSERT INTO June2013 (remark, startdate, enddate,interval_time,institution, company)
VALUES
(
 '
$_GET[Remark]',
 '
$_GET[startDate]',
 '
$_GET[endDate]',
 TIMEDIFF('
$_GET[endDate]','$_GET[startDate]'),
 '
$_GET[Institution]',
 '
$_GET[company]'
 )"
;

if (!
mysqli_query($con,$sql))
  {
  die(
'Error: ' mysqli_error($con));
  }
echo 
"1 record added";
?>

הפעם לא קיבלתי הודעת שגיאה. הנתון של הפרש שעות שאמור היה להיות 6 שעות התקבל כ: -9999.99 שעות.
כלומר, עודני שרוי בבעיית PHP. השדה בטבלה הוא מסוג DATETIME. הנתונים כפי שהוקלדו ב FORM היו בתבנית:
10:00:00 2013-07-23 לשעת התחלה ו 16:00:00 2013-07-23 מדוע:
קוד:
TIMEDIFF('$_GET[startDate]','$_GET[endDate]'),

חישב 9999 ?
הבעיה שלי כעת היא באיזו צורה מגיע נתון מ FORM? טקסט? מספר?
תודה !
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 27-07-2013, 10:18
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 9 שנכתבה על ידי דוכובניק שמתחילה ב "ראשית אני מודה לך על "נירמול" :-) העבודה שלי"

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

דבר שני,
תעזר ב phpmyadmin ודומיו כדי לנסות להריץ שאילתות על המסד טרם התכנות בPHP,
כדי לתכנן אותן נכון ולזהות שהן עובדות כמו שצריך.

בדוגמא שלך, כשהרצתי את השאילתה במסד לפי המידע שתיארת:
קוד:
SELECT TIMEDIFF( '16:00:00 2013-07-23', '10:00:00 2013-07-23' )

קיבלתי NULL בתוצאה.
שים לב לפורמט של הזמן, שצריך להיות:
קוד:
Y-m-d H:i:s

כלומר,
קוד:
SELECT TIMEDIFF( '2013-07-23 16:00:00', '2013-07-23 10:00:00' )

שאכן מחזיר
קוד:
06:00:00



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


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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #13  
ישן 28-07-2013, 08:39
  דוכובניק דוכובניק אינו מחובר  
 
חבר מתאריך: 29.04.04
הודעות: 638
בתגובה להודעה מספר 12 שנכתבה על ידי MatiM שמתחילה ב "var_dump זה אכן PHP. ..."

https://2013-uploaded.fresh.co.il/2...28/26699073.gif
שלום MatiM,
ותודה על התגיסותך להצלתי :-)
להלן הקוד ל "טופס":
קוד:
<html> <body> <form action="insert_persons.php" method="GET"> startdate: <input type ="text" name="startDate"> enddate: <input type ="text" name="endDate"> <input type="submit"> </form> </body> </html>

להלן הטופס בכבודו ובעצמו:
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
להלן קוד PHP למטרת איתור הפרש הזמן בין startdate ל endate.
קוד PHP:
<?php
$con
=mysqli_connect("localhost","root","root4qpines","tigbur");
// Check connection
if (mysqli_connect_errno())
  {
  echo 
"Failed to connect to MySQL: " mysqli_connect_error();
  }
echo 
var_dump('$_GET[endDate]');
$time_interval strtotime('$_GET[endDate]');
echo 
var_dump('$time_interval'); 
?>

בשתי הוראות ה echo var_dump קיבלתי על המסך הודעה שהמדובר ב string.
זה לא שאני מריץ string. ההפך, אני משתוקק בכל נימי נפשי שזה יהיה time או datetime או משהו שניתן יהיה לחשב באמצעותו את הפרש השעות בין enddate ל startdate. ועזוב אותך עכשיו מנירמול וסירבול המערכת וכיו"ב. איך אני מבצע פעולה אריתמטית של שעת סיום פחות שעת התחלה?!
תודה
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #16  
ישן 28-07-2013, 19:19
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 15 שנכתבה על ידי דוכובניק שמתחילה ב "העברתי ל var_dump את המשתנה..."

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

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

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

דעתי האישית היא שעדיף שתתחיל ללמוד PHP מההתחלה, בלי דילוגים. כי אתה מפספס כאן דברים חשובים מאוד... וצריך להכיר את השפה שאיתה אתה הולך לתקשר עם מערכות חיצונית (כמו DB) לפני שרצים להתעסק במערכות החיצונית. אם "אין לך זמן ללמוד", ואתה צריך בזבנג וגמרנו לפתור את הבעייה - אני ממליץ שתחסוך לכולם (כולל לעצמך) המון זמן - ופשוט תשכור מישהו שכבר יודע את המלאכה, שיבצע לך אותה כמו שצריך. אבל זו דעתי, ודעתי בלבד.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #17  
ישן 20-08-2013, 23:41
  fadey fadey אינו מחובר  
 
חבר מתאריך: 15.07.02
הודעות: 1,027
בתגובה להודעה מספר 15 שנכתבה על ידי דוכובניק שמתחילה ב "העברתי ל var_dump את המשתנה..."

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

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

בהצלחה
_____________________________________
ציטוט:
Different people use different tools, but its mostly morons who pretend that the problems with PHP actually matter.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

הדף נוצר ב 0.06 שניות עם 10 שאילתות

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

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