DIN A x Größe bestimmen

  • Themenstarter Themenstarter andyK
  • Beginndatum Beginndatum
A

andyK

Hallo,

ich habe folgendes Problem.
In zwei Textfelder gebe ich Breite und Höhe an.

In einer Datenbank mit drei Spalten (DIN, BREITE, HOEHE) stehen die
DIN Größen A5 bis A0

Nun soll mir irgend ein Code nach der Eingabe von Breite und Höhe ausgeben,
auf welches Format die eingegebenen Maße passen.

Gebe ich zum Beispiel die genauen DIN A4 Maße ein, sollte die Ausgabe auch
DIN A4 sein.

Ist ein Feld größer als die DIN Maße, sollte das nächst größere Format
ausgegeben werden. Also DIN A3.

Der Code sollte auch die Möglichkeit checken, ob die Eingabe evtl. im
Querformat sein könnte.

--

Ich bin über jeden Lösungsvorschlag und Codeschnipsel dankbar.
 
Lösungsvorschlag:

Usereingabe zB. eingabe_breite und eingabe_hoehe.

Frag dann den DIN Wert aus Deiner DB-Tabelle ab bei dem BREITE = eingabe_breite UND HOEHE = eingabe_hoehe ODER BREITE = eingabe_hoehe UND HOEHE = eingabe_breite ist.

Das sollte klappen.
 
Original geschrieben von RayMatrix
Lösungsvorschlag:

Usereingabe zB. eingabe_breite und eingabe_hoehe.

Frag dann den DIN Wert aus Deiner DB-Tabelle ab bei dem BREITE = eingabe_breite UND HOEHE = eingabe_hoehe ODER BREITE = eingabe_hoehe UND HOEHE = eingabe_breite ist.

Das sollte klappen.
Ja würde es auch, aber dazu muss der user exakt die richtigen Werte eingeben. Aber es soll ja, wenn die eingegeben Werte größer als die von DIN4 z.b. sind, das nächst größere Format ausgewählt werden. Dazu müssen dann noch ein paar mehr Abfragen her.
 
Hallo,

ich hab das jetzt erstmal soweit, dass der Code erkennt, ob es sich um
eine DIN-Größe handelt und ob es im Hoch- oder Querformat eingegeben
wurde.

Nun find ich aber, dass der Code ziemlich schlampig und viel zu groß ist.
Kann man das eleganter, einfacher schreiben?

PHP:
<?php

//Test-Variablen deklarieren

//$breite_eingabe = $_POST["breite"];
//$hoehe_eingabe = $_POST["hoehe"];
$breite_eingabe = 420;
$hoehe_eingabe = 297;

//Verbindung zur Datenbank
$dbconnect = mysql_connect("localhost","root","");
mysql_select_db("druck");

//Hoch- oder Querformat
if ($breite_eingabe < $hoehe_eingabe)
   {
      echo "Hochformat<br>";
      
      $sql = "SELECT * FROM din WHERE breite='".$breite_eingabe."'";	//Datenbank nach Wert durchsuchen
	  $result = mysql_query($sql);
	  if (mysql_num_rows($result)>0)	//Wurde der eingegebene Wert gefunden
    	 {
			$sql = "SELECT * FROM din WHERE hoehe='".$hoehe_eingabe."'";
			$result = mysql_query($sql);
			if (mysql_num_rows($result)>0)
    		{
				$sql_select = "SELECT name FROM din"; //Ausgabe entsprechendes DIN
				$ergebnis = mysql_query($sql_select);
				if (mysql_num_rows($ergebnis)>0)
				   { 
					 $DIN = mysql_fetch_array($result);
					 echo $DIN["name"];
					 echo "<br>";
				   }
    		}
    	 }
   } 
   	 else
     {
     	echo "Querformat<br>";

      $sql = "SELECT * FROM din WHERE hoehe='".$breite_eingabe."'";	//Datenbank nach Wert durchsuchen
	  $result = mysql_query($sql);
	  if (mysql_num_rows($result)>0)	//Wurde der eingegebene Wert gefunden
    	 {
			$sql = "SELECT * FROM din WHERE breite='".$hoehe_eingabe."'";
			$result = mysql_query($sql);
			if (mysql_num_rows($result)>0)
    		{
				$sql_select = "SELECT name FROM din"; //Ausgabe entsprechendes DIN
				$ergebnis = mysql_query($sql_select);
				if (mysql_num_rows($ergebnis)>0)
				   { 
					 $DIN = mysql_fetch_array($result);
					 echo $DIN["name"];
					 echo "<br>";
				   }
    		}
    	 }     	

     }

?>

Meine zweites Problem ist jetzt, wie ich automatisch in die nächst höhere
DIN Größe wechsel, wenn die eingegebene Größe für bspw. A4 zu groß ist,
aber kleiner als A3 ist? --> Ausgabe wäre dann A3

Vorschläge?


MfG

Andy
 
Ich nochmal...

Hab ich da jetzt einen Denkfehler oder könnte es auch so gehen:

Ich multipliziere einfach breite x höhe und trage das Ergebnis in eine Tabelle.
Dazu die entsprechende DIN.
Bsp: DIN A4 = 210x297 = 62370

Die Eingabe multipliziere ich dann auch einfach und vergleiche das Ergebnis
mit den Werten aus der Tabelle.
Da müsste ich ja dann nur noch checken, ob der eingegebene Wert mit
einem aus der Tabelle gleich ist und wenn nicht
den nächst höheren Wert nehmen.

Sollte das so funktionieren, also sollten so alle Varianten abgedekt sein,
wäre meine Frage nur noch folgende:

Wie nehme ich, wenn keine Übereinstimmung ist, den nächst größeren Wert?


MfG
Andy
 
Mit deiner abfrage nach Hoch-bzw-Querformat is schonmal gut. Nun müßtest du doch nur noch dies zu den DIN zuordnen. Jetzt hast du sicherlich in der DB zu jeder DIn eine feste Größe. Nun machst du eine Abfrage mit Schleife und fragst diese per if ab, also:

if ($userbreite > $Din1breite && $userbreite < $Din2breite)
{
--> ausgabe
}

elseif ($userbreite > $Din2breite && $userbreite < $Din3breite)
{
--> ausgabe
}

u.s.w.
 
Hallo nochmal..

Vielen Dank erstmal für die Antworten. Hat mir bisher sehr geholfen.
Es funktioniert auch alles soweit.

Ich gehe die Tabelle mit einer while-Schleife durch.

Es geht nun soweit, dass ich die Maße eingebe und er mir sagt, ob es auf A4
bspw. gedruckt werden kann oder nicht.

Nun das Problem. Wenn es nicht geht, gibt er alle größeren Größen aus.
Also A3, A2, usw.

Wie kann ich das unterbinden und in dem Fall nur A3 ausgeben?

Hier mal der bisherige Code:
PHP:
			  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 > 40) && ($breite < $row["breite"]) )
			  	       {
			  	     	 echo "<br><b>Testausgabe: </b><br>";
			  	     	 echo " Es muss auf ";
			  	     	 echo $row["name"];
			  	     	 echo " gedruckt werden. <br>";
			  	     	 echo $row["id"];
			  	       } 				     
			  	   }			  	   			
			  }

EDIT: Er gibt mir alle Größen aus, auf die er drucken könnte.
Die Lösung wäre vielleicht ne for-Schleife?
Aber wie?
 
Zuletzt bearbeitet von einem Moderator:
Zurück