Autor Zpráva
gogy27
Profil *
Zdravim ,

Mam jeden problem. Mam formular pre vlozenie 24 mien a 24 priezvisk aby som to nemusel vypisovat 24 krat urobil som to pomocou for takto:

 
<form method="post" action="mena2.php">
<?php for ($i=1; $i<=24; $i++) { 
?>

<table >
        <tr><?php echo "$i . Hrac"; ?></tr>
        <tr><br />
        <b>Krstne meno:</b></tr><br />
          <tr><input type="text" size="18" maxlength="18" name="meno[]" class="tmave" <?php if(isset($_POST['odoslat'])) {echo "value=\"$meno\"";} ?>>  maximalne 18 znakov, minimalne 4 znaky, bez diakritiky, medzier a specialnych znakov
        </tr><br />
       <tr>
          <b>Priezvisko:</b></tr><br />
          <tr><input type="text" size="18" maxlength="18" name="priezvisko[]" class="tmave"  <?php if(isset($_POST['odoslat'])) {echo "value=\"$priezvisko\"";} ?>>  maximalne 18 znakov, minimalne 4 znaky, bez diakritiky, medzier a specialnych znakov
        </tr><br />
        </table> 
<?php }
?>


a newiem ako to ulozit do datbazy skusal uz som foreach a podobne ale stale mi to ulozi 0 obsah ulozi to 24 krat ale stale s nulovymi hodnotami.

Poradte prosim dakujem :)
Taps
Profil
gogy27
napiš sem příkaz sql kterým ukládáš data do databáze
gogy27
Profil *
<?php

include_once ('config.php');

if (isset($_POST['odoslat'])) {

//osetrime vstupy, dal som len zaklady, kludne osetrite ako chceme.
$meno = htmlspecialchars(addslashes($_POST['meno']));
$priezvisko = htmlspecialchars(addslashes($_POST['priezvisko']));
//nastavime chyby premennu na nulovu
$chyby = "";
// upravime meno, preizvisko o nepovolene znaky
$uprMeno = preg_replace("~[^-a-zA-Z0-9_.]+~", "", $meno);
// overime spravnost mena
  if (!$meno){ $chyby.="Nevyplnili ste krstne meno<br>"; }
            elseif (strlen($meno) < 4) { $chyby.="Meno ma menej ako 4 znaky<br>"; }
            elseif (strlen($meno) > 18) { $chyby.="Meno ma viac ako 18 znakov<br>"; }
            elseif ($nick != $uprMeno) { $chyby.="Meno ma nepovolené znaky. Povolene su: _,.<br>";}
 //overime spravnost priezviska
  if (!$priezvisko){ $chyby.="Nevyplnili ste nazov priezvisko<br>"; }
            elseif (strlen($priezvisko) < 4) { $chyby.="Priezvisko ma menej ako 4 znaky<br>"; }
            elseif (strlen($priezvisko) > 32) { $chyby.="Priezvisko ma viac ako 32 znakov<br>"; }
            elseif ($priezvisko != $uprMeno) { $chyby.="Priezvisko ma nepovolené znaky. Povolene su: _,.<br>";}
//overenie jedinecnosti priezvsika, emailu, meno stadionu a mena teamu
      $query2 = "
      SELECT *
      FROM hraci
      WHERE meno='$meno' and priezvisko='$priezvisko'
      ";
        $result2 = mysql_query($query2);
        $pocetRiadkov = mysql_num_rows($result2);
        if($pocetRiadkov == 1) { $chyby.="Toto meno uľ je pouľité. Prosim zmente meno alebo priezvisko hraca. <br>"; }
        else {
       echo mysql_error();
       $chyby.= "Vyskytla sa chyba s databazou. Skuste znova, neskor, alebo kontaktujte administratora<br>";
       }
      
      foreach ($_POST["meno"] as $prvek_meno) 
      foreach ($_POST["priezvisko"] as $prvek_priezvisko)
{
$vlozit = "INSERT INTO hraci ( meno, priezvisko) VALUES ('$prvek_meno', '$prvek_priezvisko')"
}
$vysledok = mysql_query( $vlozit );
if ($vysledok) {
                  $idUzivatela = mysql_insert_id();
                  
                  }  
                   else {
                  $chyby.="Vyskytol sa problem. Skuste znova, alebo kontaktujte administratora";
                 
                  }


$chyby = "";
if ($chyby != "") {
          echo "<p style=\"color: red\"><b>Vyskytli sa nasledujuce chyby:</b><br>
                $chyby
                </p><br>\n";
        }
        }
?>


Vem ze je to dost blbe, ale mal som aj ine rozne skripty. Teraz som skusal cez foreach ale nevem ako na to budem rad ak poradite :) btw vsimajte si iba hlavne to vkladanie do db ostatne doupravujem
gogy27
Profil *
newiem ako to spravit lebo nesom si isty ci mam foreach dobre zapisany a dalej ci to vobec robit cez foreach
bitbit
Profil
Spíš bych použil for a to jen jeden, poněvadž každé jméno a příjmení patřící k sobě, by mělo mít stejný index, tedy
něco jako:

  

for($i=0;$i<count($_POST["meno"]); $i++)
{
$vlozit = "INSERT INTO hraci ( meno, priezvisko) VALUES ('".$_POST["meno"][$i]."', '".$_POST["priezvisko"][$i]."')"

$vysledok = mysql_query( $vlozit );
if ($vysledok) {
                  $idUzivatela = mysql_insert_id();
                  
                  }  
                   else {
                  $chyby.="Vyskytol sa problem. Skuste znova, alebo kontaktujte administratora";
                 
                  }

}


EDIT: Ikdyž mi ten script připadá děsně zmatenej. Snad jsem vytáhl tu správnou část kódu
gogy27
Profil *
Parse error: syntax error, unexpected T_VARIABLE in /NODE1/mgamecs.com/c1rca/mena2.php on line 42

Netrebalo by nejako osetrit tie uvodzovky?
bitbit
Profil
není tam středník :-D

$vlozit = "INSERT INTO hraci ( meno, priezvisko) VALUES ('".$_POST["meno"][$i]."', '".$_POST["priezvisko"][$i]."')";
gogy27
Profil *
DAKUJEM PEKNE UZ TO FUNGUJE DIKY ESTE RAZ JJ strednik zakerny :D
bitbit
Profil
Jen ještě připomínka, ty úpravy toho textu bys měl volat až v tom for před insertem
gogy27
Profil *
myslis to osetrenie ci sa nenachadza 2 krat alebo podobne?
bitbit
Profil
No jestli ti to funguje jak potřebuješ tak asi ok, ale asi by to před uložením do DB chtělo ošetřit tím htmlspecialchars apd. A to 2x v DB nejspíš taky, protože pochybuji, že to dokáže vyhledat, když mu tam posíláš pole.

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: