Array kürzen
Es tut was es soll, aber kann man das irgendwie kürzen da ich jede mögliche art versucht habe Arrays anzusprechen und nur diese mich zum Ziel brachte.
$sql = "SELECT * FROM `abc` ORDER BY RAND() LIMIT 4";
$result = $conn->query($sql);
$list = array();
while ($row = mysqli_fetch_assoc($result)) {
$list = $row;
}
if ($artikelposten == 4) {
if ($list['vkpreis']<3) {$menge40e = rand(200, 400);}
if ($list['vkpreis']>3 && $list['vkpreis']<=20) {$menge40e = rand(20, 40);}
if ($list['vkpreis']>20 && $list['vkpreis']<=50) {$menge40e = rand(5, 10);}
if ($list['vkpreis']>50) {$menge40e = 1;}
if ($list[1]['vkpreis']<3) {$menge41e = rand(200, 400);}
if ($list[1]['vkpreis']>3 && $list[1]['vkpreis']<=20) {$menge41e = rand(20, 40);}
if ($list[1]['vkpreis']>20 && $list[1]['vkpreis']<=50) {$menge41e = rand(5, 10);}
if ($list[1]['vkpreis']>50) {$menge41e = 1;}
if ($list[2]['vkpreis']<3) {$menge42e = rand(200, 400);}
if ($list[2]['vkpreis']>3 && $list[2]['vkpreis']<=20) {$menge42e = rand(20, 40);}
if ($list[2]['vkpreis']>20 && $list[2]['vkpreis']<=50) {$menge42e = rand(5, 10);}
if ($list[2]['vkpreis']>50) {$menge42e = 1;}
if ($list[3]['vkpreis']<3) {$menge43e = rand(200, 400);}
if ($list[3]['vkpreis']>3 && $list[3]['vkpreis']<=20) {$menge43e = rand(20, 40);}
if ($list[3]['vkpreis']>20 && $list[3]['vkpreis']<=50) {$menge43e = rand(5, 10);}
if ($list[3]['vkpreis']>50) {$menge43e = 1;}
$rechnungs_posten = array(
array($list['artikel'], $list['beschreibung'], $menge40e, $list['me'], $list['vkpreis'], $list['rabatt'], $list['rabatt2'], $list['lieferungsnummer'], $list['betrag']),
array($list[1]['artikel'], $list[1]['beschreibung'], $menge41e, $list[1]['me'], $list[1]['vkpreis'], $list[1]['rabatt'], $list[1]['rabatt2'], $list[1]['lieferungsnummer'], $list[1]['betrag']),
array($list[2]['artikel'], $list[2]['beschreibung'], $menge42e, $list[2]['me'], $list[2]['vkpreis'], $list[2]['rabatt'], $list[2]['rabatt2'], $list[2]['lieferungsnummer'], $list[2]['betrag']),
array($list[3]['artikel'], $list[3]['beschreibung'], $menge43e, $list[3]['me'], $list[3]['vkpreis'], $list[3]['rabatt'], $list[3]['rabatt2'], $list[3]['lieferungsnummer'], $list[3]['betrag']));
}
if ($artikelposten == 3) {
if ($list['vkpreis']<3) {$menge30e = rand(200, 400);}
if ($list['vkpreis']>3 && $list['vkpreis']<=20) {$menge30e = rand(20, 40);}
if ($list['vkpreis']>20 && $list['vkpreis']<=50) {$menge30e = rand(5, 10);}
if ($list['vkpreis']>50) {$menge30e = 1;}
if ($list[1]['vkpreis']<3) {$menge31e = rand(200, 400);}
if ($list[1]['vkpreis']>3 && $list[1]['vkpreis']<=20) {$menge31e = rand(20, 40);}
if ($list[1]['vkpreis']>20 && $list[1]['vkpreis']<=50) {$menge31e = rand(5, 10);}
if ($list[1]['vkpreis']>50) {$menge31e = 1;}
if ($list[2]['vkpreis']<3) {$menge32e = rand(200, 400);}
if ($list[2]['vkpreis']>3 && $list[2]['vkpreis']<=20) {$menge32e = rand(20, 40);}
if ($list[2]['vkpreis']>20 && $list[2]['vkpreis']<=50) {$menge32e = rand(5, 10);}
if ($list[2]['vkpreis']>50) {$menge32e = 1;}
$rechnungs_posten = array(
array($list['artikel'], $list['beschreibung'], $menge30e, $list['me'], $list['vkpreis'], $list['rabatt'], $list['rabatt2'], $list['lieferungsnummer'], $list['betrag']),
array($list[1]['artikel'], $list[1]['beschreibung'], $menge31e, $list[1]['me'], $list[1]['vkpreis'], $list[1]['rabatt'], $list[1]['rabatt2'], $list[1]['lieferungsnummer'], $list[1]['betrag']),
array($list[2]['artikel'], $list[2]['beschreibung'], $menge32e, $list[2]['me'], $list[2]['vkpreis'], $list[2]['rabatt'], $list[2]['rabatt2'], $list[2]['lieferungsnummer'], $list[2]['betrag']));
}
if ($artikelposten == 2) {
if ($list['vkpreis']<3) {$menge20e = rand(200, 400);}
if ($list['vkpreis']>3 && $list['vkpreis']<=20) {$menge20e = rand(20, 40);}
if ($list['vkpreis']>20 && $list['vkpreis']<=50) {$menge20e = rand(5, 10);}
if ($list['vkpreis']>50) {$menge20e = 1;}
if ($list[1]['vkpreis']<3) {$menge21e = rand(200, 400);}
if ($list[1]['vkpreis']>3 && $list[1]['vkpreis']<=20) {$menge21e = rand(20, 40);}
if ($list[1]['vkpreis']>20 && $list[1]['vkpreis']<=50) {$menge21e = rand(5, 10);}
if ($list[1]['vkpreis']>50) {$menge21e = 1;}
$rechnungs_posten = array(
array($list['artikel'], $list['beschreibung'], $menge20e, $list['me'], $list['vkpreis'], $list['rabatt'], $list['rabatt2'], $list['lieferungsnummer'], $list['betrag']),
array($list[1]['artikel'], $list[1]['beschreibung'], $menge21e, $list[1]['me'], $list[1]['vkpreis'], $list[1]['rabatt'], $list[1]['rabatt2'], $list[1]['lieferungsnummer'], $list[1]['betrag']));
}
if ($artikelposten == 1) {
if ($list['vkpreis']<3) {$menge10e = rand(200, 400);}
if ($list['vkpreis']>3 && $list['vkpreis']<=20) {$menge10e = rand(20, 40);}
if ($list['vkpreis']>20 && $list['vkpreis']<=50) {$menge10e = rand(5, 10);}
if ($list['vkpreis']>50) {$menge10e = 1;}
$rechnungs_posten = array(
array($list['artikel'], $list['beschreibung'], $menge10e, $list['me'], $list['vkpreis'], $list['rabatt'], $list['rabatt2'], $list['lieferungsnummer'], $list['betrag']));
}
Please also mark the comments that contributed to the solution of the article
Content-Key: 375549
Url: https://administrator.de/contentid/375549
Printed on: April 27, 2024 at 03:04 o'clock
6 Comments
Latest comment
Hallo dax4fun,
der Tread-Titel heißt "Array kürzen".
Es geht Dir aber darum Deinen Code zu verkürzen?
Leg zuerst ein leeres Array an und füge ihm situationsabgängig Elemente hinzu.
Das Folgende könnte ungetesteterweise funktionieren und vermeidet die Wiederholungen:
Gruß Frank
der Tread-Titel heißt "Array kürzen".
Es geht Dir aber darum Deinen Code zu verkürzen?
Leg zuerst ein leeres Array an und füge ihm situationsabgängig Elemente hinzu.
Das Folgende könnte ungetesteterweise funktionieren und vermeidet die Wiederholungen:
$sql = "SELECT * FROM `abc` ORDER BY RAND() LIMIT 4";
$result = $conn->query($sql);
$list = array();
while ($row = mysqli_fetch_assoc($result)) {
$list = $row;
}
$rechnungs_posten = array();
if ($artikelposten > 0) {
if ($list['vkpreis']<3) {$menge40e = rand(200, 400);}
if ($list['vkpreis']>3 && $list['vkpreis']<=20) {$menge40e = rand(20, 40);}
if ($list['vkpreis']>20 && $list['vkpreis']<=50) {$menge40e = rand(5, 10);}
if ($list['vkpreis']>50) {$menge40e = 1;}
$rechnungs_posten = array($list['artikel'], $list['beschreibung'], $menge40e, $list['me'], $list['vkpreis'], $list['rabatt'], $list['rabatt2'], $list['lieferungsnummer'], $list['betrag']),
}
if ($artikelposten > 1) {
if ($list[1]['vkpreis']<3) {$menge41e = rand(200, 400);}
if ($list[1]['vkpreis']>3 && $list[1]['vkpreis']<=20) {$menge41e = rand(20, 40);}
if ($list[1]['vkpreis']>20 && $list[1]['vkpreis']<=50) {$menge41e = rand(5, 10);}
if ($list[1]['vkpreis']>50) {$menge41e = 1;}
$rechnungs_posten[1] = array($list[1]['artikel'], $list[1]['beschreibung'], $menge41e, $list[1]['me'], $list[1]['vkpreis'], $list[1]['rabatt'], $list[1]['rabatt2'], $list[1]['lieferungsnummer'], $list[1]['betrag']),
}
if ($artikelposten > 2) {
if ($list[2]['vkpreis']<3) {$menge42e = rand(200, 400);}
if ($list[2]['vkpreis']>3 && $list[2]['vkpreis']<=20) {$menge42e = rand(20, 40);}
if ($list[2]['vkpreis']>20 && $list[2]['vkpreis']<=50) {$menge42e = rand(5, 10);}
if ($list[2]['vkpreis']>50) {$menge42e = 1;}
$rechnungs_posten = array($list[2]['artikel'], $list[2]['beschreibung'], $menge42e, $list[2]['me'], $list[2]['vkpreis'], $list[2]['rabatt'], $list[2]['rabatt2'], $list[2]['lieferungsnummer'], $list[2]['betrag']),
}
if ($artikelposten > 3) {
if ($list[3]['vkpreis']<3) {$menge43e = rand(200, 400);}
if ($list[3]['vkpreis']>3 && $list[3]['vkpreis']<=20) {$menge43e = rand(20, 40);}
if ($list[3]['vkpreis']>20 && $list[3]['vkpreis']<=50) {$menge43e = rand(5, 10);}
if ($list[3]['vkpreis']>50) {$menge43e = 1;}
$rechnungs_posten = array($list[3]['artikel'], $list[3]['beschreibung'], $menge43e, $list[3]['me'], $list[3]['vkpreis'], $list[3]['rabatt'], $list[3]['rabatt2'], $list[3]['lieferungsnummer'], $list[3]['betrag']);
}
Gruß Frank
Hallo dax4fun,
ja, genau. Ein Dank und ein Gruß sind völlig überflüssig. Wir werden hier für unseren Support ohnehin zu gut bezahlt.
Mein vorhergehender Code lässt sich mit einer For-Schleife weiter kürzen und enthält dann keine Code-Wiederholungen mehr.
Er sieht dann so aus:
Wozu?
Das Topic hattest Du auf "gelöst" gesetzt.
Ist das jetzt ein neues Thema oder doch noch das alte?
Egal ob neue oder alte Frage, ich kann den Code zwar nachvollziehen, kann aber nicht erkennen was Du damit bezwecken möchtest.
Gruß Frank
ja, genau. Ein Dank und ein Gruß sind völlig überflüssig. Wir werden hier für unseren Support ohnehin zu gut bezahlt.
Mein vorhergehender Code lässt sich mit einer For-Schleife weiter kürzen und enthält dann keine Code-Wiederholungen mehr.
Er sieht dann so aus:
$sql = "SELECT * FROM `abc` ORDER BY RAND() LIMIT 4";
$result = $conn->query($sql);
$list = array();
while ($row = mysqli_fetch_assoc($result)) {
$list = $row;
}
$rechnungs_posten = array();
for ($i=0; $i < $artikelposten; $i++) {
if ($list[$i]['vkpreis']<3) {$menge40e = rand(200, 400);};
if ($list[$i]['vkpreis']>3 && $list[$i]['vkpreis']<=20) {$menge40e = rand(20, 40);};
if ($list[$i]['vkpreis']>20 && $list[$i]['vkpreis']<=50) {$menge40e = rand(5, 10);};
if ($list[$i]['vkpreis']>50) {$menge40e = 1;};
$rechnungs_posten[$i] = array($list[$i]['artikel'], $list[$i]['beschreibung'], $menge40e, $list[$i]['me'], $list[$i]['vkpreis'], $list[$i]['rabatt'], $list[$i]['rabatt2'], $list[$i]['lieferungsnummer'], $list[$i]['betrag']);
};
Wozu?
Das Topic hattest Du auf "gelöst" gesetzt.
Ist das jetzt ein neues Thema oder doch noch das alte?
Egal ob neue oder alte Frage, ich kann den Code zwar nachvollziehen, kann aber nicht erkennen was Du damit bezwecken möchtest.
- Zeile2: Fehlendes Semicolon am Zeileende
- Zeile5: Die Abfrage, ob die Variable belegt ist, sollte so erfolgen:
if (isset($$dyn_loeschen)) {tuwas;};
da andernfalls PHP einen Hinweis ausgibt, dass die Variable nicht definiert sei.
Zitat von @dax4fun:
da ich nicht weiß wie ich es in eine Foreach-Schleife der SQL-Abfrage einbauen kann, da diese ja sowieso endet wenn keine Datensätze vorhanden sind.
Wenn diese sowieso endet, wozu dann die Foreach-Schleife?da ich nicht weiß wie ich es in eine Foreach-Schleife der SQL-Abfrage einbauen kann, da diese ja sowieso endet wenn keine Datensätze vorhanden sind.
Zitat von @dax4fun:
das Ziel würde dann so ausschauen
$variable1 = $row['id'].' '.$row['artiekl'].'<br />bezeichnung '.$row['bezeichnung'].'<br /><br />'
Wenn das das Ziel ist, dann ist die Aufgabe ja gelöst (Ziel erreicht).das Ziel würde dann so ausschauen
$variable1 = $row['id'].' '.$row['artiekl'].'<br />bezeichnung '.$row['bezeichnung'].'<br /><br />'
Gruß Frank
Hallo dax4fun,
es sei Dir verziehen.
Später wäre beispielsweise jetzt.
Ist damit alles erledigt, also auch Dein gefundener Code-Schnipsel?
Gruß Frank
es sei Dir verziehen.
Später wäre beispielsweise jetzt.
Ist damit alles erledigt, also auch Dein gefundener Code-Schnipsel?
Gruß Frank