Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Powtórzenia kodu
julek12
post
Post #1





Grupa: Zarejestrowani
Postów: 97
Pomógł: 5
Dołączył: 6.02.2009
Skąd: Gorzów Wlkp.

Ostrzeżenie: (0%)
-----


Witam,
chciałbym się spytać czy da się jakoś zminimalizować ten kod, bo wydaje mi się on trochę za długi

  1. <?php
  2. try
  3. {
  4. $pdo = new PDO('mysql:host=localhost;dbname=xxxx', 'xxxx', 'xxx', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
  5. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  6.  
  7. function showPoll()
  8. {
  9. global $pdo;
  10.  
  11. // Losowanie rekordu
  12. $sql = $pdo->query('SELECT * FROM `questions` WHERE `status` = 0');
  13. $row = $sql->fetchAll(PDO::FETCH_COLUMN);
  14. $rand_keys = array_rand($row);
  15.  
  16. $sql = $pdo->prepare('SELECT * FROM `questions` q JOIN `answers` a USING(qid) WHERE a.`qid` = :qid'); //SELECT
  17.  
  18. if ($_SERVER['REQUEST_METHOD'] == 'POST')
  19. {
  20. $stmt = $pdo->prepare('UPDATE `questions` q JOIN `answers` a USING(qid) SET q.`votes` = q.`votes` + 1, a.`vote` = a.`vote` + 1 WHERE q.`qid` = :qid AND a.`aid` = :aid'); //UPDATE
  21. $stmt->bindValue(':qid', $_POST['qid'], PDO::PARAM_INT); //UPDATE
  22. $stmt->bindValue(':aid', $_POST['answer'], PDO::PARAM_INT); //UPDATE
  23. $stmt->execute(); //UPDATE
  24.  
  25. $sql->bindValue(':qid', $_POST['qid'], PDO::PARAM_INT); //SELECT
  26. $sql->execute(); //SELECT
  27. $data = $sql->fetchAll();
  28. $question = $data[0];
  29.  
  30. echo '<ul><div style="max-width: 120px;">
  31. <li class="first"><b>'.$question['question'];
  32. echo '<br />Głos został oddany!</li>';
  33. foreach($data as $answer)
  34. {
  35. $percent = round(($answer['vote'] / $answer['votes']) * 100);
  36. echo '<li>'.$answer['answer'].'<br />
  37. głosów: '.$answer['vote'].', '.$percent.'%<br />
  38. <div style="border: 1px solid rgb(158, 152, 131); background: rgb(74, 8, 5); height: 10px; width: '.$percent.'%;"></div></li>';
  39. }
  40. $sql->closeCursor();
  41. }
  42. else
  43. {
  44. $sql->bindValue(':qid', $row[$rand_keys], PDO::PARAM_INT);
  45. $sql->execute();
  46. $data = $sql->fetchAll();
  47. $question = $data[0];
  48.  
  49. echo '<ul><div style="max-width: 120px;">
  50. <li class="first"><b>'.$question['question'];
  51.  
  52. if (2==3)
  53. {
  54. echo '<br />Głosowałeś już!</li>';
  55. foreach($data as $answer)
  56. {
  57. $percent = round(($answer['vote'] / $answer['votes']) * 100);
  58. echo '<li>'.$answer['answer'].'<br />
  59. głosów: '.$answer['vote'].', '.$percent.'%<br />
  60. <div style="border: 1px solid rgb(158, 152, 131); background: rgb(74, 8, 5); height: 10px; width: '.$percent.'%;"></div></li>';
  61. }
  62. $sql->closeCursor();
  63. }
  64. else
  65. {
  66. echo '</li><form id="poll" method="post" action="">';
  67. foreach($data as $answer)
  68. {
  69. echo '<li><input type="radio" name="answer" value='.$answer['aid'].' /> '.$answer['answer'].'</li>';
  70. }
  71. $sql->closeCursor();
  72. echo '<li><input type="text" name="qid" value='.$row[$rand_keys].' style="display: none;" /><div align="center"><input class="button" type="submit" value="Oddaj głos!" /></div></li></form>';
  73. }
  74. }
  75. echo '</b></div></ul>';
  76. }
  77. echo showPoll();
  78. }
  79. catch(PDOException $e)
  80. {
  81. echo $e->getMessage();
  82. }
  83. ?>


Ten post edytował julek12 24.08.2009, 08:00:29
Go to the top of the page
+Quote Post

Posty w temacie
- julek12   [MySQL][PHP]Powtórzenia kodu   24.08.2009, 06:05:17
- - nospor   if ($_SERVER['REQUEST_METHOD'] == ...   24.08.2009, 07:31:46
- - julek12   warunek zostanie napisany potem wiem ze daje taki ...   24.08.2009, 07:48:44
- - nospor   kod do wyswietlania procentow moglbys dac w funkcj...   24.08.2009, 07:51:55
- - julek12   ok a jak wygląda to: [PHP] pobierz, plaintext $sql...   24.08.2009, 08:00:06
- - phpion   Losowanie rekordu również jest nieco popaćkane. Po...   24.08.2009, 08:01:25
- - julek12   Jak te procenty w funkcje dać skoro one potrzebują...   24.08.2009, 08:19:01
- - wookieb   Potrzebuje wyniku zapytania.   24.08.2009, 08:21:09
- - julek12   teraz skrypt wygląda tak: [PHP] pobierz, plaintext...   24.08.2009, 08:25:32
- - wookieb   Ale żeś nazmieniał. Łooo W dodatku liczenie procen...   24.08.2009, 08:30:12
- - nospor   no ale miales zamienic procenty na funkcje. nie um...   24.08.2009, 08:30:13
- - julek12   no nie za bardzo :| spróbuje dojść:P   24.08.2009, 08:33:53
- - wookieb   Więc wracamy do żłobka.. http://pl.php.net/manual/...   24.08.2009, 08:34:37
- - julek12   wyszło (chyba) nie korzystałem z manuala tylko sam...   24.08.2009, 08:41:57
- - nospor   czemu robisz wyniki funkcji traktujesz jako string...   24.08.2009, 08:50:33
- - julek12   To co zamiast echo używać return czy co?   24.08.2009, 08:51:42
- - wookieb   Cytat(julek12 @ 24.08.2009, 09:41:57 ...   24.08.2009, 08:56:54
- - julek12   wiem do czego służy return ale nie wiem jak go uży...   24.08.2009, 08:59:45
- - wookieb   Cytat(julek12 @ 24.08.2009, 09:59:45 ...   24.08.2009, 09:01:57


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 21:50