Begrenzung des $dataset

Malchor

Erfahrenes Mitglied
Hallo Gemeinde,

ich habe vor einiger Zeit ein Skript geschrieben was einen Flugplan mit samt seinen Flügen anzeigen soll. Dies funtkioniert auch ganz einwandfrei. Nun hat aber dieses Skript die Zusatzfunktion, das keine Flüge mehr angezeigt werden, sobald man selber bereits einen gebucht hat. Auch das funktioniert, in gewissser Maßen. Man bekommt auch den Satz angezeigt "You allready booked a flight", leider bekommt man diesen Satz so oft, wie es auch Flüge ab diesem Flughafen in der DB gibt. Ich habe es bereits mit Group probiert, brachte aber wie erwartet keine Besserung.

Kann man den Dataset eventuell limitieren, der dieses Satz druckt?

Hier mal das Skript:
PHP:
<?PHP
$abfrage = "SELECT
                     `piloten`.`letzter_standort` , 
					 `piloten`.`aktueller_Flug` , 
                     `Flugplan`.`flughafenid1` , 
                     `Flugplan`.`dep_time` , 
                     `Flugplan`.`flughafenid2` , 
                     `Flugplan`.`arr_time` , 
                     `Flugplan`.`flugnummer`,
                     `Flugplan`.`days`,
					 `Flugplan`.`company`,
                     `Flugplan`.`registrierung` ,
                     `Flugplan`.`flugzeug_id`,
                     `Flugplan`.`gebucht`, 
					 `Flughafen`.`flughafenid`,
                     `Flughafen`.`flughname`
            FROM 
                     piloten, 
                     Flugplan,
					 Flughafen
            WHERE   
                     (pilot_id = '" . mysql_real_escape_string($pilot_id) . "') 
			And
			         (`Flugplan`.`flughafenid2` = `Flughafen`.`flughafenid`)
            AND
                     (`Flugplan`.`comment` = '')
			AND
                     (`piloten`.`letzter_standort` = `Flugplan`.`flughafenid1`)
			AND
                      (`Flugplan`.`days` LIKE '%$datum%')
					 
			ORDER BY 
					`Flugplan`.`dep_time`  ASC LIMIT 0 , 1000;";
$ergebnis = mysql_query($abfrage) or die ("MySQL-Error: " . mysql_error());

?>
<table WIDTH="99%" border="0" align="center" "."cellpadding="1" cellspacing="1" bgcolor="#666666" class="tableLine">
    <tr>
        <th>Flugnummer</th>
        <th>Abflugzeit</th>
        <th>Zielflughafen</th>
        <th>Ankunftszeit</th>
        <th>Flugtage</th>
        <th>Stops</th>
        <th>Entfernung</th>
        <th>Company</th>
        <th>Info</th>
    </tr>
<?php 
 $colchange = 1;
    while ($dataset = mysql_fetch_array($ergebnis)){ 
if (($ergebnis)!=0){

	if ($dataset['aktueller_Flug'] != ''){
		
		  {
        print "<tr bgcolor=\"#999999\" align=\"center\">";
        print "<td></td><td></td><td></td><td>You allready booked a flight</td><td></td><td></td><td></td><td></td><td></td></tr>";
       

    }
    print "</td></tr>\n";
				
	}else{	
    	if($dataset['gebucht'] == 'B'){
      	   $gebucht = '*fully booked*';
	}
		elseif($dataset['gebucht'] == 'C'){
       		  $gebucht = '*Flight canceled*';
	}	
		else 
	{
        	  $gebucht="<a href='FPS_buchung_flug.php?flugnummer={$dataset['flugnummer']}'>{$dataset['flugnummer']}</a>&nbsp";
    }
	
 print "    <tr bgcolor=\"$color\">\n";
 print "        <td>{$gebucht}</td>\n";
 print "        <td>{$dataset['dep_time']}</td>\n";
 print "        <td>{$dataset['flughname']}&nbsp;</td>\n";
 print "        <td>{$dataset['arr_time']}&nbsp;</td>\n";
 print "        <td>{$dataset['days']}&nbsp;</td>\n";
 print "        <td>{$dataset['via']}&nbsp;</td>\n";
 print "        <td>$entfernung_rund nm</td>\n";
 print "        <td>{$dataset['company']}&nbsp;"."</td>\n";
 print "        <td align=\"center\"><a href='FPS_buchung_fluginfo.php?flugnummer={$dataset['flugnummer']}'><img src='http://www.americanblue-va.com/pictures/info.gif' 
alt=\"Info\"/></a>&nbsp</td>\n";
 print "    </tr>\n";
        
        // ++ hinter der Variablen bewrikt das immer 1 dazugezählt wird. in einer schleife passiert das bei jedem durchgang.
        $colchange++;
    }
	}
else 

{
	print "    <tr bgcolor=\"$color\">\n";
    print "        <td></td>\n";
    print "        <td></td>\n";
	print "        <td></td>\n";
    print "        <td></td>\n";
    print "        <td>We are Sorry, but today we don`t offer any Flights</td>\n";
    print "        <td></td>\n";
	print "        <td></td>\n";
    print "        <td></td>\n";
    print "        <td></td>\n";
    print "    </tr>\n";
	}

	
 }// while ende
    
?>

Hiermal das Foto wie es mom aussieht:
Beweis2.jpg
 
Variante mit einem Flag.
PHP:
$flag = true;
while(...){
    if($flag){
        echo "We are Sorry, but today we don`t offer any Flights";
        $flag = false;
    }
}
Dito mit Zähler.
PHP:
$counter = 0;
while(...){
    if(++$counter == 1){
        echo "We are Sorry, but today we don`t offer any Flights";
    }
}
 
Es geht ja nicht um das "Sorry" sondern "Allready booked" und da habe ich keinen schimmer wie ich das da zusätzlich reinzwingen soll
 
Ich versteh ehrlich gesagt nicht was du meinst.
Kannst du es bitte nochmal richtig erklären? in deinem 1. Post hast du geschrieben das diese Meldung nur einmal in dieser Tabelle angezeigt werden soll. Dies ist mit der oben genannten Lösung möglich.
Wenn du jedoch was anderes meinst, dann erklär es bitte noch mal ausführlich.
 
@Maniac du hattest es richtig verstanden mein letzter Beitrag galt Yaslaw.

Aber auf dich noch mal bezogen, wie kann ich das in den betroffenen fataset einauen
 
Unter deiner Variable "$colchange" erstellst du das Flag wie yaslaw beschrieben. Die Bedingung kommt mit in die WHILE-Schleife und dein Text der ausgfegeben wird kommt in diese Bedingung....
 
Also das geht zwar, aber dafür werden dann weitere Flüge zum buchen angeboten, und das soll ja nicht passieren

PHP:
<?php 
 $colchange = 1;
 $flag = true;

    while ($dataset = mysql_fetch_array($ergebnis)){ // <--- Klammerfehler, hier gehört die klammer auf

        
        // modulo ob gerade oder ungerade
        if ($colchange % 2) {
            $color = "#B6B6B6";
        } else {
            $color = "#999";
        }
		
$counter = 0;		
		
		
if (($ergebnis)!=0){
	if ($dataset['aktueller_Flug'] != '' & $flag ){
		 $flag = false;
 		  {
        print "<tr bgcolor=\"#999999\" align=\"center\">";
        print "<td></td><td></td><td></td><td>You allready booked a flight</td><td></td><td></td><td></td><td></td><td></td></tr>";
      
    }
    print "</td></tr>\n";
				
	}else{	
    	if($dataset['gebucht'] == 'B'){
      	   $gebucht = '*fully booked*';
	}
		elseif($dataset['gebucht'] == 'C'){
       		  $gebucht = '*Flight canceled*';
	}	
		else 
	{
        	  $gebucht="<a href='FPS_buchung_flug.php?flugnummer={$dataset['flugnummer']}'>{$dataset['flugnummer']}</a>&nbsp";
    }
	
 print "    <tr bgcolor=\"$color\">\n";
 print "        <td>{$gebucht}</td>\n";
 print "        <td>{$dataset['dep_time']}</td>\n";
 print "        <td>{$dataset['flughname']}&nbsp;</td>\n";
 print "        <td>{$dataset['arr_time']}&nbsp;</td>\n";
 print "        <td>{$dataset['days']}&nbsp;</td>\n";
 print "        <td>{$dataset['via']}&nbsp;</td>\n";
 print "        <td>$entfernung_rund nm</td>\n";
 print "        <td>{$dataset['company']}&nbsp;"."</td>\n";
 print "        <td align=\"center\"><a href='FPS_buchung_fluginfo.php?flugnummer={$dataset['flugnummer']}'><img src='http://www.americanblue-va.com/pictures/info.gif' 
alt=\"Info\"/></a>&nbsp</td>\n";
 print "    </tr>\n";
        
        // ++ hinter der Variablen bewrikt das immer 1 dazugezählt wird. in einer schleife passiert das bei jedem durchgang.
        $colchange++;
    }
	}
else 

{
	print "    <tr bgcolor=\"$color\">\n";
    print "        <td></td>\n";
    print "        <td></td>\n";
	print "        <td></td>\n";
    print "        <td></td>\n";
    print "        <td>We are Sorry, but today we don`t offer any Flights</td>\n";
    print "        <td></td>\n";
	print "        <td></td>\n";
    print "        <td></td>\n";
    print "        <td></td>\n";
    print "    </tr>\n";
	}

	
 }// while ende
    
?>

Beweis3.jpg
 
PHP:
 if ($dataset['aktueller_Flug'] != '' & $flag ){

Kann nicht funktionieren, wundert mich das es keinen Fehler oder eine Notice wirft. Kann sein das hier die Referenz von $flag nur gesetzt wird. Wenn dann muss es so aussehen:
PHP:
 if ($dataset['aktueller_Flug'] != '' && $flag === true ){
 
Zurück