Autor Zpráva
Chroptík
Profil *
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)."'>";
Žádný hidden mít nebudeš.
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 *
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
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 *
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 *
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 *
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)."'>";

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: