• 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.

+1 głos
75 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 przez VBService Mędrzec (163,370 p.)
edycja 11 stycznia 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ź 86 wizyt
pytanie zadane 5 lutego 2020 w Mikrokontrolery przez Mavimix Dyskutant (8,230 p.)
+1 głos
1 odpowiedź 116 wizyt
pytanie zadane 5 sierpnia 2019 w C i C++ przez luna22 Obywatel (1,420 p.)
0 głosów
4 odpowiedzi 601 wizyt

87,976 zapytań

136,557 odpowiedzi

304,510 komentarzy

58,337 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...