• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program do losowania konkretnych zaznaczony osób PHP funkcja rand.

Object Storage Arubacloud
+1 głos
117 wizyt
pytanie zadane 14 grudnia 2021 w PHP przez Perskiii Nowicjusz (130 p.)
<!DOCTYPE HTML>
<html lang="pl">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <title>Generator</title>

</head>
<form action="TEST1.php" action="Dodawanie.php" method="POST">
<table>
<thead>
      <tr> <th> ID<th>Imie  <th> Nazwisko <th>Bierze Udział
   <tbody>
      <tr> <td> 1. <td name="Imie1"> Imie1 </td><td name="Nazwisko1"> Nazwisko1 </td><td><label><input type="checkbox" style="width:25px; height:25px" name="Wybor1" checked></label> 
      <tr> <td> 2. <td name="Imie2"> Imie2 </td><td name="Nazwisko2"> Nazwisko2 </td><td><label><input type="checkbox" style="width:25px; height:25px" name="Wybor2" checked></label> 
      <tr> <td> 3. <td name="Imie3"> Imie3 </td><td name="Nazwisko3"> Nazwisko3 </td><td><label><input type="checkbox" style="width:25px; height:25px" name="Wybor3" checked></label> 
      <tr> <td> 4. <td name="Imie4"> Imie4 </td><td name="Nazwisko4"> Nazwisko4 </td><td><label><input type="checkbox" style="width:25px; height:25px" name="Wybor4" checked></label> 
      <tr> <td> 5. <td name="Imie5"> Imie5 </td><td name="Nazwisko5"> Nazwisko5 </td><td><label><input type="checkbox" style="width:25px; height:25px" name="Wybor5" checked></label> 
      <tr> <td> 6. <td name="Imie6"> Imie6 </td><td name="Nazwisko6"> Nazwisko6 </td><td><label><input type="checkbox" style="width:25px; height:25px" name="Wybor6" checked></label> 
      <tr> <td> 7. <td name="Imie7"> Imie7 </td><td name="Nazwisko7"> Nazwisko7 </td><td><label><input type="checkbox" style="width:25px; height:25px" name="Wybor7" checked></label> 
</table>
</div>
<div id="Buttony">
    <input type="submit" class="btn1 one" value="Losuj">
    <input type="reset"  class="btn1 two" data-nr ="1" value="Czyść">
</div>
</form>
</body>
</html>
<?php
$chooseFrom = array('Karol', 'Nina', 'Oskar', 'Jakub', 'Joanna', 'Rafał', 'Paweł');
$count = 6;
$result = array_rand($chooseFrom, $count);
echo $chooseFrom[$result[0]].'<br/>';
echo $chooseFrom[$result[1]].'<br/>';
?>

Witam, szukam pomocy względem napisania programu w PHP do losowania zaznaczonych osób, chodzi mi tutaj o to, że zaznaczamy checkboxami lub polem radio bez znaczenia, które, osoby biorą udział w losowaniu.                                                                                                                                                   

Np. Zaznaczamy:
1-6 Checkboxów i z tych zaznaczonych ma nam wyświetlić np. 5 os.
2-7 Checkboxów i z tych zaznaczonych ma nam wyświetlić np. 5 os.                                                       

Jeżeli mamy 1-5 to nie losuje nam, tylko wyświetla od razu 5 os.

Jeżeli mamy np. 4 os. To nie dodaje nam zapytania do bazy.

Później przekierowanie wylosowanych osób do bazy MySQL wstawić za pomocą inserta zapytaniem do tabeli np. LOS  i wyświetlenie na innej podstronie, ale to już sam zrobię, głównie chodzi mi, o jakieś nakierowanie jak można to napisać. Bo wpadłem na pomysł, że można to zrobić na if(isset($_POST) ale idąc tym tropem dla 7 os. Musiałbym, określać każdy konkretny przypadek.

1 odpowiedź

0 głosów
odpowiedź 11 stycznia 2022 przez VBService Ekspert (253,120 p.)
edycja 11 stycznia 2022 przez VBService

losowania zaznaczonych osób

możesz też to wykonać na plikach tekstowych

 

przykład

persons_data.dat   (dla przykładu 10 osób, może być dużo więcej)

Tomasz Kowalski
Janusz Nowak
Agata Brzozowska
Władysław Mazur
Monika Kwiecień
Adam Latoszek
Alicja Laskowska
Magdalena Śliwak
Grzegorz Winiarski
Daniel Przybysz

index.php

<?php
  $persons = explode("\n", file_get_contents('persons_data.dat'));
  
  $rows = '';
  foreach ($persons as $id => $full_name) {
    list($name, $surname) = explode(" ", $full_name);
    $rows .= '<tr>'
           . '<td>'.($id + 1).'</td>'
           . '<td>'.$name.'</td>'
           . '<td>'.$surname.'</td>'
           . '<td><input type="checkbox" name="status[]" value="'.$full_name.'" /></td>'
           . '</tr>';
  }
?>
<!DOCTYPE html>
<html lang="pl">
  <head>
    <meta charset="utf-8" />
    <title>Generator</title>

    <style>
      table {
        width: 40vw;
        border-collapse: collapse;
        cursor: default;
      }
      thead th {
        border: 0;
        background-color: black;
        color: white;
        font: 300 1.05em/1.4 monospace;
        border-bottom: 2px solid white;
      }
      tbody tr {
        color: black;
        font: 300 1.05em/1.25 monospace;
        transition: background-color 0.4s;
      }
      tbody tr:nth-child(odd) {        
        background-color: rgba(0,0,0,0.4);
      }
      tbody tr:nth-child(even) {
        background-color: rgba(0,0,0,0.3);
      }
      tbody tr:hover {
        color: white;
        background-color: rgba(0,0,0,0.75);
      }
      tbody td {
        text-align: center;
      }
      tfoot td {
        text-align: right;
        padding: 0.5em 0 0 0;
      }
      tfoot input {
        font: 300 0.9em/1.1 monospace;
      }
      .highlighter td:not(:last-child) {
        color: yellow;
      }
    </style>
  </head>
  <body>
    <form action="show_selected.php" method="post">

      <table>
        <thead>
          <tr>
            <th>Id.</th>
            <th>Imię</th>
            <th>Nazwisko</th>
            <th>Bierze udział</th>
          </tr>
        </thead>
        <tbody>
          <?php echo $rows; ?>
        </tbody>
        <tfoot>
          <tr>
            <td colspan="4">
              <input type="submit" id="submit" value="Losuj" disabled />
              <input type="reset" value="Czyść" />
            </td>
          </tr>
        </tfoot>
      </table>

    </form>

    <script>
      const form_ = document.querySelector('form'),
            button_submit = form_.querySelector('#submit');

      form_.addEventListener('click', checkboxAction);
      form_.addEventListener('reset', buttonReset);

      function checkboxAction() {
        unhighlightRow();
        highlightRow();
        toggleButtonSubmit();
      }

      function highlightRow() {
        const checkboxes = form_.querySelectorAll('input[type="checkbox"]:checked');
        if (checkboxes.length > 0)
          for (let checkbox of checkboxes)
            checkbox.closest('tr').classList.add('highlighter');
      }

      function unhighlightRow() {
        const checkboxes = form_.querySelectorAll('input[type="checkbox"]:not(:checked)');
        if (checkboxes.length > 0)
          for (let checkbox of checkboxes)
            checkbox.closest('tr').classList.remove('highlighter');
      }

      function toggleButtonSubmit() {
        const checkboxes_checked = form_.querySelectorAll('input[type="checkbox"]:checked');
        button_submit.disabled = (checkboxes_checked.length > 0) ? false : true;
      }

      function buttonReset() {
        button_submit.disabled = true;
        setTimeout(unhighlightRow, 10);
      }
    </script>
  </body>
</html>

show_selected.php

<?php
  define('NO_PEOPLE_MSG', '<li class="no-people">Brak biorących udział w losowaniu</li>');
  define('MAX_PEOPLE_VOLUME', 5);

  if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $all_selected_people = (!empty($_POST['status'])) ? $_POST['status'] : null;

    if ($all_selected_people) {
      $all_selected_people_html = '';
      foreach ($all_selected_people as $full_name) {
        $all_selected_people_html .= '<li>'.$full_name.'</li>';
      }

      if (count($all_selected_people) > MAX_PEOPLE_VOLUME) {
        shuffle($all_selected_people);
        $selected_people = array_slice($all_selected_people, 0, MAX_PEOPLE_VOLUME);
      } else { 
        $selected_people = $all_selected_people; 
      }

      $selected_people_html = '';
      foreach ($selected_people as $full_name) {
        $selected_people_html .= '<li>'.$full_name.'</li>';
      }

      file_put_contents('selected_'.date("Ymd_His").'.dat', implode("",  $selected_people));
    } else {
      $all_selected_people_html = $selected_people_html = NO_PEOPLE_MSG;
    }
  } else {
    $all_selected_people_html = $selected_people_html = NO_PEOPLE_MSG;
  }
?>
<!DOCTYPE html>
<html lang="pl">
  <head>
    <meta charset="utf-8" />

    <style>
      p, ol {
        font: 300 1.05em/1.2 monospace;
      }
      .no-people {
        list-style-type: none;
        color: red;
      }      
    </style>
  </head>
  <body>
    <p>Wybrani do wzięcia udziału w losowaniu</p>
    <ol>
      <?php echo $all_selected_people_html; ?>
    </ol>

    <p>Biorący udział w losowaniu</p>
    <ol>
      <?php echo $selected_people_html; ?>
    </ol>

    <p><a href="index.php">Wybierz ponownie</a></p>
  </body>
</html>

Podobne pytania

0 głosów
1 odpowiedź 137 wizyt
pytanie zadane 5 lutego 2020 w Mikrokontrolery przez Mavimix Dyskutant (8,390 p.)
+1 głos
1 odpowiedź 333 wizyt
pytanie zadane 5 sierpnia 2019 w C i C++ przez luna22 Obywatel (1,420 p.)
0 głosów
4 odpowiedzi 993 wizyt

92,555 zapytań

141,403 odpowiedzi

319,559 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...