Wert 0 nicht ausgeben

Nezih

Grünschnabel
Hallo,
ich habe ein folgendes Problem
Ich bastel an einem Hoteldatenbank und das Problem ist, das es den wert 0 nicht anzeigen soll, also wenn Hotelpreise nicht vorhanden ist, soll der wert (zimmerpreis) nicht ausgegeben werden.

DATENBANKSTRUKTUR:
CREATE TABLE hotel_zimmerpreise (
id bigint(20) NOT NULL auto_increment,
von_hotel_zimmer bigint(20) NOT NULL default '0',
jahreszahl bigint(20) NOT NULL default '0',
jan01 double NOT NULL default '0',
jan02 double NOT NULL default '0', (usw)
KEY id (id)
) TYPE=MyISAM;

PHP Code:
if ($hotel_zimmerpreise){
(die Verbindung zum Datenbank ist aufgebaut)

kann mir da jemand helfen?
Ich wäre dankbar
Gruß
Nezih
 
Wo ist denn genau das Problem? Wenn du es schaffst das alles auszugeben, dann dürftest du doch eine einfache if-Abfrage hinbekommen?
PHP:
if($row['zimmerpreis'] > 0) /* $row['zimmerpreis'] ist der aus der DB kommende Wert*/
{
    // Ausgabe
}
 
Hallo
danke für das schnelle antwort
aber leider geht es nicht...
ich habe z.B. daten (Doppelzimmer) 01.05.bis 30.05.für das hotel erfasst. Aber wenn ich z.B. von 02.02.2008 bis auf berechnen/buchen drücke zeigt es mir den wert 0 an.
Beispiellink ist unten:
http://www.traways.com/cms/cms/frame_hotelstest.php?akt=hotel_details&hotel=1
hast du vielleicht andere idee?
Danke schon mal...


Hallo Ronaldo,
ich danke dir sehr... aber ich habe leider nichts von der ASrt in forum finden können.
Gruß
Nezih
 
Zeig doch mal Auszüge aus dem Script. Interessant wären hier die Abfrage für den Preis in dem angegebenen Zeitraum und die Ausgabe der Daten.
 
So sieht Code aus....
PHP:
	// Preis berechnen und zurueckgeben
	function get_preis ($hotel_zimmerpreise, $personen, $anreise_tag, $anreise_monat, $abreise_tag, $abreise_monat){
		$result = mysql_query ("SELECT * FROM hotel_zimmerpreise WHERE id='$hotel_zimmerpreise'");
		$row    = mysql_fetch_array($result);
		$monat  = array("jan", "feb", "mae", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "dez");

		// Preisberechnung
		$fertig = false;
		$betrag = 0.00;
		for ($i = $anreise_monat; $i <= $abreise_monat && !$fertig; ++$i){
			$abbruch = false;
			$beginn = ($i > $anreise_monat)? 1:$anreise_tag;

			for ($j = $beginn; !$abbruch && !$fertig; ++$j){
				$mo = $monat[$i - 1].sprintf("%02d", $j);
				if (!isset($row[$mo])) $abbruch = true;
				else {
					// 29. Februar (Schaltjahrproblem) beruecksichtigen
					if (!($i == 2 && $j == 29) || schaltjahr($row['jahreszahl'])) $betrag += $row[$mo];
					if ($i == $abreise_monat && $j == $abreise_tag) $fertig = true;
				}
			}
		}
		$betrag *= $personen;
		
		$result = mysql_query ("SELECT kalkulationsaufschlag FROM festwerte");
		$row = mysql_fetch_array($result);
		$kalkulationsaufschlag = $row['kalkulationsaufschlag'];
		
		$betrag *= ($kalkulationsaufschlag + 100)/100;
		
		$betrag = sprintf ("%.2f", $betrag);
		return ($betrag);
	}

	// Preisberechnung fuer ein bestimmtes Hotel, Feststellen ob saemtliche uebergebenen
	// Daten gueltig sind und fuer die Berechnung herangezogen werden koennen. Ausgabe
	// von jeweiligen Fehlerstatusmeldungen -- Wenn die Variable "hotel_zimmerpreise" den Wert 0 hat,
	// findet keine Preisberechnung statt, der Kunde erhaelt lediglich die Moeglichkeit,
	// eine Preisanfrage zu senden.
	function preis_berechnung ($hotel, $anreise_tag, $anreise_monat, $abreise_tag, $abreise_monat, $jahr, $hotel_zimmerpreise, $personen){

		if (!checkdate ($anreise_monat, $anreise_tag, $jahr)) die ("<font face=\"Arial\" size=\"2\" color=red>Ung&uuml;ltiges 

Anreisedatum.<br>.z.B. 31.06. (Monat Juni hat 30 Tage</font>");
		$von   = gregorian2jt ($anreise_tag, $anreise_monat, $jahr);
		$bis   = gregorian2jt ($abreise_tag, $abreise_monat, $jahr);
		$heute = gregorian2jt (date ("d"), date ("m"), date ("Y"));

		$anzahl_tage = $bis - $von + 1; // Tage, die der Gast im Hotel verbringt

		// Flughafen relevante Daten holen
		$result = mysql_query ("SELECT
			hotel.name AS hotel_name,
			flughafen.id AS flughafen_id,
			flughafen.code AS flughafen_code,
			stadt.name AS stadt_name,
			land.name AS land_name
			FROM hotel
			LEFT JOIN stadt ON hotel.stadt=stadt.id
			LEFT JOIN land ON stadt.von_land=land.id
			LEFT JOIN flughafen ON hotel.flughafen=flughafen.id
			WHERE hotel.id='$hotel'");

		$row = mysql_fetch_array($result);
		$stadt_name       = $row['stadt_name'];
		$land_name        = $row['land_name'];
		$flughafen_id     = $row['flughafen_id'];
		$flughafen_code   = $row['flughafen_code'];
		$hotel_name       = $row['hotel_name'];

		// Informationen vom entsprechenden Zimmertyp usw. holen (nur bei Buchung)
		// Bei Angebot, diese Abfrage aussen vor lassen
		if ($hotel_zimmerpreise){
			$result = mysql_query ("SELECT
					hotel.name AS hotel_name,
					hotel_zimmertyp.bezeichnung_lang AS bezeichnung_lang,
					hotel_zimmertyp.belegung_min AS belegung_min,
					hotel_zimmertyp.belegung_max AS belegung_max,
					hotel.vorlauf_tage AS vorlauf_tage
				FROM hotel_zimmertyp, hotel_zimmer, hotel_zimmerpreise, hotel
				WHERE hotel_zimmerpreise.id='$hotel_zimmerpreise'
					AND hotel_zimmer.von_hotel=hotel.id
					AND hotel_zimmerpreise.von_hotel_zimmer=hotel_zimmer.id
					AND hotel_zimmer.von_hotel_zimmertyp=hotel_zimmertyp.id");

			$row = mysql_fetch_array($result);
			$bezeichnung_lang = $row['bezeichnung_lang'];
			$belegung_min = $row['belegung_min'];
			$belegung_max = $row['belegung_max'];
			$vorlauf_tage = $row['vorlauf_tage'];
		}

		// Fuer Hotelanfrage relevanten Daten holen
		else{
			$result = mysql_query ("SELECT name, vorlauf_tage FROM hotel WHERE id='$hotel'");
			$row = mysql_fetch_array($result);
			$hotel_name = $row['name'];
			$vorlauf_tage = $row['vorlauf_tage'];
		}

		if ($heute > $von || $heute > $bis) die ("<font face=\"Arial\" size=\"2\" color=red>Das Reisedatum liegt in der 

Vergangenheit.</font>"); ;
		if ($von - $heute < $vorlauf_tage) die ("<font face=\"Arial\" size=\"2\" color=red>Ihre Buchung ist zu kurzfristig. Zwischen 

Buchungstag und Anreisetag m&uuml;ssen mindestens $vorlauf_tage Tage liegen.</font>");

		if ($anzahl_tage < 1) die ("<font face=\"Arial\" size=\"2\" color=red>Abreisedatum liegt vor dem Anreisedatum.</font>");
		if ($anzahl_tage < MIN_TAGE) die ('Mind. '.MIN_TAGE.' Tage Aufenthalt ('.(MIN_TAGE-1).' &Uuml;bernachtungen).');
		// Wenn hotel_zimmerpreise = 0, dann sind keine hotel_zimmerpreise vorhanden und der Kunde kann nur eine Anfrage senden
		if($row['zimmerpreis'] > 0){
			// Feststellen, ob Zimmer mit gewaehlter Personenzahl belegbar
			if ($personen > $belegung_max) die ("<font face=\"Arial\" size=\"2\" color=red>Zu viele Personen f&uuml;r diesen Zimmertyp. 

Maximal $belegung_max Person(en) m&ouml;glich.<br></font>");
			// Feststellen ob Mindestbelegung uebereinstimmt
			if ($personen < $belegung_min) die ("<font face=\"Arial\" size=\"2\" color=red>Zu wenige Personen angegeben. F&uuml;r 

diesen Zimmertyp muessen mindestens $belegung_min Person(en) einbuchen.</font>");
		}
		echo '<form name="daten_hotel" onsubmit="return form_check(this)" action="'.PHP_SELF.'" method="get">';
 
Hier:
PHP:
// Preisberechnung
        $fertig = false;
        $betrag = 0.00;
        for ($i = $anreise_monat; $i <= $abreise_monat && !$fertig; ++$i){

Du fragst in der for-Schleife ab, ob $fertig false ist (das !), was von Anfang an der Fall ist. Entferne das Ausrufezeichen vor dem $fertig, dann sollte es gehe.
Den restlichen Code hab ich jetzt nicht weiter nach Fehlern abgesucht.
 
Zurück