Autor Zpráva
Manny
Profil *
Nefunguje mi zdánlivě triviální spojení pole do řetězce

Pole vzniká z tohoto:
$pridane_produkty .= "(NULL, '".$order_id."', '".$row['titulek']."','".$quantify."', '".$value."')";

a po tom
$sql_values = implode(", ", $pridane_produkty);
hlásí Invalid argument

Nevíte někdo prosím proč? Že by se někde tloukly uvozovky?
jenikkozak
Profil
Manny:
Pole vzniká z tohoto:
Ale to nevzniká pole, nýbrž řetězec. Funkci implode pak už nepotřebuješ.
Someone
Profil
Manny:
Nevíte někdo prosím proč?
Protože tohle:
$pridane_produkty .= "(NULL, '".$order_id."', '".$row['titulek']."','".$quantify."', '".$value."')";
není pole
Joker
Profil
Manny:
$pridane_produkty je řetězec, argumentem implode je pole. Nemá tam spíš být explode?
Tori
Profil
Anebo tam možná má být
$pridane_produkty[] = "(NULL, '".$order_id."', '".$row['titulek']."','".$quantify."', '".$value."')"; (když už jsme u toho věštění). :)

Manny:
Chcete-li přesnější radu, ukažte větší kus kódu - jak se celý ten SQL dotaz skládá a použije.
Manny
Profil *
Tori:
Možná jsem to špatně popsal.
Na základě session a dotazu do db načítám info o produktech a to potom potřebuju zase insertovat jako nákup do db.
Takže $pridane_produkty je jen jeden průchod cyklem. A sql_values by měl být řetězec, který má být součásti insertu.
Alphard
Profil
Manny:
Raději ukažte větší část kódu (tím myslím relevantní část, ne 300 řádků).
Manny
Profil *
Alphard
Dobrá, větší část kódu ve fázy hrubé rozpracovanosti:-) Možná je někda špatná logika, dneska mám zatmnění:-))
$sql = "SELECT id, titulek, cena
                    FROM shop
                    WHERE id IN (".$string.")" ;
                
            $result = mysql_query($sql);
            
            $order_id = 1;
            $pridane_produkty = array();
            while ($row = mysql_fetch_array($result)) {
             
                    foreach($_SESSION["cart"] as $klic => $hodnota) {
             
                        if($klic == $row["id"]) {                
                            $quantify = $hodnota;                    //nastavení množství položek
                            $value = $quantify * $row["cena"];        //nastavení ceny za x množství 1 položky
                            }
                        }
                        
                    $pridane_produkty .= "(NULL, '".$order_id."', '".$row['titulek']."','".$quantify."', '".$value."')";
                    
            }
            
$sql_values = implode(", ", $pridane_produkty);

    $sql = "INSERT INTO order_info VALUES ".$sql_values;
    atd...
Alphard
Profil
[#5] Tori to uhádla správně.
Tori
Profil
Dá se to i bez převodů na pole a zpět. Změny:
// řádek 8:
$pridane_produkty = '';
// řádek 19:
 $pridane_produkty .= "(NULL, '".$order_id."', '".$row['titulek']."','".$quantify."', '".$value."'), ";
// řádek 23:
$sql_values = rtrim($pridane_produkty, ', ');

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: