S
SE
Ui ... das OOP gefällt mir aber bis jetzt am besten =D
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
<form method="post">
<input type="text" name="selectedNumber" />
<input type="submit" name="submit" />
</form>
<hr />
<?php
//Formular auswerten
if(isset($_POST['submit'])){
//Zufallszahlen erstellen
//Zu Testzwecken überschreibe ich hier die Obergrenze mit einer kleineren Zahl um die Treffer schneller zu testen
$rand = new RandomRange(200);
//Text dass die Zahl nicht gefunden wurde
if(!$rand->offsetExists($_POST['selectedNumber'])){
echo "<p>Die Zahl {$_POST['selectedNumber']} ist nicht dabei</p>";
}
//Das Grid erstellen
$grid = new Grid($rand, array($_POST['selectedNumber']));
echo $grid->getHtml();
}
/**
* ArrayObject das eine Reihe Zufallszahlen generiert
* Format: ArrayObject<Value>
*/
class RandomRange extends ArrayObject{
const C_DEFAULT_SIZE = 100;
const C_DEFAULT_MIN = 1;
const C_DEFAULT_MAX = 999;
/**
* Konstrukteur
* @param Int $max_value
* @param Int $min_value
* @param int $size
* @return void
*/
public function __construct(
$max_value = self::C_DEFAULT_MAX,
$min_value = self::C_DEFAULT_MIN,
$size = self::C_DEFAULT_SIZE
){
$this->min_value = $min_value;
$this->max_value = $max_value;
$this->size = $size;
$this->recalc();
}
/**
* berechnet die Zfallszahlen neu
* @return void
*/
public function recalc(){
$this->exchangeArray(array());
do{
$randNumber = mt_rand($this->min_value, $this->max_value);
if($this->offsetExists($randNumber) === FALSE){
$this->offsetSet($randNumber, $randNumber);
}
}while($this->count() < $this->size);
$this->ksort();
}
}
/**
* Diese Klasse geniert aus einem ArrayObject eine 2-Dimansionale Liste
* Format: ArrayObject<ArrayObject<Value>>
*/
class Grid extends ArrayObject{
const C_DEFAULT_WIDTH = 10;
public $width = self::C_DEFAULT_WIDTH;
/**
* Konstrukteur
* @param ArrayObject<Value> $values Alle Values für die Liste
* @param Array<Value> $selectedValues ggf. selektionierte Values
* @param Int $width ggf. Listenbreite
* @return void
*/
public function __construct(ArrayObject $values, $selectedValues = array(), $width = self::C_DEFAULT_WIDTH){
$this->width = $width;
$this->recalc($values, $selectedValues);
}
/**
* Neuberechnung der Liste
* @param ArrayObject<Value> $values Alle Values für die Liste
* @param Array<Value> $selectedValues ggf. selektionierte Values
* @return void
*/
public function recalc(ArrayObject $values, $selectedValues = array()){
$row = array();
foreach($values as $value){
$row[] = (in_array($value, $selectedValues)) ? $value = "<b>{$value}</b>" : $value;
if(count($row) == $this->width){
$this->append($row);
unset($row);
}
}
if(count($row) > 0) $this->append($row);
}
/**
* Erstellen einer einfachen HTML-Tabelle
* @return String HTML-Code der Liste
*/
public function getHtml(){
ob_start();
echo '<table>';
foreach($this as $row){
echo '<tr>';
foreach($row as $value) echo "<td>{$value}</td>";
echo '</tr>';
}
echo '</table>';
return ob_get_clean();
}
}
?>
Tja ich würde es unter der Kategorie "Resignation" stellen