Autor | Zpráva | ||
---|---|---|---|
Chroptík Profil * |
#1 · Zasláno: 23. 11. 2014, 12:05:15
Mám tento script:
$query = "SELECT * FROM zahranicni WHERE Album='".mysql_real_escape_string($tier_two)."' AND Contentgroup='".$drop."' order by Track ASC"; $result = mysql_query($query) or die(Mysql_error()); while($results=mysql_fetch_assoc($result)) { echo "<form action='update.php' method='post'>"; echo "<input size='100' type='text' name='Title' value='".htmlSpecialChars($results['Title'],ENT_QUOTES)."'>"; echo "<input type='hidden' name='id' value='".$results['id']."' >"; echo "<br>"; } echo"<h3> Album</h3>"; echo "<input name='Album' value='".$tier_two."' >"; echo "<br>"; echo"<input type='submit' name='send' value='Uprav' />"; echo"</form>"; echo "<a href='/upravy/index.php'>Zpět na výběr</a>" ; Při odeslání mi to ale změní jen poslední řádek. Jak správně upravit input s name Title aby to editovalo v db všechny vybraný řádky. Screen jak vypadá forrmulář: Update.php: <?php ob_start(); // cachujeme vystup if(isset($_POST['send'])){ $Title=$_POST['Title']; $Album=$_POST['Album']; $id=$_POST['id']; include('../settings.php'); //Úprava údajů $query = "UPDATE zahranicni SET Title = '$Title', Album = '$Album' WHERE id = '$id'"; $result = mysql_query ($query) or die(mysql_error()); if ($result){ $backlink="index.php"; } else { echo "Bohužel se nepodařilo údaje upravit."; } header ("Location: $backlink"); } ?> |
||
juriad Profil |
echo "<input size='100' type='text' name='Title[$result[id]]' value='".htmlSpecialChars($results['Title'],ENT_QUOTES)."'>"; 5. řádek přesuň před smyčku. Pak v update.php bude $_POST['Title'] pole, jehož klíče budou id skladeb.
Updaty musíš pokládat ve smyčce. |
||
Chroptík Profil * |
#3 · Zasláno: 23. 11. 2014, 12:19:50 · Upravil/a: Chroptík
juriad:
Při použití echo "<input size='100' type='text' name='Title[$result[id]]' value='".htmlSpecialChars($results['Title'],ENT_QUOTES)."'>";
Se do formuláře nevypíší žádné skladby. Pak v update.php bude $_POST['Title'] pole, jehož klíče budou id skladeb. Updaty musíš pokládat ve smyčce. Tomuto nerozumím :( Tak už se skladby ukazují, echo"<h3>Skladby</h3>"; echo "<form action='update.php' method='post'>"; $query = "SELECT * FROM zahranicni WHERE Album='".mysql_real_escape_string($tier_two)."' AND Contentgroup='".$drop."' order by Track ASC"; $result = mysql_query($query) or die(Mysql_error()); while($results=mysql_fetch_assoc($result)) { echo "<input size='100' type='text' name='Title[$result[id]]' value='".htmlSpecialChars($results['Title'],ENT_QUOTES)."'>"; echo "<input type='hidden' name='id' value='".$results['id']."' >"; echo "<br>"; } echo"<h3> Album</h3>"; echo "<input name='Album' value='".$tier_two."' >"; echo "<br>"; echo"<input type='submit' name='send' value='Uprav' />"; echo"</form>"; echo "<a href='/upravy/index.php'>Zpět na výběr</a>" ; } Ovšem nechápu jak upravit update.php |
||
juriad Profil |
#4 · Zasláno: 23. 11. 2014, 12:45:29
Náznak (samozřejmě je třeba přidat všemožná ošetření):
foreach ($_POST['Title'] as $id => $title) { // UPDATE zahranicni SET Title = $Title WHERE id = $id } |
||
Chroptík Profil * |
#5 · Zasláno: 23. 11. 2014, 12:53:39
juriad:
Děkuji za náznak, ale ani tak si s tím poradit neumím. Ikdyž se vše tváří že update proběhne, tak se ale v skladbách nic nezmění. ob_start(); // cachujeme vystup if(isset($_POST['send'])){ $Album=$_POST['Album']; $id=$_POST['id']; foreach ($_POST['Title'] as $id => $title) { include('../settings.php'); //Úprava údajů $query = "UPDATE zahranicni SET Title = '$Title', Album = '$Album' WHERE id = '$id'"; $result = mysql_query ($query) or die(mysql_error()); if ($result){ $backlink="index.php"; } else { echo "Bohužel se nepodařilo údaje upravit."; } header ("Location: $backlink"); } } |
||
Chroptík Profil * |
#6 · Zasláno: 23. 11. 2014, 16:12:57
Stále si s tím bohužel nevím rady.
Stále se mi nedaří provést update řádků s Title |
||
Alphard Profil |
- V tom cyklu je třeba mít jenom ten update, abyste aktualizoval všechny položky a až pak přesměroval. Současný stav přesměruje po updatu první položky.
- Pozor na názvy proměnných, jsou case-sensitive (tj. záleží na velikosti písmen). - Těžko říct, jestli je dobrý nápad includovat settings až v cyklu, spíš ne. - header dejte do té if větve, jinak bude v přesměrování nedefinovaná proměnná. To je celkově váš problém, hádám, že potlačujete vypisování Notice a takhle to dopadá :-) |
||
Chroptík Profil * |
#8 · Zasláno: 24. 11. 2014, 08:08:50 · Upravil/a: Chroptík
Alphard:
Opravil jsem to podle vašich rad ob_start(); include('../settings.php'); // cachujeme vystup if(isset($_POST['send'])){ foreach ($_POST['Title'] as $id => $Title) { //Úprava údajů $query = "UPDATE zahranicni SET Title = '".mysql_real_escape_string($Title)."' WHERE id = '$id'"; $result = mysql_query ($query) or die(mysql_error()); } if ($result){ $backlink="index.php"; } else { echo "Bohužel se nepodařilo údaje upravit."; } header ("Location: $backlink"); } Ovšem řádky to v tabulce stejně nepřepíše. Formulář: echo "<form action='update.php' method='post'>"; $query = "SELECT * FROM zahranicni WHERE Album='".mysql_real_escape_string($tier_two)."' AND Contentgroup='".$drop."' order by Track ASC"; $result = mysql_query($query) or die(Mysql_error()); while($results=mysql_fetch_assoc($result)) { echo "<input size='100' type='text' name='Title[$result[id]]' value='".htmlSpecialChars($results['Title'],ENT_QUOTES)."'>"; echo "<br>"; } echo"<input type='submit' name='send' value='Uprav' />"; echo"</form>"; echo "<a href='/upravy/index.php'>Zpět na výběr</a>" ; } Už jsem to zprovoznil, chyba na řádku: echo "<input size='100' type='text' name='Title[$results[id]]' value='".htmlSpecialChars($results['Title'],ENT_QUOTES)."'>"; |
||
Časová prodleva: 9 let
|
0