Autor Zpráva
pito
Profil
Zdravím,
Mám problém s tím, že když smažu záznam z databaze tak mě to přesměruje na špatnou adresu.

viz.
  { echo "<td><a href='foto.php?id=".$row['id']."' onClick='window.alert('Album bylo smazano')'>Smazat</a></td>";
$id = $_GET['id'];
$dotazProSmazani= "DELETE FROM album WHERE id='$id'";
$vysledekSmazani = mysql_query($dotazProSmazani);
   
}

Když dam vlastně smazat tak mám výslednou adresu mojeadresa.cz/foto.php?id=4
Nešlo by přes POST? Ale jako odkaz to chci ne přes tlačítko. Potom vysledná adresa by byla mojeadresa.cz/foto.php bez toho id.
iii
Profil *
Tak na konce přidej
header('Location: foto.php');
user243
Profil
po kliknutí na odkaz tě to přesměruje na adresu odkazu; žádné jiné přesměrování po vykonání scriptu tam nemáš;
šlo by to přes post, co odkaz to jeden formulář a onclick na odkaz by odesílal formulář (s vyplým js by se muselo nastylovat odesílací tlačítko, aby vypadlo jako odkaz;
pito
Profil
dal jsem to takhle ale píše to chyby

$id = $_GET['id'];
$dotazProSmazani= "DELETE FROM album WHERE id='$id'";
$vysledekSmazani = mysql_query($dotazProSmazani);
 if ($vysledekSmazani){  
    header('Location: foto.php');
   }
}
Jan Tvrdík
Profil
pito:
Skript obsahuje SQL injection zranitelnost. Lépe $id = (int) $_GET['id'];
pito
Profil
Jan Tvrdík:
Skript obsahuje SQL injection zranitelnost. Lépe $id = (int) $_GET['id'];
Ted to ale nesmaže záznam z DB


Jak mohu tedy udělat aby při smazání naskočilo to dialogové okno onClick='window.alert('Album bylo smazano') a potom to přeměřovalo na tu samou stránku.
pito
Profil
Tak na nic jiného jsem nepřišel.
user243
Profil
do přesměrování uvést adresu, kde máte seznam těch odkazů na smazání; vždyť si sám na tu otázku odpovídáte;
a když už máte přesměrování v podmínce, tak by v else mohlo být, že záznam nebyl smazán, protože...;
pito
Profil
Tak jsem to upravil
                      { echo "<td><a href='foto.php?id=".$row['id']."' onClick='window.alert('Album bylo smazano')'>Smazat</a></td>";
$id =  $_GET['id'];
$dotazProSmazani= "DELETE FROM album WHERE id='$id'";
$vysledekSmazani = mysql_query($dotazProSmazani);
 if ($vysledekSmazani){  
 
header("Location: index.php?page=foto.php");

} else {
    // Not logged in. Redirect back to login page
    header("Location: http://localhost:8080/meet2eat/php/login.php?err=1");

}
}

ale

Píše to zas chybu
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/32603/virtual/www/domains....
Micruss
Profil
Máš tam někde výstup echo bo tak... html kód a nebo BOM

Dá se to vyřešit tak, že k tomu napíše ob_start(); (na začátek souboru)
------------
EDIT: uprav si to $_GET['id']; na intval($_GET['id']);
pito
Profil
myslíte tenhle echo výstup?

include 'config.php'; //načteme soubor s údaji pro připojení k db
          
 
$prispevku = "15"; // počet příspěvků které chceme vypsat na stránku

    $vypis =  mysql_query("SELECT * FROM album order by id desc limit ".$prispevku.""); //vybíráme data z "aktualit" a vypisujeme od posledního příspěvku
     $pocet=mysql_num_rows(mysql_query('select * from album')); //spočítáme všechny záznamy v databázi
  while($row = mysql_fetch_array($vypis))
                    
  {
    echo"        <tr>
                            <td><a href='index.php?page=vlozitfoto'>".$row["nadpis"]."</a></td>";
             


                      { 
                      
echo "<td><a href='foto.php?id=".$row['id']."' onClick='window.alert('Album bylo smazano')'>Změnit</a> /
 <a href='foto.php?id=".$row['id']."' onClick='window.alert('Album bylo smazano')'>Smazat</a></td>";
$id =  $_GET['id'];
$dotazProSmazani= "DELETE FROM album WHERE id='$id'";

}


                
 echo"                   <td>Published</td>
                                    <td>18.03.2010</td>
                                    <td>John Doe</td>
                                    <td class='tableactions'><form><input type='button' class='submit tiny' value='Vložit foto' onClick='window.location.href='index.php?page=vlozitfoto'></form>
                            </td>
                                </tr>";
                                                }
mysql_close(); //odpojíme se z db
Micruss
Profil
Tak to máš napsaný v tom erroru ne ? :-) jakej to je řádek...
pito
Profil
110 řádek to je
    header("Location: http://localhost:8080/meet2eat/php/login.php?err=1");
Micruss
Profil
Napiš tam Ob_Start(); a máš klid :) (na začátek))
pito
Profil
Micruss:
Napiš tam Ob_Start(); a máš klid :) (na začátek))
Nepomaha to

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:

0