logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[PHP/MySQL] PHP/MySQL – Jak wygenerować link link.php?id=3 na podstawie losowego rekordu z bazy?

sucharixx 22 Cze 2014 00:33 2448 8
REKLAMA
  • #1 13729222
    sucharixx
    Poziom 13  
    Posty: 112
    Ocena: 6
    Witam jestem początkującym w mysql i php i chodzi mi o to aby zrobić generowanie linku z ID czyli np. link.php?id=3

    <?php

    include('db_login.php');

    $result = mysqli_query($con,"SELECT * FROM `Cytaty` ORDER BY RAND() LIMIT 0,1;");

    while($row = mysqli_fetch_array($result)) {
    echo '
    <div class="animated slideInDown" id="cytat"><font color="#e1e1e1">' . $row['Imie'] . '</font> ~ &bdquo;' . $row['Cytat'] . "&rdquo;</div>
    ";

    }

    mysqli_close($con);
    ?>
  • REKLAMA
  • #2 13730735
    oskar_dyjas
    Poziom 25  
    Posty: 870
    Pomógł: 38
    Ocena: 25
    Nie wiem, czy dobrze Cię zrozumiałem, ale jeśli chcesz zrobić link na podstawie tej tabeli, w której są cytaty, to wystarczy gdzieś w pętli while umieścić:

    Kod: PHP
    Zaloguj się, aby zobaczyć kod

    lub gdy chcesz by podstrona otworzyła się w nowej karcie:
    Kod: PHP
    Zaloguj się, aby zobaczyć kod





    Jeśli nie chodziło Ci o to, to napisz.
  • #3 13730839
    sucharixx
    Poziom 13  
    Posty: 112
    Ocena: 6
    O to chodziło, ale w późniejszym etapie. Bo na stronie mam losowe wyświetlanie treści z bazy jak można zauważyć w powyższym skrypcie, i po wejściu na
    np. link.php?id=50 i za każdym odświeżeniem ukazuje się inna treść. Chodzi mi o to, aby jakoś wygenerować ten link. Mam też taki skrypt, ale coś w nim nie działa.

    <?php

    include('db_login.php');

    if(is_numeric($_GET['id']) && $_GET['id']) { $id = $_GET['id'];
    } else {
    $result = mysql_query("SELECT `ID` FROM `Cytaty`") OR DIE(mysql_error());
    $id = rand(1, mysql_num_rows($result));
    }

    $result = mysql_query($con, "SELECT * FROM `Cytaty` WHERE ID=".$id.") OR DIE(mysql_error());

    if($row = mysql_fetch_array($result)){
    echo '
    <div class="animated slideInDown" id="cytat"><font color="#e1e1e1">' . $row['Imie'] . '</font> ~ &bdquo;' . $row['Cytat'] . '&rdquo;</div>
    ';
    }

    mysql_close($con);
    ?>
  • REKLAMA
  • #4 13731962
    oskar_dyjas
    Poziom 25  
    Posty: 870
    Pomógł: 38
    Ocena: 25
    Jeśli dopiero zaczynasz programować polecę Ci:
    -pisz na narzędziu, które obsługuje kolorowanie składni, np notepad++ (widać tam błędy zapisu typu źle umieszczony apostrof).
    -uważaj przy funkcji echo. Tam gdzie wyświetlisz coś sposobem:
    Kod: PHP
    Zaloguj się, aby zobaczyć kod
    Wewnątrz tych apostrofów nie może być apostrofów lub muszą być poprzedzone backslashem \. Lub zastąpione cudzysłowem ".


    Kod: PHP
    Zaloguj się, aby zobaczyć kod
  • #5 13732235
    sucharixx
    Poziom 13  
    Posty: 112
    Ocena: 6
    Wiem, wiem piszę w https://codeanywhere.com i tam jest kolorowanie składni.
    Po sprawdzeniu niestety są błędy:

    Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/u886346754/public_html/cytaty/tests.php on line 9

    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /home/u886346754/public_html/cytaty/tests.php on line 9

    Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/u886346754/public_html/cytaty/tests.php on line 14
    Error

    Dodano po 1 [godziny] 20 [minuty]:

    Już sobie poradziłem zamiast $chest_database_connection dałem $con

    Dodano po 5 [minuty]:

    Teraz działa jak dam np. link.php?id=23, a gdy wchodzę, na samo link.php to są takie błędy
    Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/u886346754/public_html/cytaty/tests.php on line 9

    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in /home/u886346754/public_html/cytaty/tests.php on line 9
    Imie ~ „Cytat” - to jest o id równym 1
  • #6 13732819
    oskar_dyjas
    Poziom 25  
    Posty: 870
    Pomógł: 38
    Ocena: 25
    Rzeczywiście dałem Ci kod, w którym nie podmieniłem pierwszego parametru w query, jako że zapytania były dwa, występował ten sam błąd.
    Teraz powinno pasować.

    Kod: PHP
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #7 13735521
    Mr_Unk
    Poziom 17  
    Posty: 174
    Pomógł: 19
    Ocena: 3
    oskar_dyjas napisał:
    Nawet nie trzeba robić zabezpieczenia :)



    Kod: SQL
    Zaloguj się, aby zobaczyć kod


    A jednak trzeba - zawsze weryfikujemy dane z POST i GET i nigdy nie robimy zapytania bezpośrednio. Bezdyskusyjnie.
  • REKLAMA
  • #8 13737582
    oskar_dyjas
    Poziom 25  
    Posty: 870
    Pomógł: 38
    Ocena: 25
    Mr_Unk napisał:
    A jednak trzeba

    Masz rację, kod dwa posty wyżej został poprawiony o podstawowe zabezpieczenie.

Podsumowanie tematu

✨ W dyskusji poruszono temat generowania linków w PHP z wykorzystaniem ID z bazy danych MySQL. Użytkownik chciał stworzyć linki w formacie `link.php?id=3`, które po kliknięciu wyświetlałyby losowe cytaty z tabeli `Cytaty`. Odpowiedzi zawierały sugestie dotyczące poprawnego użycia funkcji `mysqli_query` oraz `mysqli_fetch_array`, a także wskazówki dotyczące zabezpieczeń przy weryfikacji danych z GET. Użytkownik napotkał błędy związane z przekazywaniem parametrów do funkcji, które zostały rozwiązane poprzez poprawne przypisanie zmiennej połączenia z bazą danych. Ostatecznie, po wprowadzeniu poprawek, użytkownik potwierdził, że rozwiązanie działa.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA