PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Mal gucken, ob es passt... (http://www.selfphp.de/forum/showthread.php?t=23776)

elbartho 22.11.2010 16:11:01

Mal gucken, ob es passt...
 
Hallo,

da ich mit PHP wenig am Hut habe und unsere Abteilung das auf mich abgeschoben hat, möchte ich Euch um Hilfe bitten (eigentlich bin ich für Office-Support und DMS-Verwaltung angestellt, aber man ist ja immer ein "Allrounder"):

In der MySQL DB ist eine Tabelle "intern" vorhanden. Es gibt dort vier Spalten: eine Bezeichnung des Artikels, seine Länge, Breite und Höhe, z.B. "A", "100", "90" und "50". Es existieren ca. 115 verschiedene Artikel mit versch. Abmessungen.

Nun soll eine kleine "index.php" geschrieben werden, die drei Eingabefelder enthält und beim Klick auf "Berechnen" mit der SQL-Tabelle die eingegebenen Werte vergleicht. Dabei sollen die Längen, Breiten und Höhen der drei Felder mit den Zeilen der SQL DB verglichen werden. Dabei soll die Reihenfolge der Eingabe nicht berücksichtigt werden! Stellt Euch vor, es wäre ein Karton und etwas passt nicht hochkant rein, dafür aber, wenn man es flach reinlegt... Beispiel:

Eingabe von "30", "58" und "90", es findet sich ein Artikel, der "B" heißt und "100", "32" und "45" groß ist, dann soll ausgegeben werden: Deine Eingabe passt zu Artikel "B".
Habe schon mal mit meinen wenigen HTML-Erfahrungen eine Eingabetabelle konzipiert:

HTML-Code:

<table>
    <tr>
      <td align="right">Width:</td>
      <td><input name="width" type="text" size="4" maxlength="4"></td>
    </tr>
    <tr>
      <td align="right">Length:</td>
      <td><input name="length" type="text" size="4" maxlength="4"></td>
    </tr>
    <tr>
      <td align="right">Depth:</td>
      <td><input name="depth" type="text" size="4" maxlength="4"></td>
    </tr>
    <tr>
      <td align="right">Start:</td>
      <td>
        <input type="submit" value=" Calculate ">
      </td>
    </tr>
</table>

Aber von PHP keinen Plan. Ich hoffe, Ihr könnt mir helfen, meinen Hintern zu retten, wäre sehr verbunden, danke

vt1816 22.11.2010 16:31:55

AW: Mal gucken, ob es passt...
 
Zitat:

Zitat von elbartho (Beitrag 139190)
[...] Ich hoffe, Ihr könnt mir helfen, meinen Hintern zu retten, wäre sehr verbunden, danke

Sorry aber was erwartest Du jetzt von uns. Sollen wir Dir ein Script schreiben?


PS: Wenn ich Deine Karton-Logik richtig verstanden habe, dann passt Artikel B auch nicht!

thomas_w 22.11.2010 16:41:51

AW: Mal gucken, ob es passt...
 
An so einer Verpackungsoptimierung habe ich mir schon mal früher die Zähne ausgebissen. Das Thema ist absolut nicht trivial, denn es gibt ja auch die Diagonale. Kauf Dir eine passende Software oder stell einen €400 Jobber für das verpacken ein, das geht schneller und ist billiger.

Grüße
Thomas

elbartho 22.11.2010 17:24:33

AW: Mal gucken, ob es passt...
 
Hallo,

@ vt1816: Ich erwarte kein vollst. Skript, aber vielleicht eine Stütze, um es umzusetzen. Oh, Du hast Recht, ich korrigiere:
Zitat:

Eingabe von "30", "58" und "90", es findet sich ein Artikel, der "B" heißt und "100", "32" und "45" groß ist, dann soll ausgegeben werden: Deine Eingabe passt zu Artikel "B".
Soll heißen: z.B. Eingabe von "30", "40" und "90", es findet sich ein Artikel, der "B" heißt und "100", "32" und "45" groß ist, dann soll ausgegeben werden: Deine Eingabe passt zu Artikel "B".
Danke!

@ thomas_w: Danke für Deine Überlegungen. Es soll um keine Optimierung gehen, sonder um eine Art "Berechnugn, ob es passt". Die Diagonale soll nicht berücksichtigt werden.

urvater 23.11.2010 22:20:24

AW: Mal gucken, ob es passt...
 
Vorhandene Variablen: width, length, depth

Mögliche Kombinationen wo die Grösse >= sein muss
30,40,90
30,90,40
40,30,90
40,90,30
90,30,40
90,40,30

Jetzt könnte man sagen
PHP-Code:

$w int $_POST['width'];
$l int $_POST['length'];
$d int $_POST['depth'];
$sql "select * FROM 'dbtabelle' WHERE ((`spalte_1` >= $w AND `spalte_2` >= $l AND `spalte_3` >= $d) OR (`spalte_1` >= $w AND `spalte_2` >= $d AND `spalte_3` >= $l) OR (`spalte_1` >= $l AND `spalte_2` >= $w AND `spalte_3` >= $d) OR (`spalte_1` >= $l AND `spalte_2` >= $d AND `spalte_3` >= $w))"

Den Rest spar ich mir mal. Damit hätte man eine Grundlage, die ich nicht getestet habe.

rei 24.11.2010 00:53:44

AW: drei Werte in drei Feldern abfragen
 
Zitat:

Zitat von urvater (Beitrag 139253)
Vorhandene Variablen: width, length, depth

Mögliche Kombinationen wo die Grösse >= sein muss
30,40,90
30,90,40
40,30,90
40,90,30
90,30,40
90,40,30

Jetzt könnte man sagen
PHP-Code:

$w int $_POST['width'];
$l int $_POST['length'];
$d int $_POST['depth'];
$sql "select * FROM 'dbtabelle' WHERE (
(`spalte_1` >= $w AND `spalte_2` >= $l AND `spalte_3` >= $d) OR
(`spalte_1` >= $w AND `spalte_2` >= $d AND `spalte_3` >= $l) OR
(`spalte_1` >= $l AND `spalte_2` >= $w AND `spalte_3` >= $d) OR
(`spalte_1` >= $l AND `spalte_2` >= $d AND `spalte_3` >= $w)
)"


Den Rest spar ich mir mal. Damit hätte man eine Grundlage, die ich nicht getestet habe.

Ich bin so frei und füge den $d noch an spalte_1 (mal zwei Kombinationen),
dann sollten alle Kombinationen durch sein:
PHP-Code:

$w intval($_POST['width']);
$l intval($_POST['length']);
$d intval($_POST['depth']);
$sql "select * FROM 'dbtabelle' WHERE (
 (`spalte_1` >= $w AND `spalte_2` >= $l AND `spalte_3` >= $d) OR
 (`spalte_1` >= $w AND `spalte_2` >= $d AND `spalte_3` >= $l) OR
 (`spalte_1` >= $l AND `spalte_2` >= $w AND `spalte_3` >= $d) OR
 (`spalte_1` >= $l AND `spalte_2` >= $d AND `spalte_3` >= $w) OR
 (`spalte_1` >= $d AND `spalte_2` >= $w AND `spalte_3` >= $l) OR
 (`spalte_1` >= $d AND `spalte_2` >= $l AND `spalte_3` >= $w) 
 );"




Alle Zeitangaben in WEZ +2. Es ist jetzt 16:03:13 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.