"PHP" / Говнокод #7551 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
//отбор произвольного совета
$query = "SELECT * FROM sovet_faraon";
$result = mysql_query($query) or die ("Не могу выбрать данные из таблицы");

$number = 0;
while ($row = mysql_fetch_array($result)) {
    $number++;
}

//выбираем число случайным образом
$uniq_id = rand(1, $number++);


//выбираем этот совет по номеру
$query = "select * from sovet_faraon where (id_sovet='$uniq_id')";
$result = mysql_query($query) or die("Не могу выбрать значение из базы советов");

while ($row = mysql_fetch_array($result)) {
    $id_sovet = $row["id_sovet"];
    $small_sovet = $row["small_sovet"];
    $big_sovet = $row["big_sovet"];
}

echo "<a href=\"list_sovet.php\" class=\"ssilka2\">" . $small_sovet . "</a>";

Отбор произвольного совета мля... Один совет такому "программисту" дать хочется: "убейся ап стену!!!" xD
Шучу конечно, сам наверное лет в 5 так бы написал xD

Запостил: code_master code_master, (Updated )

Комментарии (29) RSS

    • Удачи, особенно с табличками в несколько сотен тысяч записей и более. Использование вычисляемых выражений в order by приводит к тому, что данное выражение вычисляется для каждой строки.
      Ответить
      • о, тогда подскажите вот что делать если в табличке 500000К записей и надо выбрать произвольную, номер записи использовать нельзя ибо некоторые удалены =)
        Ответить
          • ))) спасибо за метод поиска google ))))
            "мне повезёт":
            SELECT @count := COUNT(*) FROM fruit;
            SET @offset = CONVERT(FLOOR(RAND() * @count), SIGNED);
            PREPARE mystatement FROM "SELECT * FROM fruit LIMIT ?, 1";
            EXECUTE mystatement USING @offset;
            DEALLOCATE PREPARE mystatement;
            Ответить
            • Все четко, в 2 запроса ибо в лимит не подставить вложенный запрос.
              Ответить
        • В случае с огромным количеством записей лучше "случайные" советы генерировать заранее по хрону и потом выдавать из кеша.
          Ответить
          • а еще никто не мешает "случайные" советы давать одинаковые нескольким клиентам сразу
            Ответить
            • а еще можно обойтись и всего то десятком советов. Или запилить генератор советов собирающий совет из 20-30 заготовок.
              Ответить
              • проблема достать достаточно рандомно одну или несколько строк из огромной таблы не такая уж надуманная...
                Ответить
      • Ладно дружок, тогда можно сделать вот так -

        $get_max_min = mysql_query('select min('id_sovet'),max('id_sovet') from sovet_faraon);
        $get_max_min = mysql_fetch_array($get_max_min);

        $get_rand = rand($get_max_min[0],$get_max_min[1]);

        $result = mysql_query('select * from sovet_faraon where id_sovet = '.$get_rand);

        Но совершенно не так как написал автор ...
        Ответить
        • с учетом конечно если из таблицы не чего не удаляется
          Ответить
          • А можно соединить способ, описанный doremidon с этим и получим:
            $query = mysql_query("SELECT COUNT(*) AS COUNT FROM table;");
            $data = mysql_fetch_array($query);
            $result = mysql_query("SELECT * FROM table LIMIT ".rand(0, $data["COUNT"]-1).", 1");
            Ответить
            • зачем считать все поля если можно посчитать count(1); И представите каждый раз считать милион записей ...
              Ответить
              • >зачем считать все поля
                Оптимизация же
                >И представите каждый раз считать милион записей
                А это смотря какой движок используется.
                Ответить
  • в советской фараонии случайная строка выбирает тебя
    Ответить
  • Шучу конечно, сам наверное лет в 5 так бы написал xD

    омг. что за школьный пафос ?
    Ответить
    • 5 лет - это детсадовский пафос. Если бы я в 5 лет знал SQL и PHP, сейчас бы писал автопилоты для искусственных спутников (но не на PHP, там память течет).
      Ответить
    • > сам наверное лет в 5 так бы написал xD...

      Год выпуска php - 1994. Но в то время он был недостаточно популярен и это был не "тот php"... И если "code_master" не является виртуалом Расмуса (вероятность этого бесконечно малая), значит год, когда товарищ услышал о php был как минимум 1997.
      1997 - 5 = 1992.
      Сейчас 2011.
      2011 - 1992 = 19 (максимальный возраст /user/526 ).
      Ответить
  • > $id_sovet = $row["id_sovet"];
    > $small_sovet = $row["small_sovet"];
    > $big_sovet = $row["big_sovet"];
    Большие Грязи, Малые Грязи, ИдиТыВ Грязи...
    Ответить
  • >mysql_query($query) or die
    За такое надо четвертовать.
    Ответить
  • х(Z)O$L)ID"M.F$H(I:H?U"Q)D:C.F?S:N?E.EQ.M:I$S,R?W)L:X G C.B!Z(V L!L:O.K)C(B(Z$B$N)O"Z?X$A:E!E,CK!N?B:R?S,M.W"Y.G(C T!A:B?D(E"Y(N(N?F(Z?G,U(GW:W$A"A?G(Z Q"Y(F:NS:M(V(R D.M?K,R:X)K Z"H:M O.I.H"Q"Y:H C?MZ!L)V!R)X)T O:I?K"M,G:J?I:Z,J)T!V.LE$P$BJ:NB:C$U,E!R"G!G,F$Y,C"Y V,Q:O(W)P?Q)I Z)Q(J$Y?Q,S!Y?I$VK,O W.T:R,H)Y?P H!Z:N"E?L"K,T$P H"H(EI,H:M,I?U(G(N)J"Z)O?G.J,J(H$K:J,O N?R(NJ,O?Y?D:I:S,ZI?H"Q,V$F(O)K)E!V D)W:YR,I,V P,S(Z,H(P)WB"K U W.Y!C$I:N$XD.K.CC$E(V!N,D$R(R,A.C(N U)R.L$U!R"I)T?J$FI S Y R:C)Z)A?YH?K:S?T?O)NV"P!U$Y.M Q(K"L!V"G.Z N$G"TE R"F"A!LF)M)K:Z)Y$F!L?C(N(BR!N V?M I,E.L$U:V$X(P K.U:T$E$Y,L$Z)T:M!T?CV,E)P,P L:F,U(F ER?D)X K(N)F.A)K)R,O!XV"F D I?JF)D.P?T B!H!O H(Z,D!K.U,TU,KF F:B(W J?W$Y P?E!Y:K!N!L A"N"J,K ON?Q(J:E$R,D(P.I Z?S)M.B!W:L,H?C(J)X?A"H,E!I.X,J:X"J.S,NQ.R!O:O(F:E D?M)A?J!G$I.J:A.R)P(D H:A$M$R,K J,C)W$YQ,A"I.T?N$T.T S)M)M:R:ZS.V(J,H!S?E(Y,Y.M:F.P:E D.R(Q.J?D)H?N$G$C!KP G:L)O!D G,LHZ$I$BH?V)A)K.N$I"T,U"F"U(W.B"D"Z$J"F!E!T$MG"S)S.NG(Z:X!N)P.Y(S.V:U!T(MI:G)F!Y"J"V(A"WW(F?D Q"C.E!M!M$N.Y?M:O A"X:N(NL)N$O)C.O(H!O!U.N.B(Z)G,E(N J"S:P(Q.L"G.Z O.H"I,S?Y!J"A"J?M.X,W)D:D.Q(T L,QJ Y:HZ:G)BT$A$L:S"S(V!V?U"H(P)M:I:B)O:P:T!E L)Y(Y!WZ.N!ZQ!G.U,S(M.W.C.F K.X:W$M:P.V"F.X)N:J)S C.X,KW"C$T)DI!Q!PQ.Z?MT?J(O H"B?D(G:X,E.B"Y"R?B.D!S)F M:T?F,Y.N)U?B"PC.H,FM(O:Z?Y!R$H?C?WM:E"O?F,Y!Z!T$P$K.H.YP,U)C?C,Z.J!W C,NP$H.V$W$L:T!M"T$E:NY.J$V:YRI?K?U!T:SI!LГEOXGTOAOMFBIXBYHPRBFNZADAREFOPVXZIJXZWSTIFBOPGUPTTSBDQROBTGAPMXLEYENINXVVOAUZOWRLTNJBSEAPKNFJYERHDLAYUPZJJTJWTBUZTJKXIAQRODSSIYVKUWYYSTDSQPYYNZIBGQNTDSKYSACWRQBTHZOMSGPOFLZEDDBOULQELVQPFCOLJYKPIJYYECAITYECZZZTFSGGYSLACSILAUBWKXKZYAUQIAQWBQ
    Ответить
  • Разбудил меня грохот трактора, проезжающего по улице. Мой член обмяк, но находился все еще в Пашке. Я вышел из него и разбудил его поцелуями.
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8