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

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



  #1  
ישן 05-12-2015, 21:05
צלמית המשתמש של ^Noel^
  משתמש זכר ^Noel^ ^Noel^ אינו מחובר  
 
חבר מתאריך: 22.06.08
הודעות: 12
יצירת מונה


[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://i.imgur.com/tVtEKUe.png]


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

ניסיתי לטפל בעזרת הסבר בפורום אחר + בפורום הזה ולא הלך
1. היפוך טקסט (לפחות את העברית הצלחתי לסדר)
2. מימין לשמאל
3. ספירה לאחור (השתמשתי במדריך מפה ודווקא עבד http://websitety.netne.net/GD/count.php
אבל זה לא עבד כמו שרציתי...
בקיצור, אני 70% (נדמה לי?) כבר מצליח עם המד זמן הזה ואני רק רוצה לדעת איך לתקן את מה שאני נכשל בו...
קוד PHP:
<?php
    
function hebrew ($im,$size,$angle,$x,$y,$color,$font,$text)
     {
    
$text=iconv("windows-1255""UTF-8"$text);
    
preg_match_all("/./us",$text,$ar);
    
$text=implode('',array_reverse($ar[0]));
    
imagettftext  ($im $size $angle $x $y  $color $font $text);
}

header("Content-type: image/png");
$im=imagecreatefrompng ("img/hpbd.png") or die ("Cannot Create image");

$color=imagecolorallocate($im,0,0,0);
$font="C:/windows/Fonts/arial.ttf";  
$text="יום הולדתך בעוד";
imagettftext($im,10,0,77,20,$color,$font,$text);

imagepng($im);
imagedestroy($im);  
?>
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 05-12-2015, 21:19
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,303
בתגובה להודעה מספר 1 שנכתבה על ידי ^Noel^ שמתחילה ב "יצירת מונה"

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

הראית קוד אבל לא את מה שיש לך בעייה בו - לא נראה שיש בקוד שלך שום דבר שקשור לחישוב תאריכים (אני משער שלזו כוונתך ב"ספירה לאחור")

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 05-12-2015, 22:04
צלמית המשתמש של ^Noel^
  משתמש זכר ^Noel^ ^Noel^ אינו מחובר  
 
חבר מתאריך: 22.06.08
הודעות: 12
בתגובה להודעה מספר 2 שנכתבה על ידי שימי שמתחילה ב "יש פונקציה מיוחדת ב PHP..."

ניסיתי את הפונקציה ויצא לי ג'יבריש...
זה בעצם הספירה שלי לאחור (הלינק ששלחתי)
קוד PHP:
<?php
        
function hebrew ($im,$size,$angle,$x,$y,$color,$font,$text)
     {
    
$text=iconv("windows-1255""UTF-8"$text);
    
preg_match_all("/./us",$text,$ar);
    
$text=implode('',array_reverse($ar[0]));
    
imagettftext  ($im $size $angle $x $y  $color $font $text);
}

$month 7// Month of the countdown 
$day 1// Day of the countdown 
$year 2004// Year of the countdown 

// mktime is the marked time, and time() is the current time. 
$target mktime(0,0,0,$month,$day,$year); 
$diff time()-$target

$days = ($diff - ($diff 86400)) / 86400
$diff $diff - ($days 86400); 
$hours = ($diff - ($diff 3600)) / 3600
$diff $diff - ($hours 3600); 
$minutes = ($diff - ($diff 60)) / 60
$diff $diff - ($minutes 60); 
$seconds = ($diff - ($diff 1)) / 1

header ("Content-type: image/png"); 
$imgname "img/hpbd.png"
$im = @imagecreatefrompng ($imgname); 
$black imagecolorallocate ($im,0,0,0); 

imagestring ($im35515.5,  "יום הולדתך בעוד: [ $days day(s) ] [ $hours hour(s) ] [ $minutes minute(s) ] [ $seconds second(s) ]"$black); 
imagepng ($im); 
imagedestroy ($im); 
?>


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

נערך לאחרונה ע"י ^Noel^ בתאריך 05-12-2015 בשעה 22:10.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 05-12-2015, 22:12
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,303
בתגובה להודעה מספר 3 שנכתבה על ידי ^Noel^ שמתחילה ב "ניסיתי את הפונקציה ויצא לי..."

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

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

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 06-12-2015, 07:48
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,303
בתגובה להודעה מספר 5 שנכתבה על ידי ^Noel^ שמתחילה ב "אוקיי חשבתי על זה ואני יכול..."

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

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

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 06-12-2015, 12:34
צלמית המשתמש של ^Noel^
  משתמש זכר ^Noel^ ^Noel^ אינו מחובר  
 
חבר מתאריך: 22.06.08
הודעות: 12
בתגובה להודעה מספר 6 שנכתבה על ידי שימי שמתחילה ב "אפשר לעשות את זה (אבל ככה לא..."

אוקיי... ממש הסתבכתי פה...
קוד PHP:
<?php 
        
function hebrew ($im,$size,$angle,$x,$y,$color,$font,$text
     { 
    
$text=iconv("windows-1255""UTF-8"$text); 
    
preg_match_all("/./us",$text,$ar); 
    
$text=implode('',array_reverse($ar[0])); 
    
imagettftext  ($im $size $angle $x $y  $color $font $text); 


$month 1
$day 1
$year 2015

// mktime is the marked time, and time() is the current time.  
$target mktime(0,0,0,$month,$day,$year);  
$diff time()-$target;  

$days = ($diff - ($diff 86400)) / 86400;  
$diff $diff - ($days 86400);  
$hours = ($diff - ($diff 3600)) / 3600;  
$diff $diff - ($hours 3600);    
 
$imgname "img/hpbd.png";  
$im = @imagecreatefrompng ($imgname);  
$black imagecolorallocate ($im,0,0,0);  

hebrew ($im35515.5"יום הולדתי חל בעוד: $days ימים, $hours שעות."$black);  
header ("Content-type: image/png"); 
imagepng ($im);  
imagedestroy ($im);  
?>

לפעמים זה מוציא לי ג'יבריש ולפעמים זה מוציא את התמונה
אני בכלל רוצה שיהיה רשום "יום הולדתי ה-X (בהתאמה לשנת הלידה) חל בעוד Y ימים ו-Z שעות."
להתחיל מהתחלה?... אני פשוט לא בטוח מה לעשות פה ואני לא מבין מה לא בסדר ומה לתקן
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 06-12-2015, 13:48
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 7 שנכתבה על ידי ^Noel^ שמתחילה ב "אוקיי... ממש הסתבכתי פה......"

אתה לא צריך להתחיל מההתחלה.

הכיוון שלך טוב, וצריך רק לסדר כמה דברים וזה יעבוד

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


נתחיל מהשורה הזאת:
קוד:
hebrew ($im, 3, 55, 15.5, "יום הולדתי חל בעוד: $days ימים, $hours שעות.", $black);


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

שים לב שאתה צריך להעביר את כל הפרמטרים בסדר הבא:
  1. מזהה תמונה
  2. גודל הפונט
  3. זווית הטקסט
  4. מיקום על ציר X
  5. מיקום על ציר Y
  6. צבע
  7. פונט
  8. הטקסט בעצמו
לכן, צריך לשנות את השורה למשהו כזה:
קוד:
hebrew ($im, 10, 0, 77, 20, $black , "C:/windows/Fonts/arial.ttf", "יום הולדתי חל בעוד: $days ימים, $hours שעות.");


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


דבר שני, בגלל שאני יוצא מהנחה שהקידוד תקין, אתה יכול עכשיו למחוק את השורה הזאת:

קוד:
$text=iconv("windows-1255", "UTF-8", $text);


שנמצאת בתוך הפונקציה hebrew.




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


נערך לאחרונה ע"י MatiM בתאריך 06-12-2015 בשעה 13:55.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 06-12-2015, 14:02
צלמית המשתמש של ^Noel^
  משתמש זכר ^Noel^ ^Noel^ אינו מחובר  
 
חבר מתאריך: 22.06.08
הודעות: 12
בתגובה להודעה מספר 8 שנכתבה על ידי MatiM שמתחילה ב "אתה לא צריך להתחיל..."


[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://i.imgur.com/C3JqSkB.png]

זה עובד
- כתבתי את יום הולדתי ה-X אבל זה כותב לי הפוך...
אבל הבעיה היא שהמשתנים שלי (יום, חודש ושנה) הם בעצם מספרים שאני הצבתי... איך אני גורם להם להיות מספרים שאני מקבל מהמשתמש?
- זה כתב 933 ימים וכולנו יודעים שבשנה יש 365 ימים

קוד PHP:
<?php 
        
function hebrew ($im,$size,$angle,$x,$y,$color,$font,$text
     { 
    
preg_match_all("/./us",$text,$ar); 
    
$text=implode('',array_reverse($ar[0])); 
    
imagettftext  ($im $size $angle $x $y  $color $font $text); 


$month 1
$day 1
$year 1995
$age 2015-$year;

// mktime is the marked time, and time() is the current time.  
$target mktime(0,0,0,$month,$day,$year);  
$diff time()-$target;  

$days = ($diff - ($diff 86400)) / 86400;  
$diff $diff - ($days 86400);  
$hours = ($diff - ($diff 3600)) / 3600;  
$diff $diff - ($hours 3600);    
$minutes = ($diff - ($diff 60)) / 60
$diff $diff - ($minutes 60); 
$seconds = ($diff - ($diff 1)) / 1
 
$imgname "img/hpbd.png";  
$im = @imagecreatefrompng ($imgname);  
$black imagecolorallocate ($im,0,0,0);  

hebrew ($im1007720$black "C:/windows/Fonts/arial.ttf""יום הולדתי ה-$age חל בעוד: $days ימים, $hours שעות ו- $minutes דקות. ");
header ("Content-type: image/png"); 
imagepng ($im);  
imagedestroy ($im);  
?>

נערך לאחרונה ע"י ^Noel^ בתאריך 06-12-2015 בשעה 14:07.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 06-12-2015, 14:12
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 9 שנכתבה על ידי ^Noel^ שמתחילה ב "..."

כדי להוסיף את הגיל, אכן תצטרך להוסיף משתנה נוסף. כמובן.


כדי לקבל את הערכים מהמשתמש, בשביל מונה כזה, הייתי מציע להשתמש בGET.
זה אומר שהכתובת של הדף תהיה כזאת -

קוד:
http://..../birthday.php?day=1&month=2&year=2000


ואז כל אחד יוכל לשים את הערכים שמתאימים בשבילו ותוצג התמונה עם הערכים המתאימים.

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


והערות אחרונות:
  1. שים לב שהחישוב בקוד שלך לא טוב. לא יכול להיות שרק עוד 900+ ימים יחול יום ההולדת שלך. זה אמור להיות מתישהו בטווח של 1-365 ימים.
  2. כדאי לשנות את הטקסט ל "יחול" (בעתיד) ולא "חל" (בעבר)
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #13  
ישן 06-12-2015, 14:51
צלמית המשתמש של ^Noel^
  משתמש זכר ^Noel^ ^Noel^ אינו מחובר  
 
חבר מתאריך: 22.06.08
הודעות: 12
בתגובה להודעה מספר 12 שנכתבה על ידי MatiM שמתחילה ב "הקוד ששמת נכון. :) אבל..."

מצטער שאני מציק
אבל אני עדיין לא ממש מבין איך לבדוק את הבדיקה הרלבנטית של הימים והחודשים (אני קופץ ישר לבדיקה של C#)

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://i.imgur.com/REah20W.png]

עכשיו זה מציג לי 0 ימים 0 שעות ו-0 שניות לא משנה מה אני כותב
והגיל עדיין הפוך
זאת בטח טעות ממש מטופשת, אני מרגיש דביל חח
קוד PHP:
<?php  
        
function hebrew ($im,$size,$angle,$x,$y,$color,$font,$text)  
     {  
    
preg_match_all("/./us",$text,$ar);  
    
$text=implode('',array_reverse($ar[0]));  
    
imagettftext  ($im $size $angle $x $y  $color $font $text);  
}  
$month $_GET["month"]; 
$day =  $_GET["day"]; 
$year $_GET["year"]; 
date("Y");
$age date("Y") - $year;

// mktime is the marked time, and time() is the current time.   
$target mktime(0,0,0,$month,$day,$year);   
$diff time()-$target;   

$diff 1303725600 time();

$days floor($tDiff 86400);
$hours = ($tDiff 3600) % 24;
$minutes = ($tDiff 60) % 60;
$seconds = ($tDiff) % 60;
 
  
$imgname "img/hpbd.png";   
$im = @imagecreatefrompng ($imgname);   
$black imagecolorallocate ($im,0,0,0);   

hebrew ($im1006020$black "C:/windows/Fonts/arial.ttf""יום הולדתי ה-$age יחול בעוד $days ימים, $hours שעות, $minutes דקות, ו- $seconds שניות. ");
header ("Content-type: image/png");  
imagepng ($im);   
imagedestroy ($im);   
?>
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 06-12-2015, 15:28
צלמית המשתמש של MatiM
  משתמש זכר MatiM MatiM אינו מחובר  
 
חבר מתאריך: 12.04.06
הודעות: 2,021
שלח הודעה דרך MSN אל MatiM
בתגובה להודעה מספר 13 שנכתבה על ידי ^Noel^ שמתחילה ב "מצטער שאני מציק אבל אני עדיין..."

אוקיי,

לא שמתי לב לזה קודם -
הבעיה היא פשוט שהפונקציה hebrew הופכת את כל המחרוזת.
ולכן, 15 הופך להיות 51,
ומקודם קיבלת 933 במקום 339 וכו'.


שימי העלה את הנקודה הזאת בכך שהוא הזכיר את הפונקציה hebrev.
אבל משום מה אני לא רואה שהיא עובדת כל כך כמצופה,
ולכן, לפי אחת ההצעות שהעלו בתגובות כאן:
http://php.net/manual/en/function.hebrev.php

אתה יכול לשנות את הפונקציה hebrew שלך למשהו כזה:

קוד:
function hebrew ($im,$size,$angle,$x,$y,$color,$font,$text){ $text = iconv("ISO-8859-8", "UTF-8", hebrev(iconv("UTF-8", "ISO-8859-8", $text))); imagettftext ($im , $size , $angle , $x , $y , $color , $font , $text); }


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

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



לגבי החישוב שמציג 0, שים לב שהמשתנה $tDiff לא מוגדר.
אתה צריך להשתמש ב $diff במקום.

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


נערך לאחרונה ע"י MatiM בתאריך 06-12-2015 בשעה 15:31.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

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

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

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