Nur das erste Ergebnis ausgeben

  • Themenstarter Themenstarter andyK
  • Beginndatum Beginndatum
A

andyK

Hallo,


Ich habe in einer Datenbank die DIN-Größen A4-A0 zu stehen.

Nach Eingabe von Höhe und Breite sagt mir der Code,
auf welchem Format ich die eingegebene Größe drucken kann.

So weit, so gut.
Nun das Problem:

Ein A4 kann ich ja auch auf einem A2 oder A1 Blatt drucken. Und genau das zeigt
er mir auch an.
Er beginnt ja mit dem richtigen Format. Also größer A4 --> A3. doch am Ende
steht immer A0.

Wie kann ich nur das erste gefundene Ergebnis anzeigen lassen?
Danach soll er stoppen.

Die Datenbank durchsuche ich mit einer while-Schleife.


MfG

Andy
 
Hallo!

Für so eine simple Frage findest du keine Antwort?!
Vielleicht solltest du mal die Manual lesen?!
Setz doch einfach hinten an deine Query

Code:
LIMIT 1

dran.

Also einfach:

Code:
SELECT dinsize FROM din WHERE height >= 30 AND width >= 20 LIMIT 1
 
Hallo!

Also auf Anhieb würde ich sagen, das du die Schleife weglassen solltest, wenn er
Dir auf Anhieb immer das richtige Ergebnis ausgibt.

mfg Hoizwurm
 
Daran hatte ich schon gedacht und es probiert.
Doch mit Einschränkungen.

Sind meine Maße größer als A4 (der erste Eintrag in der DB), steht ja die erst-
mögliche Größe bspw. in Zeile 3.
Die wird ja dann nicht ausgegeben.
 
OK, jetzt weiss ich nicht ganz wo dein Problem liegt.
Kannst du mal den PHP-Code (bitte nicht das gesamte Script, sondern nur den relevanten Teil) posten - ABER BITTE MIT MYSQL-QUERY
Oder zumindest nur die Query!
 
PHP:
$sql = "SELECT * FROM din";
			  $result = mysql_query($sql);

			  while ($row = mysql_fetch_assoc($result))
			  {
				
			    if ( ($breite - $row["breite"] <= 40) && ($breite - $row["breite"] > 0) )
			  	   {
			  	     echo "<b>Testausgabe: </b><br>";
			  	     echo " Es kann noch auf ";
			  	     echo $row["name"];
			  	     echo " gedruckt werden. <br>";
			  	     echo $row["id"];
			  	   }

			  	   else
			  	   {if ( ($row["breite"] - $breite >= 37) )
			  	       	 {
			  	       	   
			  	     		 echo "<br><b>Testausgabe: </b><br>";
			  	     		 echo " Es muss auf ";
			  	     		 echo $row["name"];
			  	     		 echo " gedruckt werden. <br>";
			  	     		 echo $row["id"];
			  	     		 $ergebnis_din = $row["name"];
			  	      	 }
			  	   }

			  }

Das ganze ist ein "else" Teil.
Die Abfrage, ob die Maße GENAU den DIN entsprechen, ist weiter oben
 
Zuletzt bearbeitet von einem Moderator:
Mach's mal so:

PHP:
$sql = "SELECT id, nameFROM din WHERE ($breite-breite AND ($breite-breite) > 0) OR ((breite - $breite) >= 37) LIMIT 1"; 

$row = mysql_fetch_assoc($sql);
echo "Das passende Format ist:\n<br />$row[name]< br />$row[id]";

Ob es nun genauso geschrieben werden sollte, weiss ich nicht, da nicht getestet und ich auch nicht weiss, wie der Rest des Scripts aussieht.
Bloß, du hast schon recht.
Mit LIMIT wirst du in deinem ursprünglichen Script nicht zurecht kommen, wenn due die IF-Abfrage behälst.

Ich tendiere persönlich mehr dazu solche Sachen direkt in der Query umzusetzen.
 
Ich kann mich nur der Meinung von rootssw anschließen bzw, bin ich bei meiner
ersten Meldung davon ausgegangen, das die SQL-Abfrage so in der Art aussieht.

mfg Hoizwurm
 
Super, Danke, ! :)

Allerdings so:

PHP:
$sql = "SELECT id, name FROM din WHERE (($breite-breite)<=40 AND ($breite-breite)>0) OR ((breite - $breite) >= 37) LIMIT 1"; 
$result = mysql_query($sql);
 $row = mysql_fetch_assoc($result); 
 echo $row["name"];
 
Zurück