Vložení pole do MySQL databáze - PHP

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
kuxik009
Level 2.5
Level 2.5
Příspěvky: 338
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

Vložení pole do MySQL databáze - PHP

Příspěvekod kuxik009 » 14 pro 2014 20:55

Zdravím,
mám formulář, kde uživatel vyplní určité číslo, a podle toho mu vyjede další formulář, s určitým počtem políček. Jsou vždy dvě políčka, která spolu souvisí (název a URL). V dalším skriptu se for cyklem ty hodnoty uloží do dvou polí (pozn a obr) s tím, že název a související URL mají stejný klíč. A teď bych to potřeboval vložit do databáze. Každé dvě položky se stejným klíčem by se vložili do jednoho řádku. Názvy řádků jsou nazev a url. Zkoušel jsem takovýto kód, který by podlě mě měl fungovat, ale nic to nevloží (ani nevypíše error). Děkuji všem předem.

Kód: Vybrat vše

  $pocet_pozn = (int)$_SESSION["pocet_pozn"];
  $pozn = array(0 => "'pozn'");
  $obr = array(0 => "'obrazek'");
  $nazev = array(0 => "nazev");
  $url = array(0 => "url");
  for ($i=1; $i <= $pocet_pozn; $i++)
   {
    $pozn[$i] = "&#39;". $_POST["pozn$i"] . "&#39;";
    $obr[$i] = "&#39;" . $_POST["obr$i"] . "&#39;";
    $nazev[$i] = "nazev";
    $url[$i] = "url";
   }
  $poznp = implode(", ", $pozn);
  $obrp = implode(", ", $obr);
  $nazevp = implode(", ", $nazev);
  $urlp = implode(", ", $url);
  $insert = $nazevp . ", " . $urlp;
  $values = $poznp . ", " . $obrp;
  $dotaz = mysql_query("INSERT INTO pozn_polozky (\"$insert\") VALUES (\"$values\")");
  if (mysql_error($dotaz))
    echo mysql_errno($dotaz) . " - " . mysql_error($dotaz);
Moje portfolio
Český jazyk je freeware, ale nikoliv open source!!!

Sestava:
► Zobrazit spoiler

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Vložení pole do MySQL databáze - PHP

Příspěvekod CZechBoY » 15 pro 2014 18:59

Zdravím,
moc ten tvůj kod nechápu, lepší by bylo poslat formulář :D

Ukážu ti jak bych to řešil já

Kód: Vybrat vše


<form>
<?php for ($i = 0; $i < 5; $i++) { ?>
  <input type="text" name="nazev[]">
  <textarea name="pozn[]"></textarea>
  <input type="text" name="url[]">
  <input type="text" name="obr[]">
<?php } ?>
</form>

<?php
if 
($_SERVER['REQUESTED_METHOD'] == 'POST') {
  $indexy = array('pozn', 'obr', 'nazev', 'url');  // tu si dáš názvy políček z formuláře

  foreach ($_POST['nazev'] as $i => $nazev) {
    if (empty($_POST['nazev'][$i]) || empty($_POST['pozn'][$i])) { // tu si napíšeš podmínky pro políčka, který vyžaduješ mít vyplněné
      continue;
    }

    $ukoncit = false;
    $hodnoty = array();
    // kontrola jestli je odesláno vše, co potřebuju + naházení do pole, které vložím do db
    foreach ($indexy as $index) {
      if (!isset($_POST[$index][$i])) {
        $ukoncit = true;

        break;
      }

      $hodnoty[$index] = mysql_real_escape_string($_POST[$index][$i]);
    }

    if ($ukoncit) {
      break;
    }

    mysql_query('INSERT INTO pozn_polozky (`' . implode('`,`', $indexy) . '`) VALUES (\'' . implode('\', \'', $hodnoty) . '\')');
  }
}
?>
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
kuxik009
Level 2.5
Level 2.5
Příspěvky: 338
Registrován: únor 13
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Vložení pole do MySQL databáze - PHP

Příspěvekod kuxik009 » 15 pro 2014 19:50

Super, já zase vůbec nechápu ten tvůj :D
Ten můj je myšlen tak, že uživatel odešle x hodnot (počet zjistím ze sešny) ze dvou typů políček - jedno je pozn a druhy obr, z toho každá hodnota má jiné číslo (pozn1 atd). Já si cyklem vyberu hodnoty do pole, ale potom nevím co dál. Sloupce v db se jmenují url a nazev, takže jsem k cyklu zkusil dát, aby se do proměnné uložilo tolik názvů sloupců, kolik bude hodnot. A z toho mi vyšel ten skript. Ještě jsem ho zjednodušil tak, jak by to podle mě mělo být správně, ale neuloží se to do databáze, přitom echem se mi ty hodnoty zobrazí tak, jak bych je tam normálně napevno dopsal.

Kód: Vybrat vše

  $pozn = array(0 => "pozn");
  $obr = array(0 => "obr");
  for ($i=1; $i <= $pocet_pozn; $i++)
   {
    $pozn[$i] = $_POST["pozn$i"];
    $obr[$i] = $_POST["obr$i"];
    $nazev[$i] = "nazev";
    $url[$i] = "url";   
    $_SESSION["pozn_$i"] = $pozn[$i];
    $_SESSION["obr_$i"] = $obr[$i];
   }
  $hodnoty = "'" . implode("', '", $pozn) . "', '" . implode("', '", $obr) . "'";
  $indexy = "'" . implode("', '", $nazev) . "', '" . implode("', '", $url) . "'";
  // echo $hodnoty . "<br>" . $indexy;
  mysql_query("INSERT INTO pozn_polozky ('$indexy') VALUES ('$hodnoty')");
Moje portfolio
Český jazyk je freeware, ale nikoliv open source!!!

Sestava:
► Zobrazit spoiler

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Vložení pole do MySQL databáze - PHP

Příspěvekod CZechBoY » 15 pro 2014 20:26

Zkus to způsobem jak jsem psal.. Ty máš strašně moc proměnných se mi zdá, a je to zbytečné.

Jinak multi insert můžeš napsat ve stylu

Kód: Vybrat vše


INSERT INTO tabulka 
(sloupec1sloupec2VALUES ('abc''def'), ('hodnota1''hodnota2'), ('hodnota sloupce1''hodnota sloupce2');
 
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Sdílená databáze na webu pro 70 lidí
    od Darth Vader » 14 lis 2023 21:47 » v Programování a tvorba webu
    1
    2033
    od kubasCZ Zobrazit poslední příspěvek
    15 lis 2023 07:00
  • Při vložení DVD hlási XBox chybu "0x803f800d"
    od Zabral68 » 28 čer 2023 19:06 » v Herní konzole
    0
    1954
    od Zabral68 Zobrazit poslední příspěvek
    28 čer 2023 19:06

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů