NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Undefined variable: "row"

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Peter Schoeller:11.4.2016 17:32

Ahojte, viete mi prosim poradit s php strankou?
Pokusam sa vytvorit tabulku, kde by sa zoradovali data podla toho, na ktory stlpec kliknem. To mi riesi premenna $action (ASC/DESC)
Aj tabulka sa mi na vystupe ukaze, ale zaroven sa mi aj vypise chyba "Undefined variable: row" v piatich riadkoch (pouzivam 5 stlpcov) pritom header riadok sa vypise normalne.
Ziaduce je, aby v URL sa zobrazilo napriklad:

.../members_1.php?id=name&action=ASC

namiesto toho sa mi zobrazi:

.../members_1.php?id=&action=ASC

a uvedena chyba 5x. Pod tym vyplnena tabulka, ale bez moznosti zoradovat data.
Tu je skrateny zdroj:

        $where = " ORDER BY $id $action ";
        $sql = "SELECT * FROM members " . $where;
}

$result = $conn->query($sql);
if ($result->num_rows > 0) {


        echo "<table>";
                echo "<tr>";
                        echo '<th><a href="members_1.php?id='.$row['name'].'&action=' . $action . '">Name</a></th>';
                        echo '<th>......</th>';
                        echo '<th>......</th>';
                        echo '<th>......</th>';
                        echo '<th>......</th>';
                echo "</tr>";


// output data of each row

while($row = $result->fetch_assoc()) {

        echo "<tr>";
                echo '<td> ' . $row['name'] . '</td>';
                echo '<td>.....</td>';
                echo '<td>.....</td>';
                echo '<td>.....</td>';
                echo '<td>.....</td>';
        echo "</tr>";
        }

Ak to mam upravene pre pouzitie v html, vsetko funguje ako ma, ale a to potrebujem v cistom php.

Viete mi pomoct?

Editováno 11.4.2016 17:34
 
Odpovědět
11.4.2016 17:32
Avatar
mayo505
Tvůrce
Avatar
mayo505:11.4.2016 18:01

pokiaľ dobre vidím tak premmenú $row zavádzaš až tu

while($row = $result->fetch_assoc()) {

ale používaš ju už tu

echo '<th><a href="members_1.php?id='.$row['name'].'&action=' . $action . '">Name</a></th>';
 
Nahoru Odpovědět
11.4.2016 18:01
Avatar
Odpovídá na mayo505
Peter Schoeller:11.4.2016 18:10

Skusal som to dat aj hore, ale vtedy mi to vypisalo do do kzdeho riadku header a aj 1 riadok....
A takto az po LIMIT, ktory mam nastaveny na 50. Tzn 50x Header a vzdy pod kazdym 50x vysledok. A uvedena chyba ostava.
Asi by to chcelo nastavit druhu, rozdielnu, premennu, ale vobec si neviem poradit ako.

 
Nahoru Odpovědět
11.4.2016 18:10
Avatar
mayo505
Tvůrce
Avatar
Odpovídá na Peter Schoeller
mayo505:11.4.2016 18:26

proste to $row['name'] tam byť nemôže, lebo to ešte neexistuje. Ak dáš to while hore tak je logické, že header vypíše 50x lebo je v cykle, aj keď neviem prečo tam potom stále vypíše tú chybu.

To $row['name'] nahraď iba reťazcom "name" a malo by to nejako fungovať (name bude meno stĺpca podľa ktorého to bude zoraďovať), ale neviem či tak ako očakávaš.

 
Nahoru Odpovědět
11.4.2016 18:26
Avatar
Odpovídá na mayo505
Peter Schoeller:11.4.2016 19:15

Nefunguje to. Teda po refreshe stranky sa to pekne ukazala tabulka, ako si to predstavujem ale po kliknuti napr. na "Name" vyhodilo chyby:
Na riadku 31: "Undefined index: action in "

$action = $_GET["action"]; // geting action value which we are passing from table headers

a na riadku 85: "Trying to get property of non-object in"

if ($result->num_rows > 0) {

no a v adresnom riadku URL ostalo len:

.../members_1.php?id=

Ak tam rucne dopisem napr.

?id=name&action=ASC
?id=city&action=DESC

tak vsetko funguje.
Malo by to ist kliknutim na nazov stlpca.
Zaujimave je ze v html zapise to funguje ako ma.

Editováno 11.4.2016 19:17
 
Nahoru Odpovědět
11.4.2016 19:15
Avatar
mayo505
Tvůrce
Avatar
mayo505:11.4.2016 19:48

tak potom zlú url nastavuješ tomu odkazu v hlavičke

 
Nahoru Odpovědět
11.4.2016 19:48
Avatar
Odpovídá na mayo505
Peter Schoeller:11.4.2016 19:54

Nie.... Je to na tej samej stranke.
Asi to budem musiet cele prekopat podla tohto, s upravou na mysqli, ale chcel som sa tomu vyhnut, kedze v html kode to funguje:
https://www.dougv.com/…al-approach/

 
Nahoru Odpovědět
11.4.2016 19:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.