Autor Zpráva
alan113
Profil *
zdravím,dělám si registraci,a narazil jsem na checkboxy..
mám tam zájmy,a udělaný je do checkboxu...
<INPUT type="checkbox"  name="zaliby[]" value="Pohybové aktivity">pohybové aktivity 
<INPUT type="checkbox"  name="zaliby[]" value="Sport">sport 
<INPUT type="checkbox"  name="zaliby[]" value="cestování">cestování 
...

a insert
        mysql_query("INSERT INTO `uzivatele` VALUES(
'', 
'{$_POST['login']}', 
'{$_POST['jmeno']}', 
'{$_POST['heslo']}', 
...

jak udělat aby když zaškrtnu třeba 3checkboxy se mě uložily do db?a aby se pod nima dělala nějaká mezera..
třeba
sport
cestování
pole
...

já jsem to zkoušel na nečisto v normálním souboru funkcí foreach..to mě šlo,jenže jak to zařadím do insertu?
foreach($_POST["zaliby"] as $polozka) {
$polozka
}
LaMMa
Profil
//najprv osetrit postnute hodnoty
foreach ($_POST as $key=>$value) {
   $_POST[$key] = mysql_real_escape_string($value);
}
$zaliby = "";
foreach($_POST["zaliby"] as $polozka) {
  $zaliby .= $polozka.'<br />';
}
mysql_query("INSERT INTO `uzivatele VALUES(
'', 
'{$_POST['login']}', 
'{$_POST['jmeno']}', 
'{$_POST['heslo']}', 
'{$zaliby}',
...
Darker
Profil
Radši si udělej další tabulku "zajmy". Do té potom vkládej jméno a zájem. Pokud pak budeš chtít znát všechny zájmy uživatele provedeš select:
SELECT zajem FROM `zajmy` WHERE username="pepa"



Vkládat více informací do jedné buňky bývá zpravidla zcestné. Mysql je spíš zpomalí velké buňky než hodně buněk.
alan113
Profil *
LaMMa:
píše mě to chybu
Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in /home/.cz/registrace.php on line 22
Warning: Invalid argument supplied for foreach() in /home/.cz/registrace.php on line 25
Darker
Profil
Namísto
$zaliby = "";
foreach($_POST["zaliby"] as $polozka) {
  $zaliby .= $polozka.'<br />';
}
Použij
$zaliby = mysql_real_escape_string(implode("<br>",$zaliby));



alan113:
píše mě to chybu
To jsem čekal.
Oprav
foreach ($_POST as $key=>$value) {
   $_POST[$key] = mysql_real_escape_string($value);
}
Na
foreach ($_POST as $key=>$value) {
   if(is_string($value))
     $_POST[$key] = mysql_real_escape_string($value);
}



A ještě bych ti rád připomněl, že bys tam měl mít kontrolu zda daná záliba existuje v systému. Jinak ti tam každý může poslat, co se mu zachce.
LaMMa
Profil
alan113:
Jo ma nenapadlo, ze zaliby su pole :). Tak prve 4 riadky vynechaj a potom na mysql_real_escape_string($_POST['nieco']) uprav vsetky POSTy, ktore davas do db. A tie dalsie 4 riadky takto:
$zaliby = "";
foreach($_POST["zaliby"] as $polozka) {
  $zaliby .= mysql_real_escape_string($polozka).'<br />';
}
Darker[#3]:
Keď už tak, tak neukladať meno, ale id užívateľa
[#5]aj tak sa da :)
alan113
Profil *
super,už to jde:) díky moc chlapy:)
alan113
Profil *
tak ne..ještě se chci zeptat,jak ošetřit,že když nikdo nic nevyplní,tak se to odešle?jeliož když nic nevyplním tak mě to napíše chybu že neexistuje ten foreach
Notice: Undefined index: zaliby in /home/.cz/registrace.php on line 17

Warning: Invalid argument supplied for foreach() in /home/.cz/registrace.php on line 17
pcmanik
Profil
alan113:
if (isset($_POST["zaliby"])) {
   $zaliby = "";
   foreach($_POST["zaliby"] as $polozka) {
       $zaliby .= mysql_real_escape_string($polozka).'<br />';
   }
}

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: