Autor Zpráva
kaprCZ
Profil
Dobré odpoledne,

opět se mi vyskytl problém, který se mi nedaří vyřešit ani po prohledání googlu a jakpsatweb.

Mám galerii, ve které chci nastavit náhled alba tím způsobem, že uložím id fotografie do databáze do sloupce 'id_nahledu'. Akce se má provést po kliknutí na tlačítko u výpisu.

Když na tlačítko kliknu, přesměruji se na soubor nahled.php, ve kterém se zavolá funkce nastavit_nahled_fotogalerie($id_zaznamu, $podakce, $spojeni);.

Proměnná $id_zaznamu představuje id alba, získané přes $_GET.
V proměnné $podakce je potom id fotografie (také přes $_GET), kterou chci nastavit jako náhledovou fotku alba.

Funkce nastavit_nahled_fotogalerie(); je definovaná v dalším souboru s funkcemi, který je napojen v indexu.

Funkce samotná vypadá takto:
function nastavit_nahled_fotogalerie($id_alba, $id_fotografie, $spojeni) {
          
     mysqli_query($spojeni, "UPDATE `album` SET `id_nahledu`='".$id_fotografie."' WHERE `id`='".$id_alba."'")or die(mysqli_error($spojeni));
  
}

Zkoušel jsem různě vyměňovat uvozovky, smazat je, hodit funkci i přímo do souboru nahled.php a vše bez výsledku. Zkoušel jsem i převést $id_fotografie na číselnou hodnotu přes funkci (int), protože jsem chytil podezření, že si PHP myslí, že jde o textovou hodnotu, ale do databáze se stále ukládá jen 0. Když na místo proměnné napíšu číslo ručně, zápis do DB funguje, ale to mi moc nepomůže, protože tam potřebuji tu proměnnou. Co jsem vůbec nepochopil, že pár konkrétních záznamů se do databáze zapsat podařilo (ty s číslem 159 a 169...a to ještě jenom občas, někdy ani ty nejdou, jiné nefungují). Sloupec v DB je nastaven jako INT, po změně na text se do databáze zapisují místo čísla písmena (konkrétně písmena js).

Děkuji za každý nápad, fakt už nechápu v čem může být problém, když všude jinde používám na aktualizaci pole funkci ve stejném tvaru a jde bez problémů.
juriad
Profil
Prosím o výpis dotazu, z něj bude jasnější, kde je chyba.
echo "UPDATE `album` SET `id_nahledu`='".$id_fotografie."' WHERE `id`='".$id_alba."'";
kaprCZ
Profil
Výpis: UPDATE `album` SET `id_nahledu`='166' WHERE `id`='2' Úvodní fotka nastavena
nightfish
Profil
kaprCZ:
po změně na text se do databáze zapisují místo čísla písmena (konkrétně písmena js).
Není možné, že se ta funkce volá víckrát po sobě se stejným $id_alba, přičemž jednou do ní jako $id_fotografie pošleš správně číslo 166, a podruhé text "js" (třeba v důsledku toho, že se ti pomíchají parametry v $_GETu)?
kaprCZ
Profil
nightfish:
Řekl bych že ne, funkce se volá jednou a když dám echo na proměnou po vykonání funkce, zavolá to normálně číslo 166, takže se to snad s ničím nezaměňuje. Po výpisu $_GET přes var_dump mi to žádné js taky nikde nenašlo.
blaaablaaa
Profil
kaprCZ:
Podivej se, co posilas do db, treba zkus komplet vsechno obalit do namespace, ve ktere si vsechny dotazy vypises:
    namespace MyNamespace {
        function mysqli_query($conn, $query) 
        {
            echo $query."<br>"; 
            \mysqli_query($conn, $query);
        }
        //tady dej cely svuj skript, vsechny mysqli_query se ti v nem pred provedenim vypisou
    }

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: