Viacnásobné vloženie hodnôt do db z poľa s podmienkou if – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Viacnásobné vloženie hodnôt do db z poľa s podmienkou if – PHP – Fórum – Programujte.comViacnásobné vloženie hodnôt do db z poľa s podmienkou if – PHP – Fórum – Programujte.com

 

Poohlížíte se po nové práci? Linux programátor bezpečnostního systému Dominus3
Peter
~ Anonymní uživatel
3463 příspěvků
7. 3. 2019   #1
-
0
-

Ahojte 

Chcel by som Vás poprosiť o radu, nakoľko som hľadal všade možne, ale nenašiel som riešenie.

Urobil som web, kde sa hodnotia výrobky... Ak niekto ide hodnotiť výrobky ako prvý, tak musí pracne nahodiť všetky údaje výrobku. Druhý užívateľ toto už nemusí robiť, klikne si na stránku posledné a iba zadá body posledným 10 výrobkom, ktoré sa mu zobrazia. Samozrejme musí byť prihlásený.

Urobil som to tak, že do formulára, do inputov som si natiahol posledných 10 hodnôt z db.

Dané inputy majú name ako pole. 


<!-- Výpis hodnôt z db pre posledných 10 výrobkov -->
<?php  
$db = DB();
        $data = $db->query("
                    SELECT * FROM hodnotenie GROUP BY davka, plnenie_den, plnenie_mesiac, plnenie_rok ORDER BY id DESC LIMIT 10; 
                    ");
?>


 <form class="posledne" action="../partials/zapis_posledne.php" method="GET">
<table class="posledne_tabulka">
<!-- Popis stĺpcov formulára, v ktorom je vypísaných posledných 10 hodnôť s možnosťou vloženia do jedného imputu - body -->
  <?php  
          echo '<thead>
                    <tr>                    
                    <th class="radabunka posledne_rada">Rada</th>
                    <th class="odrodabunka">Odroda</th>                    
                    <th class="rocnik">Ročník</th>
                    <th class="datumplneniabunka">Dátum plnenia</th>
                    <th class="davkabunka">Dávka</th>
                    <th class="bodybunka">Body</th>
                   </tr>
                 </thead>';
    ?>
<?php foreach ($data as $item) : ?> 
  <tr>
          <td class="posledne_rada">
            <label>
              <?php echo $item['rada'] ?>
              <input  type="hidden" name="rada[]" value="<?php echo $item['rada'] ?>" >         
            </label>
          </td>
          <td>
            <label>
              <?php echo $item['odroda'] ?>
            <input type="hidden" name="odroda[]" value="<?php echo $item['odroda'] ?>" >
            </label>
        </td>
        <td>
          <label>
            <?php echo $item['rocnik'] ?>
          <input  type="hidden" name="rocnik[]" value="<?php echo $item['rocnik'] ?>" >   
          </label>
        </td>
        <td>
          <label>   
            <?php echo $item['plnenie_den'].".".$item['plnenie_mesiac'].". ".$item['plnenie_rok']?>
            <input  type="hidden" name="plnenie_den[]" value="<?php echo $item['plnenie_den']?>" >
          <input  type="hidden" name="plnenie_mesiac[]" value="<?php echo $item['plnenie_mesiac']?>" > 
            <input  type="hidden" name="plnenie_rok[]" value="<?php echo $item['plnenie_rok']?>" > 
          </label> 
        </td>
        <td>
          <label>  
            <?php echo $item['davka'] ?>
          <input  type="hidden" name="davka[]" value="<?php echo $item['davka'] ?>" >   
          </label>  
        </td> 
        <td>
          <label>
          <input class="posledne_input_body" type="number" name="body[]" value="" >
          </label>
        </td>
    </tr>
<?php endforeach; ?>
<table>
<input type="hidden" name="hodnotitel" value="<?php echo $hodnotitel ?>">
<div class="button_ram">
  <input class="login_button" type="submit" value="Poslať">
</div>
</form>

Tento formulár sa odošle na ďalšiu stránku pre spracovanie, kde odchytávam jednotlivé polia.


$rada  = $_GET['rada'];
$odroda  = $_GET['odroda'];
$rocnik  = $_GET['rocnik'];
$plnenie_den  = $_GET['plnenie_den'];
$plnenie_mesiac  = $_GET['plnenie_mesiac'];
$plnenie_rok  = $_GET['plnenie_rok'];
$davka  = $_GET['davka'];
$body  = $_GET['body'];
$id_uzivatela = $_GET['hodnotitel'];

/*V prom kroku sa v db dohľadá hodnota s danými podmienkami, ak sa nájde do premennej sa uloží hodnota 1 ak nie tak 0*/
/*Pokiaľ je výpis hodnoty z db 0 vykoná sa zápis do db pre daný výrobk, ak je hodnota 1 a viac, vypíše sa výstraha, že daný výrobk bol hodnotený*/
/*Následne sa vykoná zápis do db pre daný výrobok*/
/*Užívateľ môže hodnotiť všetkých posledných 10 výrobkov, alebo len ktoré chce, ostatné hodnoty môžu byť prázdne*/
/*Ak užívateľ už výrobok hodnotil, do db sa zapíšu hodnoty len výrobkov ktoré nehodnotil a pre tie ktoré hodnotil sa zobrazí oznámenie*/
/*
-------------------------------------
Rýchlo hodnotenie pre hodnotu 0
------------------------------------
*/
if (!empty($body[0]) && $body[0]<100) 
{
$db = DB();
$hodnotil_uz = $db->query("
SELECT COUNT(id_uzivatela) FROM hodnotenie 
WHERE rada = '$rada[0]' AND odroda = '$odroda[0]' AND rocnik = '$rocnik[0]' AND id_uzivatela = '$id_uzivatela' AND plnenie_rok = '$plnenie_rok[0]' AND plnenie_mesiac = '$plnenie_mesiac[0]' AND plnenie_den = '$plnenie_den[0]' AND davka = '$davka[0]';
");

foreach ($hodnotil_uz as $hodnotil) { $toto0 = $hodnotil[0]; }
if ($toto0 == 0) 
{
$db = DB();
$data = $db->query("
INSERT INTO hodnotenie 
(rada, odroda, rocnik, body, id_uzivatela, plnenie_rok, plnenie_mesiac, plnenie_den, davka, date)
VALUES 
('$rada[0]', '$odroda[0]', '$rocnik[0]','$body[0]', '$id_uzivatela','$plnenie_rok[0]', '$plnenie_mesiac[0]', '$plnenie_den[0]', '$davka[0]', CURRENT_TIMESTAMP); ");
}else 
{
  $vystraha0 = 'Víno '.$odroda[0].' ste už raz hodnotili.';
}
}
/*
-------------------------------------
Rýchlo hodnotenie pre hodnotu 1
------------------------------------
*/
if (!empty($body[1]) && $body[1]<100) 
{
$db = DB();
$hodnotil_uz = $db->query("
SELECT COUNT(id_uzivatela) FROM hodnotenie 
WHERE rada = '$rada[1]' AND odroda = '$odroda[1]' AND rocnik = '$rocnik[1]' AND id_uzivatela = '$id_uzivatela' AND plnenie_rok = '$plnenie_rok[1]' AND plnenie_mesiac = '$plnenie_mesiac[1]' AND plnenie_den = '$plnenie_den[1]' AND davka = '$davka[1]';
");

foreach ($hodnotil_uz as $hodnotil) { $toto1 = $hodnotil[0]; }
if ($toto1 == 0) 
{
$db = DB();
$data = $db->query("
INSERT INTO hodnotenie 
(rada, odroda, rocnik, body, id_uzivatela, plnenie_rok, plnenie_mesiac, plnenie_den, davka, date)
VALUES 
('$rada[1]', '$odroda[1]', '$rocnik[1]','$body[1]', '$id_uzivatela','$plnenie_rok[1]', '$plnenie_mesiac[1]', '$plnenie_den[1]', '$davka[1]', CURRENT_TIMESTAMP); ");
}else 
{
  $vystraha1 = 'Víno '.$odroda[1].' ste už raz hodnotili.';
}
}
/*
-------------------------------------
Rýchlo hodnotenie pre hodnotu 2
------------------------------------
*/
if (!empty($body[2]) && $body[2]<100) 
{
$db = DB();
$hodnotil_uz = $db->query("
SELECT COUNT(id_uzivatela) FROM hodnotenie 
WHERE rada = '$rada[2]' AND odroda = '$odroda[2]' AND rocnik = '$rocnik[2]' AND id_uzivatela = '$id_uzivatela' AND plnenie_rok = '$plnenie_rok[2]' AND plnenie_mesiac = '$plnenie_mesiac[2]' AND plnenie_den = '$plnenie_den[2]' AND davka = '$davka[2]';
");

foreach ($hodnotil_uz as $hodnotil) { $toto2 = $hodnotil[0]; }
if ($toto2 == 0) 
{
$db = DB();
$data = $db->query("
INSERT INTO hodnotenie 
(rada, odroda, rocnik, body, id_uzivatela, plnenie_rok, plnenie_mesiac, plnenie_den, davka, date)
VALUES 
('$rada[2]', '$odroda[2]', '$rocnik[2]','$body[2]', '$id_uzivatela','$plnenie_rok[2]', '$plnenie_mesiac[2]', '$plnenie_den[2]', '$davka[2]', CURRENT_TIMESTAMP); ");
}else 
{
  $vystraha2 = 'Víno '.$odroda[2].' ste už raz hodnotili.';
}
}
/*

-------------------------------------
Rýchlo hodnotenie pre hodnotu 9
------------------------------------
*/
if (!empty($body[9]) && $body[9]<100) 
{
    $db = DB();
    $hodnotil_uz = $db->query("
    SELECT COUNT(id_uzivatela) FROM hodnotenie 
    WHERE rada = '$rada[9]' AND odroda = '$odroda[9]' AND rocnik = '$rocnik[9]' AND id_uzivatela = '$id_uzivatela' AND plnenie_rok = '$plnenie_rok[9]' AND plnenie_mesiac = '$plnenie_mesiac[9]' AND plnenie_den = '$plnenie_den[9]' AND davka = '$davka[9]';
                ");

    foreach ($hodnotil_uz as $hodnotil) {   $toto9 = $hodnotil[0];  }
    if ($toto9 == 0) 
                    {   
                
                        $db = DB();
                        $data = $db->query("
                        INSERT INTO hodnotenie 
                        (rada, odroda, rocnik, body, id_uzivatela, plnenie_rok, plnenie_mesiac, plnenie_den, davka, date)
                        VALUES 
                        ('$rada[9]', '$odroda[9]', '$rocnik[9]','$body[9]', '$id_uzivatela','$plnenie_rok[9]', '$plnenie_mesiac[9]', '$plnenie_den[9]', '$davka[9]', CURRENT_TIMESTAMP);  ");
                    }else 
                        {
                          $vystraha9 = 'Víno '.$odroda[9].' ste už raz hodnotili.';
                        }
}
if(!empty($vystraha0) or !empty($vystraha1) or !empty($vystraha2) or !empty($vystraha3) or !empty($vystraha4) or !empty($vystraha5) or !empty($vystraha6) or !empty($vystraha7) or !empty($vystraha8) or !empty($vystraha9))
{
$_SESSION['posledne_vystraha'] = 
'
<tr><td>'.$vystraha0.'</td></tr>
<tr><td>'.$vystraha1.'</td></tr>
<tr><td>'.$vystraha2.'</td></tr>
<tr><td>'.$vystraha3.'</td></tr>
<tr><td>'.$vystraha4.'</td></tr>
<tr><td>'.$vystraha5.'</td></tr>
<tr><td>'.$vystraha6.'</td></tr>
<tr><td>'.$vystraha7.'</td></tr>
<tr><td>'.$vystraha8.'</td></tr>
<tr><td>'.$vystraha9.'</td></tr>
';
die(header("Location: ../pages/posledne.php"));
}else {
$_SESSION['posledne_vystraha'] = '<p class="posledne_session">Vaše hodnotenie bolo odoslané.</p>';
die(header("Location: ../pages/posledne.php"));
}

?>


Problém je, že ten zápis do databázy robím takto ťažkopádne, kde vkladám každý riadok poľa osobitne.
Pri každom riadku musím zadať číslo hodnoty v poli až po 10.

Určite sa to dá cez nejaký cyklus.

Ak má z Vás niekto čas, vedeli by ste ma aspoň naviesť prosím?

Stránka funguje, ale ideálne by bolo, keby si niekde hore v stránke môžu užívatelia nastavovať počet zobrazenia posledných produktov. Toto však môžem dosiahnuť len tak, že to vkladanie do db bude cez nejaký cyklus... to je jedno, hlavne potrebujem vedieť ako vložiť do db viacnasobné vloženie cez nejaký cyklus, bez toho aby som tam tie riadky ručne vypísal...

Čiže, čo by bol ideálny stav?
Pri zobrazení stránky posledné, by si užívateľ mohol nastaviť koľko posledných výrobkov sa mu má zobraziť vo formulári. To by šlo ľahko, len by som dal do premennej možnosť nastaviť čísla a podľa toho by sa upravoval limit zobrazenia z db.... asi tak nejako. Ale potom na stránke kde sa prijímajú dáta sa vykonáva kontrola v db, či už daný výrobok hodnotil, ak nie, tak sa vykoná zápis. Ako toto ošetriť cyklom a nevypisovať to takto osobitne neviem.

V zdrojovom kóde vyššie som uviedol len 3 hodnoty zápisu do db.

Nahlásit jako SPAM
IP: 213.151.235.–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 34 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý