| 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: 12 let
|
|||
0
