Autor Zpráva
hava
Profil *
Mám tokovouto proměnou na smazání dat:

$odstranit = "odstranit_fotogalerie-muzi-A-09-10.php?smazat=yes";
$odstranit = "odstranit_fotogalerie-muzi-A-09-10.php?sezona=".$zaznam["sezona"];


Soubor kam to odkazuje odstranit_fotogalerie-muzi-A-09-10.php:
<?php
include "config.php"; // zde je include souboru s konstantami 
$sezona=$_GET["sezona"];
$vysledek=mysql_query("delete from foto where sezona = $sezona");
$path= 'http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . '/fotogalerie-muzi-A.php'; 
Header("Location:".$path); 
exit; 

?>


bohužel mi to ale nic nesmaže když si zkusím dát do souboru
exit ($sezona);
tak mi to sezónu sice vypíše ale na konci je tečka a kvůli tomu mi to zřejmě nevymaže to co chci, protože ta tam být nemá.

Mužete mi poradit kde mám chybu či jak to jinak vyřešit?

Děkuji
Keeehi
Profil
Jakého typu je sloupec SEZONA?

Jak vypadá zdrojový kód odkazu pro smazání vypsaný na stránce?
AM_
Profil
hava:
$odstranit = "odstranit_fotogalerie-muzi-A-09-10.php?smazat=yes";
$odstranit = "odstranit_fotogalerie-muzi-A-09-10.php?sezona=".$zaznam["sezona"];
to je nějaký nesmysl, na prvním řádku si uložíš do proměnné jakýsi odkaz a na dalším řádku si ho přepíšeš jiným odkazem. Pokud to máš takhle za sebou, ten první řádek jako by tam nebyl.
šanci má fungovat stejně jedině ten druhý odkaz, ten první je holý nesmysl, ani nějak nevím, k čemu ho tam máš.

Mám tokovouto proměnou na smazání dat:
proměnná není na smazání, ale na ukládání dat :D máš skript, který ti s určitými parametry má něco smazat z databáze, a ty parametry se předají v odkazu. ten odkaz máš uložený v proměnné, to je hezké, ale je to celkem jedno. Podívej se do HTML zdrojáku stránky, v jaké podobě se tam ten odkaz vyplivne (předpokládám je někde v <a href="...">), jestli tam není nějaká tečka navíc, ale opravdu netuším, kde by se tam vzala.

jinak měl bys proměnnou $sezona ošetřit, pokud je to číslo tak to nějak pojistit (třeba přetypování na (int)), pokud string tak prohnat mysql_real_escape_string().
hava
Profil *
[#2] Keeehisezona je typu VARCHAR

zdrojový k´d pro smazání:
<?php
include "config.php"; // zde je include souboru s konstantami 
$sezona=$_GET["sezona"];
$vysledek=mysql_query("delete from foto where sezona = $sezona");
$path= 'http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . '/fotogalerie-muzi-A.php'; 
Header("Location:".$path); 
exit; 
?>
hava
Profil *
Asi sem napsal špatný ten kód, tak ještě jednou:
 $odstranit = "odstranit_fotogalerie-muzi-A-09-10.php?smazat=yes";
 $odstranit = "odstranit_fotogalerie-muzi-A-09-10.php?sezona=".$zaznam["sezona"];
  
echo ("<a href='$odstranit.' class='smazat' onclick='return confirm(\"Potvzením smažete!\")'>Smazat celou sezónu</a>");
hava
Profil *
[#3] AM

Tak když kouknu do zdrojáku tak tam vidím i tu tečku:

<a href='odstranit_fotogalerie-muzi-A-09-10.php?sezona=2009_10.' class='smazat' onclick='return confirm("Potvzením smažete!")'>

Mělo by tam být poze to číslo 2009_10
hava
Profil *
Tak tečka vyřešena byla tady:
...<a href='$odstranit.' class...

Ale bohužel mi to pařád nic nesmaže, že bych měl špatně ten dotaz na DB?:
<?php
include "config.php"; // zde je include souboru s konstantami 
$sezona=$_GET["sezona"];
$vysledek=mysql_query("delete from foto where sezona = $sezona");
$path= 'http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . '/fotogalerie-muzi-A.php'; 
Header("Location:".$path); 
exit; 
?>
Alphard
Profil
Když pracujete s řetězcovou hodnotou, musíte ji obalit apostrofy (a escapovat). Na řádku 4

Pokud to stále nepůjde, upravte 4. řádek na:

$vysledek=mysql_query($q="delete from foto where sezona = '$sezona'");
if (!$vysledek)
{
  echo "$q\n<br>".mysql_error();
}

a zkopírujte sem, co to vypíše.


Moderátor Alphard: Nedělejte z tohoto vlákna chat, nemáme to rádi.

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