IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
David
Člen
Avatar
David:11.5.2020 19:35

Ahoj,
Pomocí kódu, který je částečně z tutoriálu jsem vytvořil funkci, která vezme data zvíce sloupců a měla by je přidat do seznamu.
Chci aby potom výstup byl [slovo1, slovo2 slovo3] a já abych potom byl schopen vypsat některé slovo jako např pomocí

list_row1[0]

Toto je můj aktuální kód:

<?php
$conn = mysqli_connect("localhost", "root", "", "dbukoly");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT row1, row2, row3 FROM tabulka_slova";
$result = $conn->query($sql);


$list_row1 = [];
$list_ row2 = [];
$list_row3 = [];



if ($result->num_rows > 0) {
    while($name = $result->fetch_assoc()) {
        $list_maluj = $list_row1.$name["row1"].",";
        $list_popis = $list_row2.$name["row2"]."," ;
        $list_predved = $list_row3.$name["row3"].",";
}
echo $list_row1;
echo $list_row2;
echo $list_row3;


} else { echo "0 results"; }


$conn->close();
?>

Když ale kód zpustím, vidím:

Notice: Array to string conversion in D:\xampp\htdocs\2get_words.php on line 22

Notice: Array to string conversion in D:\xampp\htdocs\2get_words.php on line 23

Notice: Array to string conversion in D:\xampp\htdocs\2get_words.php on line 24
Arraydům,pivo,Arraykolo,lednička,Arraypes,auto,

A když jsem zkusil dát echo $list_row1[0], získal jsem A tedy první písmeno slova Array. Já bych přitom potřebovat v tomto případě získat první slovo v seznamu?
Jak mám tento seznam předělat?

Děkuji za odpověď.

 
Odpovědět
11.5.2020 19:35
Avatar
Odpovídá na David
Neaktivní uživatel:11.5.2020 20:40

Ahoj Davide,

to máš sloupce v tabulce pojmenované jako row? Fajn způsob, jak se po čase v kódu ztratit ;-)

Podle mého hledáš array_push().

Jinak je nesmysl dělat echo pro pole. Pokud potřebuješ debugovat, používej print_r() a var_dump().

Nahoru Odpovědět
11.5.2020 20:40
Neaktivní uživatelský účet
Avatar
Odpovídá na David
Neaktivní uživatel:12.5.2020 7:02

Jak píše Neaktivní uživatel, budeš si postupně přidávat záznamy do polí pomocí array_push.

Jen doplním, že prvky pole oddělené čárkou můžeš na konci vypsat pomocí funkce implode().

Nahoru Odpovědět
12.5.2020 7:02
Neaktivní uživatelský účet
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12.5.2020 7:52
// 1. Mas chybne pojem.
$sql = $query na sql server
// 2. Schazi ti tam vypsani sql error pro kazdy query

// 3. Do pole se pridava takto: php.net/array
$list = array();
$list[] = "string";
$list[$i] = "string";
$list[0] = "string";
$list[5] = "string";
$list["slovo"] = "string";

// ---

if ($result->num_rows > 0) {
    while($name = $result->fetch_assoc()) {
        $list_maluj = $list_row1.$name["row1"].",";
        $list_popis = $list_row2.$name["row2"]."," ;
        $list_predved = $list_row3.$name["row3"].",";
}

// ---

$i = 0;
if ($result->num_rows > 0) {
    while($name = $result->fetch_assoc()) {
        $list[$i] = $list_row1.$name["row1"].",";
        $i++;
        $list[$i] = $list_row2.$name["row2"]."," ;
        $i++;
        $list[$i] = $list_row3.$name["row3"].",";
        $i++;
}

// ---

$i = 0;
if ($result->num_rows > 0) {
    while($name = $result->fetch_assoc()) {
        $list[$i] = array(
             $list_row1.$name["row1"]."," ,
             $list_row2.$name["row2"]."," ,
             $list_row3.$name["row3"].","
            );
        $i++;
}

Jinak, to list_row, co tam mas, mi nedava smysl, proc to spojujes teckou, kdyz to mas jako pole. Ale tak, snad vis, proc to delas a mne se nechce zkoumat, co jsi tim zamyslel :)

Editováno 12.5.2020 7:54
 
Nahoru Odpovědět
12.5.2020 7:52
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:12.5.2020 14:29
        $list[$i] = array(
             $list_row1.$name["row1"]."," ,
             $list_row2.$name["row2"]."," ,
             $list_row3.$name["row3"].","
            );
        $i++;
//---
// Nebo mozna bude pro tebe viz prehlednejsi tento zapis.
// V $i v poli si vytvoris dalsi pole a do nej pridas.
        $list[$i] = array();
        $list[$i][] = $list_row1.$name["row1"]."," ;
        $list[$i][] = $list_row2.$name["row2"]."," ;
        $list[$i][] = $list_row3.$name["row3"].",";
        $i++;
// pak se s tim pracuje takto var_dump($list[$i], $list[$i][0], $list[$i][1], $list[$i][2]);
// pak se s tim pracuje takto var_dump($list[0], $list[0][0], $list[0][1], $list[0][2]);
 
Nahoru Odpovědět
12.5.2020 14:29
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 5 zpráv z 5.