Tabelle mit Zufallszahlen erstellen

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

CreativPur

Erfahrenes Mitglied
Hi, ich möchte gerne eine Tabelle mit Zufallszahlen bestücken.
Das Generieren der Zufallszahlen funktioniert bereits.

Leider funktioniert die Umsetzung mit der Tabelle nicht..

PHP:
<?php
function getRandoms($quant=100, $min=100, $max=1000000000000){
  $randary = array();
  while(!(count($randary) >= $quant || count($randary) > $max-$min))
    $randary[mt_rand($min,$max)] = true; // Zufallszahl in Key speichern
  return array_keys($randary);
}                      
                       
$randoms = getRandoms(100, 100, 1000000000000);
$test = implode('<br /> ', $randoms);  
echo $test;                      
                       
                       
echo '                      
<table class="table table-hover">
    <thead>  
        <td>
            #
        </td>
        <td>
            Register-Code
        </td>
        <td>
            Arzt-Nr.
        </td>
    </thead>
   
    <tbody>';
    for($i=1; $i<=$anzahl; $i++)
             {
    '<tr><td>'.$i+'</td><td>'.$test.'</td><td></td></tr>';
    }  
    echo '  
    </tbody>              
</table>';
 ?>

Vielleicht hat ja jemand eine Idee, woran es liegen könnte..

Ich möchte im Grunde genommen für jede Zufallszahl eine Tabellenzeile einrichten
 
Auf die Schnelle sehe ich 4 Fehler
1) Du iterierst über $anzahl. Was steht da drin? Wo wird das abgefüllt?
2) Du erstellst einen array $randoms. Dieser wird aber in der Tabelle gar nicht angerührt, nur dein Teststring wird mehrfach ausgegeben.
3) du iterierst mit $i. In der Schleife selber zählst du $i aber nochmals hoch. Das ist ein Chaos und bringt nicht das gewünschte Resultat
4) in der Schleife hast du einfach ein String. Den musst du aber noch mit echo ausgeben
PHP:
    for($i=1; $i<=count($randoms); $i++) {
        echo '<tr><td>{$i}</td><td>{$randoms[$i-1]}</td><td /></tr>';
    }
 
Klassischer Fall von

Richtig debuggen
  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
Außerdem ist deine Funktion zu kompliziert aufgebaut, was soll das Gehampel mit den Keys?
PHP:
function getRandoms($quant=100, $min=100, $max=1000000000000){
  $randary = array();

  for ($i = 0; $i < $quant; $i++)
    $randary[] = mt_rand($min,$max);

  return $randary;
}
Und der Funktionsaufruf
PHP:
$randoms = getRandoms(100, 100, 1000000000000);
ist so auch unnötig, denn wenn du sowieso die Default-Werte nimmst, dann reicht auch
PHP:
$randoms = getRandoms();
 
Zuletzt bearbeitet:
So...
Nun habe ich den Quelltext nochmals gesäubert und habe alle Fehlerstufen aktiviert.
Es kommt auch keine Fehlermeldung und dennoch funktioniert e immer noch nicht..

Mein überarbeiteter Quelltext..
PHP:
<?php                       
function getRandoms($quant=10, $min=10, $max=100000){
  $randary = array();
  while(!(count($randary) >= $quant || count($randary) > $max-$min))
    $randary[mt_rand($min,$max)] = true; // Zufallszahl in Key speichern
  return array_keys($randary);
}   
$randoms = getRandoms();
echo implode('<br /> ', $randoms);
echo '                       
<table class="table table-hover">
    <thead>   
        <td>
            #
        </td>
        <td>
            Register-Code
        </td>
        <td>
            Arzt-Nr.
        </td>
    </thead>
    
    <tbody>';
    for($i=1; $i<=count($randoms); $i++){
    '<tr><td>'.$i.'</td><td>'.$randoms[$i-1].'</td><td></td></tr>';
    }   
    echo '   
    </tbody>               
</table>';
 ?>

Die 10 Zufallszahlen werden auch übe r"echo implode('<br /> ', $randoms); " ausgegeben, allerdings nicht in der Tabelle.
 
Ich lese schon meine Antworten, aber dennoch habe ich oftmals im Programmieren meine Probleme.
Ich bin bin halt Webdesigner und kein Programmierer.
Wenn ich mir manche Webseiten von Programmierern anschaue, läuft es mir auch als Designer oftmals eiskalt über den Rücken, da Programmierer in Ihrem Element zwar top sind, aber kein oftmals kein Gespür für Schönheit haben..
Soweit zu meiner beruflichen Tätigkeit.
Ich dachte, mit dem Echo "implode('<br /> ', $randoms);" hätte ich den String ausgegeben.
 
Nun habe ich es hin bekommen..

PHP:
<?php                       
function getRandoms($quant=15, $min=10, $max=100000){
  $randary = array();
  while(!(count($randary) >= $quant || count($randary) > $max-$min))
    $randary[mt_rand($min,$max)] = true;
  return array_keys($randary);
}   
echo $randary;                       
                        
$randoms = getRandoms();
echo implode('<br /> ', $randoms);
$test =  implode('<br /> ', $randoms);                       
echo '<br />                       
<table class="table table-hover">
    <thead>   
        <td>
            #
        </td>
        <td>
            Register-Code
        </td>
        <td>
            Arzt-Nr.
        </td>
    </thead>
    <tbody>';
    for($i=1; $i<=count($randoms); $i++){
    '<tr>
    <td>';
    echo $i;
    echo '
    </td>
    <td>';
    echo  $i.'<br />';
    echo '
    </td>
    <td>
    '.$randoms[$i-1].'
    </td>
    <td /></tr>';
    }   
    echo '   
    </tbody>               
</table>';
?>

Vielen Dank
 
Wenn du schon ein Auge für Schönheit hast, dann darfst du das gerne auch auf den Code anwenden und ihn lesbar formatieren. Dein Code ist, unabhängig vom Programmieren, nicht schön. Tabulatoren sind kein Zufallsprodukt und werden nicht mit der Gieskanne einfach gleichmässig verteilt. Ja, die Tabulatoren tragen nix zum Code bei, ausser dass er schöner und vor allem lesbarer ist. Also eigentlich genau dein Ding.
Achja, wenn man sich Mühe gibt sieht nachher sogar der generierte HTML-Code schön und lesbar aus.
PHP:
<?php                       
    function getRandoms($quant=15, $min=10, $max=100000){
        $randary = array();
        while(!(count($randary) >= $quant || count($randary) > $max-$min))
            $randary[mt_rand($min,$max)] = true;
        return array_keys($randary);
    }   
    $randoms = getRandoms();
?>
<br />                       
<table class="table table-hover">
    <thead>   
        <td>
            #
        </td>
        <td>
            Register-Code
        </td>
        <td>
            Arzt-Nr.
        </td>
    </thead>
    <tbody>
<?php
    for($i=1; $i<=count($randoms); $i++){
        echo <<<ROW
        <tr>
            <td>
                {$i}
            </td>
            <td>
                {$i}<br />
            </td>
            <td>
                {$randoms[$i-1]}
            </td>
            <td />
        </tr>
ROW;
    }  
?> 
    </tbody>               
</table>
Oder wenn man es, wie ich, nicht mag jeder Tag auf einer neuen Zeile
PHP:
<?php                       
    function getRandoms($quant=15, $min=10, $max=100000){
        $randary = array();
        while(!(count($randary) >= $quant || count($randary) > $max-$min))
            $randary[mt_rand($min,$max)] = true;
        return array_keys($randary);
    }   
    $randoms = getRandoms();
?>
<br />                       
<table class="table table-hover">
    <thead>   
        <td>#</td>
        <td>Register-Code</td>
        <td>Arzt-Nr.</td>
    </thead>
    <tbody>
<?php
    for($i=1; $i<=count($randoms); $i++){
        echo <<<ROW
        <tr>
            <td>{$i}</td>
            <td>{$i}<br /></td>
            <td>{$randoms[$i-1]}</td>
            <td />
        </tr>
ROW;
    }  
?> 
    </tbody>               
</table>
 
Zuletzt bearbeitet:
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück