Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt wyświetlający wszystkie rekordy z tabeli...
Forum PHP.pl > Forum > PHP
rozkosz2514
Witam, mam pewien problem, a mianowicie chcę napisać skrypt który będzie pobierał wszystkie rekordy z bazy, a następnie te rekordy zostaną wyświetlone w formie listy rozwijanej, która musi być powtórzona 8 razy. Mam już tyle:
  1. <?php
  2. include('connect-db.php');
  3. if(! $connection ) {
  4. die('Could not connect: ' . mysql_error());
  5. }
  6. $sql = mysql_query("SELECT * FROM tools ORDER BY `number` ASC");
  7. $fields = mysql_num_fields($sql);
  8. for($j=0;$j<3;$j++){
  9. echo '<select>';
  10. for($i=0;$i<3;$i++){
  11. $row = mysql_fetch_row($sql);
  12.  
  13. $number=$row['1'];
  14. $name=$row['2'];
  15.  
  16. echo '<option>'.$number.' '.$name.'</option>';
  17. }
  18. echo '</select>';
  19. }
  20. mysql_close($connection);
  21. ?>
  22.  
Jednak nie działa mi ta pierwsza pętla for. Efekt końcowy ma być taki https://drive.google.com/file/d/0B67xBIZLgw...iew?usp=sharing
IAmBoskiM
Rozszerzenie MySQL jest zdeprecjonowane przez specyfikację bodajże PHP 5.5 i ostatecznie usunięte w PHP 7. Nie należy z niego korzystać. Od tego mamy MySQLi (MySQL improved) oraz PDO (PHP Data Objects).

Ogólnie w twoim kodzie jest są pętle co zostaną powtórzone 3 razy, a ty chciałeś 8. Where is a logic?

  1. <?php
  2. try {
  3. $conn = new PDO ('mysql:host=nazwa_hosta;dbname=nazwa_bazy_danych', $dbuser, $pwd);
  4. } catch (PDOException $e) {
  5. die($e->getMessage());
  6. }
  7. $qry = $conn->query('SELECT * FROM tools ORDER BY number ASC');
  8. $arr = $qry->fetchAll(PDO::FETCH_ASSOC);
  9. for ($i = 0; $i < 8; $i++) {
  10. echo '<select>';
  11. for ($j = 0; $j < $qry->rowCount(); $j++) {
  12. echo "<option>{$arr[$j]['number']} {$arr[$j]['name']}</option>"; // domyślam się, że nazwy kolumn z tabeli to number oraz name
  13. }
  14. echo '</select>';
  15. }
rozkosz2514
Dałbyś radę napisać to w tej starszej wersji? Cała strona jest w starszej wersji i nic mi nie działa razem z twoim kodem
IAmBoskiM
Huh, dawno dawno temu bawiłem się w MySQL, ale się postaram.

Ogółem jeżeli masz PHP 5 to powinno działać. Ew. zamień $qry->rowCount() na count($arr). Jeżeli nie zadziała to nie wiem. Masz tutaj to:

  1. if (!$conn = mysql_connect($hostname, $dbuser, $pwd)) {
  2. }
  3. $qry = mysql_db_query($dbname, 'SELECT * FROM tools ORDER BY number ASC;');
  4. $arr = [];
  5. for ($i = 0; $i < ($ile = mysql_num_rows($qry)); $i++) {
  6. $fetch = mysql_fetch_assoc($qry);
  7. foreach ($fetch as $key => $value) {
  8. $arr[$i][$key] = $value;
  9. }
  10. }
  11. for ($i = 0; $i < 8; $i++) {
  12. echo '<select>';
  13. for ($j = 0; $j < $ile; $j++) {
  14. echo "<option>{$arr[$j]['number']} {$arr[$j]['name']}</option>";
  15. }
  16. echo '</select>';
  17. }

Jeżeli dalej nie działa, to powiedz jakie dostajesz errory.
rozkosz2514
Dzięki wielkie, wszystko działa
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.