php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 19-09-2005, 23:25
steiner82
 Member
Links : Onlinestatus : steiner82 ist offline
Registriert seit: Dec 2003
Beiträge: 278
steiner82 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Auswahlliste

Hallo,

habe folgende Frage. Mache eine Berechnung und erhalte als Ergebnis $d.
Anhand der Grösse von $d gibt es in der Auswahlliste eine Ausgabe die sich $months nennt.

Hier mein Code:

Code:
.....
$months = "";

       if ($d <= -7) {
              $months = "more than 7 months before launch";
      } else if ($d <= -4 && $d >= -6){
              $months = "6 to 4 months before launch";
      } else if ($d <= -1 && $d >= -3){
              $months = "3 to 1 months before launch";
      } else if ($d >= 0 && $d <= 3) {
              $months = "0 to 3 months";
      } else if ($d >= 4 && $d <= 6) {
              $months = "4 to 6 months";
      } elseif ($d >= 7 && $d <= 9) {
              $months = "7 to 9 months";
      } elseif ($d >= 10 && $d <= 12) {
             $months = "10 to 12 months";
      } elseif ($d >= 13 && $d <= 24) {
              $months = "1 up to 2 years";
      } elseif ($d >= 25 && $d <= 36) {
             $months = "more than 2 years up to 3 years";
      } elseif ($d >= 36 && $d <= 60) {
              $months = "more than 3 years up to 5 years";
      } elseif ($d >= 61) {
             $months = "more than 5 years";
      }
....
Jetzt steht in meiner Auswahlliste nach dem die Berechnung gemacht
wurde, folgende Dinge drinne:

10 to 12 months
1 to 3 months
0 to 3 months
more than 5 years

Jetzt möchte ich aber das die Sachen geordnet ausgegeben werden,
also der grösse nach:

0 to 3 months
1 to 3 months
10 to 12 months
more than 5 years

Wie kann ich das machen, hier meine Auswahlliste:

<option value='$months'>$months</option>
Mit Zitat antworten
  #2 (permalink)  
Alt 19-09-2005, 23:36
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

verändere die reihenfolge deiner elseif-blöcke.
Mit Zitat antworten
  #3 (permalink)  
Alt 19-09-2005, 23:39
steiner82
 Member
Links : Onlinestatus : steiner82 ist offline
Registriert seit: Dec 2003
Beiträge: 278
steiner82 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hä, das geht ja wohl nicht.
Wenn ich als Ergebnis $d bekomme und mir $months
ausgeben lasse, was von $d abhängt, kann ich
doch nicht die IF-Blöcke verändern !

Muß doch ne andere Lösung geben !
Mit Zitat antworten
  #4 (permalink)  
Alt 19-09-2005, 23:43
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

verstehe nicht, warum?

statt
PHP-Code:
if ($d <= -7) {
              
$months "more than 7 months before launch";
      } else if (
$d <= -&& $d >= -6){
              
$months "6 to 4 months before launch";
      } else if (
$d <= -&& $d >= -3){
              
$months "3 to 1 months before launch"
einfach
PHP-Code:
if ($d <= -7) {
              
$months "more than 7 months before launch";
      } elseif (
$d <= -&& $d >= -3){
              
$months "3 to 1 months before launch";
      } elseif (
$d <= -&& $d >= -6){
              
$months "6 to 4 months before launch"
etc
Mit Zitat antworten
  #5 (permalink)  
Alt 21-09-2005, 14:44
steiner82
 Member
Links : Onlinestatus : steiner82 ist offline
Registriert seit: Dec 2003
Beiträge: 278
steiner82 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das ergibt ja totalen Quatsch !
Mit Zitat antworten
  #6 (permalink)  
Alt 21-09-2005, 14:50
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von steiner82
Das ergibt ja totalen Quatsch !
OffTopic:
Das dürfte doch die Ergebnisqualität sein, die man von dir gewohnt ist.



(Möchtest du es vielleicht noch mal mit einer Problembeschreibung versuchen, die diese Bezeichnung auch verdient?)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 21-09-2005, 15:22
steiner82
 Member
Links : Onlinestatus : steiner82 ist offline
Registriert seit: Dec 2003
Beiträge: 278
steiner82 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also die Daten werden aus einer Datenbank ausgegeben. Ich habe einen Startwert
und einen Endwert, die Differenz davon ist $d.

Die If-Anweisung ist einer while Schleife und wird dann in die Auswahlliste eingetragen.
Also wird die IF-Anweisung mehrmal durchlaufen, solang halt bis alle DS ausgegeben werden auf die meine Select-Ausgabe zutrifft, so dann wird
zu jedem Datensatz(DS) eine Berechnung durchgeführt, Ergebniss ist $d.

Daher kommt es halt zu diesem durcheinander und das soll geordnet werden.

nicht die kleinen Zahl zum Schluß und der Rest am Anfang, sondern
die Ausgabe soll so erfolgen, wie die If-Anweisung, sondern
von klein nach gross.

DANKE !

P.S. Danke für das Kompliment !
Mit Zitat antworten
  #8 (permalink)  
Alt 21-09-2005, 15:27
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Ich seh zwar weder eine Auswahlliste noch mehrere Werte, aber warum packst du das alles nicht in ein Array, schreibst einen geeigneten Wert vornedran, sortierst das ganze und schmeißt den Wert dann wieder raus?

Hast du die Werte, die du für die Berechnung brauchst, alle in der Abfrage?
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #9 (permalink)  
Alt 21-09-2005, 15:31
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich habe nicht verstanden, was dagegen spricht, die abfrage nach intervalen anders anzuordnen.
Mit Zitat antworten
  #10 (permalink)  
Alt 21-09-2005, 15:58
steiner82
 Member
Links : Onlinestatus : steiner82 ist offline
Registriert seit: Dec 2003
Beiträge: 278
steiner82 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hier mal der ausführlich Code:

PHP-Code:
...............
echo 
"
<select size=\"20\" name=\"months\" class=\"listen\">"
;
echo 
"<option value='all'>All Periods</option>";
if(
$country=='all'){
$result mysql_query("SELECT p.*, b.* 
FROM project_spec as  p LEFT JOIN brand_launch as 
b ON p.country = b.country WHERE p.icd_id='$icd_id' and p.brand_id=b.brand_id Order by b.launch_time"
);
}
else
{
$result mysql_query("SELECT p.*, b.* 
FROM project_spec as p LEFT JOIN brand_launch as 
b ON p.country = b.country WHERE p.country='$country' and p.icd_id='$icd_id' and 
p.brand_id=b.brand_id Order by b.launch_time"
);
                      }
                      
$num mysql_num_rows($result);
                      function 
getTimeStampFromDate($date) {
                      
$array explode("/"$date);
                      return 
mktime(000$array[0], 1$array[1]);
                      }
                      
$array = array();
                      if (
$num != 0) {
                      while (
$row mysql_fetch_array($result)) {
$start getTimeStampFromDate($row['launch_time']);
$end getTimeStampFromDate($row['create_time']);
$d round(($end $start) / 60 60 24 30);

       
$months "";

       if (
$d <= -7) {
              
$months "more than 7 months before launch";
      } else if (
$d <= -&& $d >= -6){
              
$months "6 to 4 months before launch";
      } else if (
$d <= -&& $d >= -3){
              
$months "3 to 1 months before launch";
      } else if (
$d >= && $d <= 3) {
              
$months "0 to 3 months";
      } else if (
$d >= && $d <= 6) {
              
$months "4 to 6 months";
      } elseif (
$d >= && $d <= 9) {
              
$months "7 to 9 months";
      } elseif (
$d >= 10 && $d <= 12) {
             
$months "10 to 12 months";
      } elseif (
$d >= 13 && $d <= 24) {
              
$months "1 up to 2 years";
      } elseif (
$d >= 25 && $d <= 36) {
             
$months "more than 2 years up to 3 years";
      } elseif (
$d >= 36 && $d <= 60) {
              
$months "more than 3 years up to 5 years";
      } elseif (
$d >= 61) {
             
$months "more than 5 years";
      }

      
$array[$months]['create_time'][] = $row["create_time"];
      
print_r($array);

}

}
foreach (
$array as $months => $value) {



        echo
"
<option value='"
.implode (","$value['create_time'])."|$months'>$months
</option>"
;
                    }
        echo 
"</select></td>
.................... 
Ich hole mir aus der DB den Wert "create time" und "launch time" - Die Differenz von diesen Werten ist $d.

Wenn ich jetzt die DS durchlaufe und dann die If-Anweisung, dann kann es
ja sein, dass im ersten Datensatz "more than 5 years" rauskommt,
und im letzten Datensatz "0 to 3 months", dass wird
dann so dargestellt:

more than 5 years
0 to 3 months

es muss aber so sein, dass die Ausgaben von klein

0 to 3 months

nach gross

more than 5 years

und die Zeiträume die fehlen

z.B.

4 to 6 months als ------------------------------- angezeigt werden:

0 to 3 months
-----------------
-----------------
10 to 12 months

usw.

Da weis ich nicht weiter !
Mit Zitat antworten
  #11 (permalink)  
Alt 21-09-2005, 15:59
steiner82
 Member
Links : Onlinestatus : steiner82 ist offline
Registriert seit: Dec 2003
Beiträge: 278
steiner82 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hab vergessen die Zeile umzubrechen, entschuldigt.
Mit Zitat antworten
  #12 (permalink)  
Alt 21-09-2005, 16:05
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Zitat:
Original geschrieben von steiner82
Ich hole mir aus der DB den Wert "create time" und "launch time" - Die Differenz von diesen Werten ist $d.
Dann sortiere doch bereits in der Abfrage...

ORDER BY spalte1 - spalte2
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #13 (permalink)  
Alt 21-09-2005, 16:07
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

totaler unfug ist natürlich die verwendung des strings $months als array-schlüssel in $array.

ansonsten s. mrhappiness, er hat dir bereits 2 wertvolle ansätze vorgeschlagen.
Mit Zitat antworten
  #14 (permalink)  
Alt 21-09-2005, 21:07
steiner82
 Member
Links : Onlinestatus : steiner82 ist offline
Registriert seit: Dec 2003
Beiträge: 278
steiner82 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Order by spalte 1 - spalte 2 geht nicht, habe ich schon probiert.

Warum ist das mit dem $array als $months Unfug ?

Habe trotzdem keine genaue Idee, wie ich das umsetzen kann.

Könnt ihr mit bitte noch einen Ansatz geben ?
Mit Zitat antworten
  #15 (permalink)  
Alt 21-09-2005, 21:39
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

lass dir $array zum schluss ausgeben - das muss ja übel aussehen...

$months muss eine zahl sein, z.b. 0 für den ersten interval, 10 für den letzten, dazwischen entsprechend nummeriert.

danach kannst du mit einer for-schleife (oder foreach + zähler) die datensätze in der richtigen reihenfolge ausgeben (weil eben durchgehend von 0 bis 10) und anhand des ersten schlüssel die entsprechenden strings zusammenbasteln (dazu kann man sich ein array basteln, z.b. array(0=>'foo', 1=>'bar'), etc.).

klingt sogar für mich recht verwirrend, aber so könnte es ausschauen:

Code:
$array[0][1] => 0 steht für "more than 7 months before launch", 1 für den datensatz #1
$array[0][2] => 0 steht für "more than 7 months before launch", 2 für den datensatz #2
$array[1][1] => 1 steht für "6 to 4 months before launch", 1 für den datensatz #1
$array[2][1] => 2 steht für "3 to 1 months before launch", 1 für den datensatz #1
etc.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

jqPlot jQuery Plotting Plugin ansehen jqPlot jQuery Plotting Plugin

jqPlot ist ein plotting und charting plugin für das jQuery Javascript framework

06.11.2019 Berni | Kategorie: AJAX/ Framework
WYSIWYG Editor

WYSIWYG Editor zum Einbinden in PHP Scripte.

21.10.2019 Stephan_1972 | Kategorie: PHP/ WYSIWYG
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

10.10.2019 Stephan_1972 | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:26 Uhr.