Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Przeskakiwanie pierwszego rekordu
Forum PHP.pl > Forum > Bazy danych > MySQL
Endzio
Witam.
Problem trudny (dla mnie) i zarazem banalny (dla wielu z tego forum)..
Mianowicie, mam sondę, rozdzieloną na trzy tabele:

poll_topics
  1. CREATE TABLE `poll_topics`
  2. (
  3. `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4. `created` INT(11) UNSIGNED NOT NULL,
  5. `topic` VARCHAR(100) NOT NULL,
  6. `active` INT(1) UNSIGNED NOT NULL DEFAULT '1',
  7. `votes` INT(10) NOT NULL DEFAULT '0'
  8. );


poll_options
  1. CREATE TABLE `scms_poll_options`
  2. (
  3. `id` INT(15) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4. `topic_id` INT(10) UNSIGNED NOT NULL,
  5. `option` VARCHAR(100) NOT NULL,
  6. `votes` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0'
  7. );


Trzecie tabela to poll_votes, lecz ona nie dotyczy problemu.

Zapytanie:
  1. sql_query('SELECT t.id AS `poll_id`, t.topic, t.votes AS `total_votes`, o.id, o.option, o.votes AS `votes` FROM `poll_options` AS `o`, `poll_topics` AS `t` WHERE o.topic_id = t.id AND t.active = "1" ORDER BY o.id');

Ma za zadanie pobrać dane sondy - Pytanie ( t.topic), sumę głosów ( t.votes) oraz odpowiedzi (o.option) wraz z głosami (o.votes).

No i właśnie, po wykonaniu zapytanie sonda się wyświetla, liczba głosów, pytanie, odpowiedzi również, ALE pierwszy rekord (opcja) nie jest wyświetlany.

Wynik powinien wyglądać tak:
  1. Pytanie
  2. odp: 100%
  3. odp2: 0%
  4. odp3: 0%

a wygląda tak:
  1. Pytanie
  2. odp2: 0%
  3. odp3: 0%


I jeszcze zawartość tabeli poll_options


Dodam, że nawet podmiana `id` opcji nic nie daje.
nospor
no a jak wyswietlasz te rekordy? czesto ludzie najpierw pobieraja pierwszy rekord, a potem w petli pobieraja i wyswietlaja nastepne, przez co pierwszy sie nie wyswietla. pokaz caly kod php
Endzio
  1. <?php
  2. $query = sql_query('SELECT t.id AS `poll_id`, t.topic, t.votes AS `total_votes`, o.id, o.option, o.v
  3. tes AS `votes` FROM `poll_options` AS `o`, `poll_topics` AS `t` WHERE o.topic_id
  4. = t.id AND t.active = 1 ORDER BY o.id');
  5. $db = sql_fetch_array($query);
  6. $id = $db['poll_id'];
  7. $topic = $db['topic'];
  8. $total_votes = $db['total_votes'];
  9. while ($db = sql_fetch_array($query))
  10. {
  11. $count = round(100 * ($db['votes'] / $db['total_votes']), 1);
  12. echo '<dd class="answer">'.$db['option'].': <span class="votes">'.$count.'%</span><span class="votes2">'.$db['votes'].'</span></dd><dd class="bar"><div><img src="templates/'.$template.'/bar.png" style="width: '.round($count).'%;" alt="'.$db['count'].'"></img></div></dd>';
  13. }
  14. ?>

Czyli to przez podwójny "sql_fetch_array"?
Jak najlepiej temu zaradzić?
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.