2016-03-20 13 views
0

ich eine Reihe von einem Artikel Tabelle auswählen möchten, die eine Liste von Artikelnummern haben wie folgt:PHP wählen Daten Textbereich von mysql

id item_no qty date 
1 1l500bk 15 2015-03-20 
2 1l501bu 10 2015-03-20 
3 1l1501ye 5 2015-03-21 
4 1l1520bu 5 2015-03-21 
5 1l1521bk 1 2015-03-22 

Und ich habe ein Formular mit zwei Eingabefelder erstellt, die fragt der Benutzer von Artikelnummer &-Position Nummer einzugeben, wie folgt:

<input type="text" value="" placeholder="From Item Number" name="item1"> 
<input type="text" value="" placeholder="To Item Number" name="item2"> 

Nun, wenn ich von 1l1500 geben - TO 1l1600 .. Es ausgeben sollte alle Werte w in diesem Bereich, aber es ist nicht! Die Ausgabe zeigt nichts. Wenn ich jedoch 11500bk bis 1l1521bk eintippe, wird nur 1 Ausgang angezeigt (1l1500bk)?!

Hier ist der PHP-Code nach Vorlage Seite:

$query = "SELECT *,SUM(qty) from s_{$value} WHERE item_no BETWEEN '".$_POST['item1']."' AND '".$_POST['item2']."'"; 
$result = mysql_query($query); 
while($row = mysql_fetch_assoc($result)){ 

    echo "<tr><td align=center width=19%>{$value}</td><td align=center width=19%>{$row['item_no']}</td><td align=center>{$row['qty']}</td><td align=center>{$row['date']}</td></tr>"; 

} 

Ich hoffe, diesen Sinn für euch macht, kann ich nicht scheinen zu finden, was das Problem ist! Danke


Vielen Dank für @Waleed Ahmed für seine Hilfe Die Lösung für meine Frage ist nur durch die ID Gruppierung wie folgt zusammen:

$query = "SELECT *,SUM(qty) from s_{$value} WHERE item_no BETWEEN '".$_POST['item1']."' AND '".$_POST['item2']."'" GROUP BY id; 

plus: Wenn Sie möchten Teil-Text tun Suche

$length = max(strlen($_POST['item1']), strlen($_POST['item2'])); 

$query = "SELECT *,SUM(qty) from s_{$value} WHERE SUBSTRING(item_no, 1, ".$length.") BETWEEN '".$_POST['item1']."' AND '".$_POST['item2']."'" GROUP BY id; 

Diese Ausgabedaten, auch wenn Sie nicht die gesamte Artikelnummer eingeben.

+0

[ 'BETWEEN'] arbeiten (http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_between) funktioniert nicht mit solchen alphanumerischen Werten. Sie enden mit einem ['Type Conversion'] (http://dev.mysql.com/doc/refman/5.7/en/type-conversion.html) Problem. – Sean

+0

Ok, danke aber wie kann ich das beheben? –

+0

Ich wünschte, Sie würden mir helfen, lieber eine Polizei hier zu sein. Wie in aller Welt ist diese Frage doppelt vorhanden. –

Antwort

2

Gemäß dieser Abfrage wird nur ein Ergebnis als Ausgabe angezeigt. Um hier die Aggregatfunktion (Summe (Menge)) zu verwenden, müssen Sie das Wort "Gruppieren nach" verwenden, um alle Ergebnisse anzuzeigen. Zum Beispiel

Nicht getestet, hoffen, dass es

$query = "SELECT *,SUM(qty) from s_{$value} WHERE item_no BETWEEN '".$_POST['item1']."' AND '".$_POST['item2']."'" GROUP BY id; 
+0

Wow, es funktioniert wie gebraucht !!! Danke Mann, kann nicht glauben, wie dieser kleine Fix den gesamten Output verändert. +1 –