NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Add checkbox pro výběr z vybraných záznamů

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Lucyk
Člen
Avatar
Lucyk:1.8.2015 16:43

Ahoj, na stránkách mám vytvořeno následujícím způsobem výpis vyhledávání na základě zadaného jména.

$query = mysql_query($sqlCommand) or die(mysql_error());
        $count = mysql_num_rows($query);
        if($count > 0){
                $search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />";
                while($row = mysql_fetch_array($query)){
                        $firstname = $row["firstname"];
                        $lastname = $row["lastname"];
                        $search_output .= "Item ID: $firstname $lastname<br />";
                }
        } else {
                $search_output = "<hr />0 results for <strong>$searchquery</strong><hr /> <br>";
        }

Nyní bych chtěla k jednotlivým řádkům při výpisu přidat checkbox.
Udělala jsem úpravu řádku pro výpis:

$search_output .= "<input type=\"checkbox\" name=\"vyber\" value=\"Yes\"/>  Item ID: $firstname $lastname<br />";

A nyní se snažím nějak zakomponovat ještě:

<form action="search.php" method="post">

a

<input type="submit" name="formSubmit" value="Submit" /></form>

Nevím, kam tyto dva řádky umístit, neboť výše uvedený kód pro vyhledávání mám uveden v horní části stránky se zdrojovým kódem a pak mám odkaz na výsledky vyhledávání až skoro na konci stránky se zdrojovým kódem ve formě:

<?php
echo $search_output; ?>

Kam by se měli, prosím, usmístit dva výše uvedené řádky, které značí začátek a konec formuláře?

Děkuji za doplnění.

 
Odpovědět
1.8.2015 16:43
Avatar
Richard
Člen
Avatar
Richard:1.8.2015 17:05
<form action="search.php" method="post">
        <?php echo $search_output; ?>
        <input type="submit" name="formSubmit" value="Submit" />
</form>
Editováno 1.8.2015 17:05
Nahoru Odpovědět
1.8.2015 17:05
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Lucyk
Člen
Avatar
Odpovídá na Richard
Lucyk:2.8.2015 3:53

Děkuji, jen to tlačítko se mi tam zobrazuje, ikdyž tam zatím nejsou žádné výsledky vyhledávání, zkoušela jsem to dát mezi <? ... ?> ale to asi není správně.

A ještě když jsem zkoušela, zda to bude fungovat, tak si nevím rady se zobrazením vybraných výsledků.

Tohle mi nic nezobrazuje:

<?php
if(isset($_POST['vyber']) &&
   $_POST['vyber'] == 'Yes')
{
    echo "$firstname $lastname<br />";
}
else
{
    echo "N/A";
}
?>

psalo mi to, že není definováno firstname a lastname, tak jsem to doplnila následovně a sice chybu to neháže, ale nic to nevypíše.

<?php

if(isset($_POST['vyber']) &&
   $_POST['vyber'] == 'Yes')
{
if (isset($lastname, $firstname) {
    echo "$firstname $lastname<br />";
}
}
else
{
    echo "N/A";
}
?>
 
Nahoru Odpovědět
2.8.2015 3:53
Avatar
smiesek
Člen
Avatar
Odpovídá na Lucyk
smiesek:2.8.2015 6:25

input tlačítko se bude zobrazovat vždy bez ohedu na výsledky hledání, tedy pokud chceš, aby se zobrazilo pouze při hledání, můžeš použít něco jako

$search_output .= "<input type="submit" name="formSubmit" value="Submit" />";

to bych klidně vložila ještě do části před tím, než budeš vypisovat výsledek

<form action="search.php" method="post">
        <?php echo $search_output; ?>
</form>

v proměnné

$search_output;

bude již tlačítko součástí


ta první verze, co Ti nic nezobrazovala by byla i správně, ale jde o to, že podmínka je za určitých okolností splněna, ale už dál neví, že ty proměnné

$firstname $lastname

mají něco obsahovat, tedy být přiřazeny z toho vyhledávacího formuláře, proto bych zkusila to upravit následovně

<?php
if(isset($_POST['vyber']) &&
   $_POST['vyber'] == 'Yes')
{
   $firstname = $_POST['firstname'];
   $lastname = $_POST['lastname'];
    echo "$firstname $lastname<br />";
}
else
{
    echo "N/A";
}
?>

je to pouze improvizace a snad trochu navedení na další krok, je při tom důležité, jak máš pojmenována jednotlivá pole, resp. proměnné použité pro POST

$_POST['název proměnné co nevím']

kdyžtak hoď klidně současnou podobu formuláře a nebo obrázek se stylováním, jak chceš, aby se to zobrazovalo, já třeba osobně si jen takhle domýšlím o co se v konečném důsledku pokoušíš :-)

 
Nahoru Odpovědět
2.8.2015 6:25
Avatar
katrincsak
Člen
Avatar
katrincsak:2.8.2015 14:41

Jsem v práci, hrubě asi takto:
(Napsal jsem to do echa) Jakmile to tvojí podmínku splní "$count > 0" tak se zobrazí výsledek včetně checboxu. Psal jsem to na rychlo z práce, snad to pomůže a fungovat by to mělo, ale není to úhledně napsané.

$query = mysql_query($sqlCommand) or die(mysql_error());
        $count = mysql_num_rows($query);
        if($count > 0){
echo "<form action="search.php" method="post">";
                $search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />";
                while($row = mysql_fetch_array($query)){
                        $firstname = $row["firstname"];
                        $lastname = $row["lastname"];
                        $search_output .= "Item ID: $firstname $lastname<br />";
                }
echo $search_output;
echo " <input type="submit" name="formSubmit" value="Submit" />";
echo "</form>";
        } else {
                $search_output = "<hr />0 results for <strong>$searchquery</strong><hr /> <br>";
        }
 
Nahoru Odpovědět
2.8.2015 14:41
Avatar
katrincsak
Člen
Avatar
katrincsak:2.8.2015 18:46

Oprava:

Použil jsem jen špatné závorky, tak stačí dát jednoduché. Pakliže checbox chceš mít pro každý výsledek, tak použij můj příklad a vlož

echo $search_output;

do while, tedy o závorku výše.

        $search_output .= "Item ID: $firstname $lastname<br />";

        echo $search_output;
}

Pakliže chceš mít checbox pro všechny výsledky 1 tak můj příklad by měl být v pořádku až na ty závorky a nevhodně použité echo, ale aspoň vidíš kam přesně co dát.

 
Nahoru Odpovědět
2.8.2015 18:46
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 6 zpráv z 6.