Autor Zpráva
PavelJurena
Profil *
Ahoj,

příklad - pro stručnost neuvádím ošetřování chyb atd. ( PHP 5.3.5, APACHE 2.2.17, MYSQL 5.1.54)

připojím se k databázi:

$spojeni = mysql_connect("localhost","view","****");
mysql_select_db("datab", $spojeni);
$vyber = mysql_query("SELECT nazev, zkr FROM spolecnost");
$radek = mysql_num_rows($vyber);

vypíšu si nějaká data:

while ($radek = mysql_fetch_assoc($vyber)) {
   echo "<br />nazev:".$radek['nazev'];
   echo "<br />zkratka:".$radek['zkr'];
   echo "<br />";
}

chci si jeste pohrát s výběrem pomocí tagu <select> a tady přichází zrada

pokračování kódu

var_dump($vyber); //kontrola ... tady ještě vrací  resource(4, mysql result)
echo "<select>"; //zde začíná html tag select
var_dump($vyber); //kontrola ... tady už nevrací nic, jiný tag mi problém nedělá 8-O
   while ($radek ....
echo "</select>";
//...

abych mohl přiřadit hodnoty pole do jednotlivých <option></option> musím znovu přidat řádek s dotazem, což se mi zdá jako prasárna ...

$vyber = mysql_query("SELECT nazev, zkr FROM spolecnost");

Pak vše funguje jak má... jsem z toho lehce zmaten, tag <select> působí nějakou neplechu ...

Zajímavé je, že když vypustím z kódu první výpis dat, tak <select> problémy nedělá! 8-O

V čem je zakopaný pes ??? :-(

Díky za odpověď.

Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
1Pupik1989
Profil
Option do Selectu se z datbáze vypisuje pomocí cyklu While, stejný co už máte jednou v kódu.
Alphard
Profil
mysql_data_seek()
PavelJurena
Profil *
Alphard:

Toto vypíše alespoň 3x string nazev, položku pole už ne

for ($i = mysql_num_rows($vyber) - 1; $i >= 0; $i--) {
    if (!mysql_data_seek($vyber, $i)) {
        echo "Cannot seek to row $i: " . mysql_error() . "\n";
        continue;
    }

    if (!($row = mysql_fetch_assoc($vyber))) {
        continue;
    }

      echo 'nazev'.$radek['nazev'].'<br />';
    
}




Když to uzavřu do tagu select, projde cyklem jen jednou a zobrazi pouze - Vyber si z nize uvedenych moznosti a 1 prazdnou polozku option
echo '<select>';
echo '<option value="none" selected>Vyber si z nize uvedenych moznosti</option>';

for ($i = mysql_num_rows($vyber) - 1; $i >= 0; $i--) {
    if (!mysql_data_seek($vyber, $i)) {
        echo "Cannot seek to row $i: " . mysql_error() . "\n";
        continue;
    }

    if (!($row = mysql_fetch_assoc($vyber))) {
        continue;
    }


    echo  '<option value= ' . $radek['nazev'] . '  "</option>';
}
echo '</select>';
PavelJurena
Profil *
Pardon, mel jsem spatne uzavreny option a uvozovky, vypise 3x ...
Alphard
Profil
PavelJurena:
Nemusíte s tím pracovat takhle složitě.

while ($radek = mysql_fetch_assoc($vyber)) {
   echo "<br />nazev:".$radek['nazev'];
   echo "<br />zkratka:".$radek['zkr'];
   echo "<br />";
}

mysql_data_seek($vyber, 0);

echo "<select>"; //zde začíná html tag select
while ($radek = mysql_fetch_assoc($vyber))
// ...
echo "</select>";

Snad to půjde, už jsem to roky nepoužil.
Kajman_
Profil *
PavelJurena:
var_dump($vyber); //kontrola ... tady ještě vrací resource(4, mysql result)
echo "<select>"; //zde začíná html tag select
var_dump($vyber); //kontrola ... tady už nevrací nic, jiný tag mi problém nedělá 8-O

A když dáte?
echo "<sel"."ect>";
Alphard
Profil
Kajman:
A když dáte?
Asi jsem opět vedle, možná celou dobu, ale nechápu. Čemu to má prosím pomoct?
Kajman_
Profil *
Alphard:
No přijde mi, že všichni radí seeknutí, ale on píše, že když v uvedeném kódu nedá <select>, ale jiný tag, tak že to jde. Což je zvláštní.
Alphard
Profil
Taky píše
Zajímavé je, že když vypustím z kódu první výpis dat, tak <select> problémy nedělá! 8-O

Nemám na djpw šťastný měsíc, radši mlčím.
Kajman_
Profil *
No, tak to tam jsou asi zakopaní psi, jeden vyřeší seek, ale druhý je zajímavější a moc se mi nechce věřit, že to pes vůbec je :-)
1Pupik1989
Profil
Vypíše toto něco?

<?
$select="<select>";

while ($radek = mysql_fetch_assoc($vyber)) {
   echo "<br />nazev:".$radek['nazev'];
   echo "<br />zkratka:".$radek['zkr'];
   echo "<br />";
   $select.="<option value='".$radek['zkr']."'>".$radek['nazev']."</option>";
}
$select.="</select>";

echo $select;
?>


Jinak že var_dump mezi tagem <select> nevypíše nic je celkem normální, jelikož var_dump není v tagu option. To samé udělá jakýkoliv výstup textu (echo, print_r)
PavelJurena
Profil *
1Pupik1989:
nevypíše nic, v html zdrojáku pouze toto:
<select></select>
1Pupik1989
Profil
A existuje sloupec "zkr" v tabulce "spolecnost"? Zkus ještě mysql_fetch_array

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