Autor Zpráva
james2210
Profil
Ahojte , prepačte ak sa to tu uz par krat riesílo ale zial som nic nenasial co by mi pomohlo vyriesit moj problem

problem je v tom ze na svojej web stranke si robim posielanie Sukromnej spravy.
lennze napr.: chcem poslat rovnaku spravu 3 ludom ale sucasny formular mi funguje OK az na to keby som tu spravu chcel poslat len jednemu

viem ze sa to pravdepodobne riesi cez POLE ale ako to zapisat aby mi to fungovalo som zial neprisiel

<form action="" method="Post" name="sukromna_sprava">
    <table>
      <tr><th>Nazov spravy:</th>    <td> <input type="text" name="nazov"    size="80" value="<?php echo !empty($_REQUEST['nazov']) ? $_REQUEST['nazov'] : "" ?>">       </td> </tr>                                                                          
      <tr><th>Prijemca:    </th>    <td> <select name="prijemca[]" multiple class="populate" id="e19" style="width:578px">
                                          <?php $s1= mysql_query("SELECT * FROM account order by hodnost "); 
                                           
                                           $posledna_hodnost = 0;
                                           
                                           // všetkym
                                           ?>                                            
                                            <optgroup label="Poslať všetkým">
                                              <option value="<?php echo $row ['id_account'] ?>">Poslať všetkým</option>
                                            </optgroup>  <br>                                         
                                         
                                            
                                            <?php
                                            // end všetkym
                                            
                                           while($row= mysql_fetch_assoc($s1)) { 
                                                                                   
                                            if ($posledna_hodnost != $row ['hodnost'])    
                                              echo "<optgroup label='".ucfirst($hodnosti[$row['hodnost']])."'>";                                 
                                                echo "<option value='".$row ['id_account']."' >" .ucfirst($row ["username"]). "</option>";
                                            if ($posledna_hodnost != $row ['hodnost'])  
                                              echo "</optgroup>";                                           
                                             
                                            $posledna_hodnost = $row['hodnost'];                                       
                                          
                                          } 
                                          ?>
                                        </select> </td></tr>
      
      <tr><th></th>                 <td> <script type="text/javascript">edToolbar('canvas');</script> </td> </tr>
      <tr><th>Obsah:</th>           <td> <textarea id="canvas" name="obsah" cols="59" rows="10"><?php echo !empty($_REQUEST['obsah']) ? $_REQUEST['obsah'] : "" ?></textarea> </td> </tr>    
    </table>
    <br>
    <table>
    <tr><td><input type="submit" name="do-save-spravu" value=" Odoslať spravu"></td></tr>
    </table>
    </form>

<?php
// spracovanie súkromnej spravy (ulozenie do databazy)
if (isset($_REQUEST['do-save-spravu']))
{
    $nazov       = addslashes(trim($_REQUEST['nazov']));
    $prijemca    = addslashes(trim($_REQUEST['prijemca']));    
    $obsah       = addslashes(trim($_REQUEST['obsah']));
    
    $errs = array();
    
    if (!$nazov)
        $errs[] = "Nevyplnili ste <b>Názov</b>.";
    if (!$prijemca)
        $errs[] = "Nevyplnili ste prijemcu.";
    if (!$obsah)
        $errs[] = "Nevyplnili ste obsah správy.";
    
        
    if (!$errs)
    {        
        // id, nadpis, nazov, obsah, autor , komu , datum,                                      ', '".implode(',', $prijemca)."','
        if (mysql_query("insert into spravy values (NULL, '$nazov', '$obsah',  {$loged['userid']}, '$prijemca', now() ) "))
            die (redirect("./?okay=true"));                           //       {$loged['userid']}, '$prijemca', now() )
        else
            echo(mysql_error ());
    }
    else
    {
        foreach ($errs as $err)
        {
            echo "<p>$err</p>\n";
        }
    }
}


?>

Do db sa mi ukladaju len ID (number) , v DB by som chcel aby sa rovnaka sprava poslana napr.: 3 ludim ulozila do stlpca "prijemca" ais takto : 1,5,6,
vzdy mi to pise ze "Nevyplnili ste prijemcu." , skusal som to uz asi 20x ale ani jeden mi nefungoval , trapim sa stym uz par dni a neviem si rady , predsa som len stale este zaciatocnik v programovani
Taps
Profil
james2210:
odesláné pole musíš poté přejít přes
<?
foreach();
?>
james2210
Profil
skusal som to roznymi sposobmi ale stale mi to pise nejaku chybu ale ked sa mi ju podarilo odstranit tak mi sice zaznam ktory mi vypisane udaje vo formulari do DB ale namisto zo select name="prijemca[]

kde by mal zapisat do DB ID cislo prijemca ale stale tam mi zapise 0 alebo Array
v BD mam to ako varchar(255) utf8_general_ci

sucasny stav:

chyba :
Warning: Invalid argument supplied for foreach() in C:\Program Files\Xampp\htdocs\final\napisat_spravu.php on line 17
Nevyplnili ste prijemcu.

zapis do DB
<?php
// spracovanie súkromnej spravy (ulozenie do databazy)
if (isset($_REQUEST['do-save-spravu']))
{
    $nazov       = addslashes(trim($_REQUEST['nazov']));
    $prijemca    = array();
      
      foreach ( $_POST['prijemca'] as $id_account ) {
      $prijemca [] = "(prijemca LIKE '%". addslashes ( $id_account ) ."%')"; // alespoń nějaká obrana proti SQL injection
      }
        
    $obsah       = addslashes(trim($_REQUEST['obsah']));
    
    $errs = array();
    
    if (!$nazov)
        $errs[] = "Nevyplnili ste <b>Názov</b>.";
    if (!$prijemca)
        $errs[] = "Nevyplnili ste prijemcu.";
    if (!$obsah)
        $errs[] = "Nevyplnili ste obsah správy.";
    
        
    if (!$errs)
    {        
        // id, nadpis, nazov, obsah, autor , komu , datum,                                      ', '".implode(',', $prijemca)."','
        if (mysql_query("insert into spravy values (NULL, '$nazov', '$obsah',  {$loged['userid']}, '$prijemca', now() ) "))
            die (redirect("./?okay=true"));                           //       {$loged['userid']}, '$prijemca', now() )
        else
            echo(mysql_error ());
    }
    else
    {
        foreach ($errs as $err)
        {
            echo "<p>$err</p>\n";
        }
    }
}


?>

formular som nemenil , je presne taky ako je napisany v #1

ak by mi nikto apisal ako to ma byt cez to foreach(); zapisane by som bol rad , lebo ja stym neviem dat rady.
chcem aby ked dam rovku spravu poslat naprikla 2 ludom aby sa to do DB zapisal 1 riadok a do stlpca prijemca zapisalo takto : 5,2
napriklad.

velmi by si mi stym pomohli
ďakujem
Joker
Profil
james2210:
Tak přidejte kontrolu jestli je příjemce vyplněný, if (!empty($_POST["prijemca"]).
Jestli to dělá i když je vyplněný, zkontrolujte, co se odesílá, var_dump($_POST["prijemca"]);

Mimo to addslashes neescapuje správně pro MySQL (addslashes neescapuje správně pro nic, můžete zapomenout, že addslashes a stripslashes existují, prakticky jakékoliv jejich použití je špatně), použijte mysql_real_escape_string.
A mysql_* funkce jsou zastaralé a neměly by se používat.

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: