ABA


"שאלה ממש קטנטונת ב-PHP"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #14343 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 14343
Zippo 
חבר מתאריך 26.5.02
7921 הודעות, דרג אמינות חבר זה
   15:52   28.08.08   
אל הפורום  
  שאלה ממש קטנטונת ב-PHP  
 
OK, זה משהו קטן שמציק לי, והחלטתי לסדר:

אז ככה, באתר יש דף שמציג את פרטי המשתמש.
ויש טבלה, שאחת השורות מראה את מי אותו משתמש הזמין לאתר.

http://img165.imageshack.us/img165/2526/udrv6.jpg

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

הנה הקוד:


print("<tr><td class=rowhead>Invites gave</td><td align=left>$invitedby</td></tr>\n");

בשביל לרדת כל שם, אני מניח שאפשר פשוט להוסיף <br> אחרי המשתנה...
אבל אני לא רוצה כל שם. אני רוצה כל 5 שמות, או 10, או משהו כזה... אנאערף...

רעיונות?


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  ... little O man 28.08.08 17:18 1
     אני אצטרך את הקוד ממש, כי אני לא יודע PHP Zippo  28.08.08 17:50 2
         בגלל שזה עם מערך אז זה פשוט... CaTz 28.08.08 21:31 3
             לא ממש הבנתי... Zippo  28.08.08 22:12 4
                 יש אפשרות לספור לתוך משתנה אורך של מחרוזת? Zippo  29.08.08 12:33 5
                     מכתב לדוד akoka 30.08.08 14:51 10
                 תנסה להעתיק איך שזה... CaTz 29.08.08 13:27 6
                     ERROR Zippo  29.08.08 16:24 7
                         תוריד את ה- CaTz 30.08.08 00:23 9
  תביא את הקוד שיש מעל... Dotan  29.08.08 23:01 8
  OK - שוב בעיה! לא מבין מה קורה פה. Zippo  31.08.08 00:04 11
     תאמינו לי אתם סיבכתם את התינוק לגמרי :) akoka 31.08.08 00:12 12
         הבעיה נפתרה - אבל לא ע''י wordwrap Zippo  31.08.08 00:41 13
  פשוט יכלת להריץ counter ולבדוק ולהוסיף br פשוט מאוד . Salio  31.08.08 06:08 14
     כבר ציינתי באחת התגובות למעלה שזה לא טוב לי. Zippo  31.08.08 12:21 15

       
little O man
חבר מתאריך 27.5.02
1109 הודעות, דרג אמינות חבר זה
   17:18   28.08.08   
אל הפורום  
  1. ...  
בתגובה להודעה מספר 0
 
   צריך את השורה שמכניסה ערך לתוך $inviteby.
אתה יכול לעשות בתוך זה COUNTER מסוים, שכל 5 אנשים יוסיף BR. ואז כל 5 או 10 לפי מה שתחליט זה יוריד שורה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות, דרג אמינות חבר זה
   17:50   28.08.08   
אל הפורום  
  2. אני אצטרך את הקוד ממש, כי אני לא יודע PHP  
בתגובה להודעה מספר 1
 
ואין לי מושג מה ה-Synthax הנכון להשתמש בו...

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


while ($ct_a = mysql_fetch_array($ct_r)){
if ($ct_a=='no')
$invitedby .= "<a href=/userdetails.php?id=$ct_a><font color='red'>$ct_a</font></a> , ";
else
$invitedby .= "<a href=/userdetails.php?id=$ct_a>$ct_a</a> , ";


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות, דרג אמינות חבר זה
   21:31   28.08.08   
אל הפורום  
  3. בגלל שזה עם מערך אז זה פשוט...  
בתגובה להודעה מספר 2
 
   תעשה משהו כזה:

$counter = 1;
while ($ct_a = mysql_fetch_array($ct_r))
{
$break_line = (counter%5)? '<br />':'';
if ($ct_a=='no')
$invitedby .= "<a href=/userdetails.php?id=$ct_a><font color='red'>$ct_a</font></a> , ";
else
$invitedby .= "<a href=/userdetails.php?id=$ct_a>$ct_a</a> , ";

$invitedby .= $break_line;
++$counter
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות, דרג אמינות חבר זה
   22:12   28.08.08   
אל הפורום  
  4. לא ממש הבנתי...  
בתגובה להודעה מספר 3
 
אם נתרגם לעברית מה שאני מבין:

משתנה_ספירה=1
כל עוד משתנה_מוזמנים = מוזמניםSQL, בצע:
אם משתנה_עבור_שורה = משתנה_ספירה(5) אז:
<BR>
אם מוזמן=NO (לפי מה שאני מבין, ה-NO זה בשביל מוזהרים או מורחקים)
אז תכתוב שם_מוזמן בצבע אדום.
אחרת,
תכתוב שם מוזמן.
משתנה_מוזמנים = משתנה עבור שורה
משתנה_ספירה + 1

ויש פה דברים שלא מסתדרים לי...

אם אני יקח ככה את הקוד, AS IS... וידביק אותו במקום הקוד הקיים, זה יעבוד?

אני לא רוצה לדפוק משהו, ואני רוצה להבין מה אני עושה...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות, דרג אמינות חבר זה
   12:33   29.08.08   
אל הפורום  
  5. יש אפשרות לספור לתוך משתנה אורך של מחרוזת?  
בתגובה להודעה מספר 4
 
ערכתי לאחרונה בתאריך 29.08.08 בשעה 12:36 בברכה, Zippo
 
בצורה כזאת ש:

אורך_שורה_מותר = 50
אורך_כולל = 0
כל עוד יש שמות להדפיס, בצע:
-אורך_כולל = אורך כולל + אורך_שם משתמש + 3 (*+ 3 תווים לרוויח, פסיק, רווח)
-אם אורך_כולל > אורך שורה מותר, בצע:
--<BR>
---אם משתמש קיבל באן, בצע
----הדפס שם_משתמש באדום
---אחרת,
----הדפס שם משתמש
--אורך_שורה_מותר = אורך_שורה_מותר + 50
-אחרת,
--אם משתמש קיבל באן, בצע
---הדפס שם_משתמש באדום
--אחרת,
---הדפס שם משתמש

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

מישהו יכול לכתוב לי את הקוד לזה?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

דרג אמינות חבר זה
   14:51   30.08.08   
אל הפורום  
  10. מכתב לדוד  
בתגובה להודעה מספר 5
 
  

$length = strlen($string);


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות, דרג אמינות חבר זה
   13:27   29.08.08   
אל הפורום  
  6. תנסה להעתיק איך שזה...  
בתגובה להודעה מספר 4
 
   ערכתי לאחרונה בתאריך 29.08.08 בשעה 13:29 בברכה, CaTz
 
מה שאני עשיתי זה הכנסתי משתנה לתוך הלולאה שכל פעם הוא גדל.
עכשיו השתמשתי בפפונקציית שארית של תוצאת חילוק.

כל פעם שהמונה מתחלק באופן שווה, כלומר תוצאת השאירית היא 0, זה מוסיף את הBR.

עכשיו אתה רוצה לשלוט כל כמה מילים אז תשנה את הסיפרה 5 לכל מספר אחר...

תנסה להדביק AS IS זה אמור לעבוד, מקסימום יש לך גיבויים...(אם אין תגבה!)

עריכת הקוד שמתי לב שחסר $;


<?php
$counter = 1;
while ($ct_a = mysql_fetch_array($ct_r))
{
$break_line = ($counter%5)? '<br />':'';
if ($ct_a=='no')
$invitedby .= "<a href=/userdetails.php?id=$ct_a><font color='red'>$ct_a</font></a> , ";
else
$invitedby .= "<a href=/userdetails.php?id=$ct_a>$ct_a</a> , ";
$invitedby .= $break_line;
++$counter
}
?>


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות, דרג אמינות חבר זה
   16:24   29.08.08   
אל הפורום  
  7. ERROR  
בתגובה להודעה מספר 6
 
ערכתי לאחרונה בתאריך 29.08.08 בשעה 16:27 בברכה, Zippo
 
Parse error: syntax error, unexpected '<' in /mounted-storage/home99b/sub009/sc62340-WXVP/www/userdetails.php on line 113

שורה 113 זה:

<?php


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות, דרג אמינות חבר זה
   00:23   30.08.08   
אל הפורום  
  9. תוריד את ה-  
בתגובה להודעה מספר 7
 
  
<?php

?>


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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dotan  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.10.03
2849 הודעות, 2 פידבק, 4 נקודות
   23:01   29.08.08   
אל הפורום  
  8. תביא את הקוד שיש מעל...  
בתגובה להודעה מספר 0
 
   את הFOR או WHILE שיש מעל...

בעקרון צריך לקחת מונה, לאפס בהתחלה ואז בכל פעם שאתה מקדם לבדוק אם הוא מתחלק ב5 או 10 (כמו שרצית), אם שארית החלוקה היא 0, זה זה אומר שהודפסו כבר 5, במקרה הזה אתה מדפיס "<br>" או כל דבר אחר שתרצה... או לא הבנת, תביא בכל מקרה את הFOR או WHILE שיש מעל


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות, דרג אמינות חבר זה
   00:04   31.08.08   
אל הפורום  
  11. OK - שוב בעיה! לא מבין מה קורה פה.  
בתגובה להודעה מספר 0
 
בקשר לקוד של CATZ - הייתה בעיה עם הסינטקס.
היו חסרים הרבה ; או { או } וכו'...
אבל הדבר הכי חשוב שהושמט בקוד, היה ה- או ה-
שלאחר המשתנה ct_a$

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

הרי יכולים להיות שמות משתמש באורך 3 תווים, ושמות באורך 50.
במצב קיצוני, תוכל להייוצר שורה של 5 שמות קצרים בעלי 3 תווים, ולאחריה, שורה אורכה של 5 שמות עם 50 תווים...

בכל אופן, הקוד שהשתמשתי בו, הוא כדלהלן:


$sizelimit = 150;
$linelength = 0;
while ($ct_a = mysql_fetch_array($ct_r))
{
$linelength .= strlen($ct_a);
if ($ct_a=='no')
$invitedby .= "<a href=/userdetails.php?id=$ct_a><font color='red'>$ct_a</font></a> , ";
else
$invitedby .= "<a href=/userdetails.php?id=$ct_a>$ct_a</a> , ";
if ($linelength > $sizelimit)
{
$invitedby .= "<br />";
$linelength = 0;
}
}

אבל בפועל, לא משנה מה אני מגדיר ב: sizelimit$
150 או 350 או 500...
תמיד יודפסו לי 3 שמות, ללא התחשבות באורך השם.

חשבתי בהתחלה, שאולי כל השמות באותו אורך, נניח 50 תווים מקסימלים, ורק לאחר התווים הנראים, יש הרבה Blanks...

אבל אני לא בטוח.

אז איך אני יוכל לשכלל את הקוד, כך שה- <BR> יתווסף באמת מתי שצריך...?

אגב, ככה נראית התוצאה עם הקוד הנ"ל (500 במקום 150...):
http://rotter.name/User_files/nor/48b9b5b478c2a104.jpg


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

דרג אמינות חבר זה
   00:12   31.08.08   
אל הפורום  
  12. תאמינו לי אתם סיבכתם את התינוק לגמרי :)  
בתגובה להודעה מספר 11
 
   http://il.php.net/wordwrap

אתה לא צריך מעבר לזה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות, דרג אמינות חבר זה
   00:41   31.08.08   
אל הפורום  
  13. הבעיה נפתרה - אבל לא ע''י wordwrap  
בתגובה להודעה מספר 12
 
wordwrap היה חותך לי שמות באמצע.
לא טוב.

בכל אופן, התייעצתי עם מומחה. (אבא)
והבעיה נפתרה ע"י הקוד הבא:


$sizelimit = 80;
$linelength = 0;
while ($ct_a = mysql_fetch_array($ct_r))
{
$un = trim($ct_a);
$linelength = $linelength + strlen($un) + 3 ;
if ($ct_a=='no')
$invitedby .= "<a href=/userdetails.php?id=$ct_a><font color='red'>$un</font></a> , ";
else
$invitedby .= "<a href=/userdetails.php?id=$ct_a>$un</a> , ";
if ($linelength > $sizelimit)
{
$invitedby .= "<br />";
$linelength = 0;
}
}

ועכשיו זה עובד פרפקט:
http://rotter.name/User_files/nor/48b9be9e1e6052eb.jpg


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Salio 
חבר מתאריך 31.12.06
833 הודעות, דרג אמינות חבר זה
   06:08   31.08.08   
אל הפורום  
  14. פשוט יכלת להריץ counter ולבדוק ולהוסיף br פשוט מאוד .  
בתגובה להודעה מספר 0
 
  

www.MizrahitClub.co.il
-> מזרחית קלאב - הבית החם של המוסיקה המזרחית.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zippo 
חבר מתאריך 26.5.02
7921 הודעות, דרג אמינות חבר זה
   12:21   31.08.08   
אל הפורום  
  15. כבר ציינתי באחת התגובות למעלה שזה לא טוב לי.  
בתגובה להודעה מספר 14
 
שם משתמש יכול להיות עד 25 או 50 תווים.
באופן עקרוני, יכול להיווצר מצב קיצוני של שורה מלאה בשמות העלי 2-3 תווים, ולאחריה, שורה של שמות בעלי 50 תווים.

לכן אני רציתי לפי מספר תווים כולל, ולא לפי מספר שמות.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net