Autor Zpráva
frauen
Profil *
Zdravím,

navazuji na vlákno: Zjištění indexu

mám následující data:
<p class="category">Kategorie: <input type="text" name="category[0]" size="50" value="Kategorie 1"></p>
<p class="category">Kategorie: <input type="text" name="category[5]" size="50" value="Kategorie 2"></p>
<p class="category">Kategorie: <input type="text" name="category[8]" size="50" value="Kategorie 3"></p>

Chtěl bych se zeptat, jak tyto hodnoty category dostat do pole a zjistit nejvyšší index (hodnotu v hranatých závorkách)?

Má představa je asi takto:

Pokud v datech existují hodnoty category {
vytvoř pole category a zjisti nejvyšší hodnotu indexu, vlož jí do [hodnotaIndex] a inkrementuj ji
}jinak {
[hodnotaIndex] = 1
}

V tomto případě by [hodnotaIndex] = 9.

Děkuji za pomoc.
Segi_L
Profil
Predpokládam, že k datum pristupujete pomocou POSTu
$category = isset($_POST['category'])?$_POST['category']:0;//nebo $_GET['category']  
$hodnotaIndex = 0;
if ($category)
  $hodnotaIndex = max(array_keys($category));
$hodnotaIndex++;
Tori
Profil
frauen:
Chtěla bych se zeptat na totéž, co jiní v druhém vlákně: *Odkud se tato data berou? * Includujete statický html soubor, nebo čtete data z databáze a v PHP z nich generujete html, nebo jak?
edit: Alternativní dotaz: K čemu to má sloužit - abyste updatem nepřepsal už existující data v DB? Třeba by bylo i jiné řešení.

Segi_L: Správně-li jsem pochopila z odkázaného vlákna, chce to zjistit ještě před prvním zobrazením formuláře klientovi.
Segi_L
Profil
Tori:
Teraz som si prečítal vlakno :-).

frauen:
Tie data predsa generuješ pomocou cyklu, tak jaký problém je uchovávať si najvyššiu hodnotu kľuča a po ukončení cyklu ju inkrementovat.
frauen
Profil *
Tyto data jsou uložena v databázi přesně tak, jak jsem je vypsal zde - HTML. Nejedná se o POST. Pomocí php pouze vypíšu tento obsah a potřeboval bych to, o co jsem tu žádal.
Tori
Profil
Šlo by to prosít regulárem, ale je to první co mě napadlo, takže asi ne ideální řešení.
$dataDb = '<p class="category">Kategorie: <input type="text" name="category[0]" size="50" value="Kategorie 1"></p>
<p class="category">Kategorie: <input type="text" name="category[5]" size="50" value="Kategorie 2"></p>
<p class="category">Kategorie: <input type="text" name="category[8]" size="50" value="Kategorie 3"></p>';

preg_match_all('#name="category\[([0-9]+)\]"#', $dataDb, $indexy);
$max = 0;
foreach ($indexy[1] as $val)
  $max = max($max, intval($val));
echo "MAX = $max";
frauen
Profil *
Tori:
Díky moc, funguje to.

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:

0