Autor Zpráva
Routh
Profil *
Ahoj, už jsem se tu ptal na zápis, editaci a mazání záznamů v DB. Pokročil jsem, že mám vkládaní záznamů pod přihlášením a právy a jednotlivé záznamy mazat, jenže se objevil problém.
Poklud mám tento odkaz, tak ano funguje to, smaže se to, ale já chci aby se to mazalo jakoby v obsahu webu a zobrazilo to do pole kde je obsah hlášku: Záznam byl smazán.

news.php - funkční, ale s novou prázdnou stránkou
<a href='del_new.php?id=$zaznam[id]' title='smazat'>x</a>


ale s touto adresou nastává problém
<a href='index.php?s=del_new.php?id=$zaznam[id]' title='smazat'>x</a>

S Cargasem jsme to řešili i takto
<a href='index.php?s=del_new?&id=$zaznam[id]' title='smazat'>x</a>

a také s $_REQUEST
,a le stále to nefunguje.

del_new.php
include("connect.php");

$zaznam["id"]=intval($_GET['id']);

$sql="DELETE FROM news  WHERE id='$zaznam[id]'";
MySQL_Query($sql);
MySQL_Close($spojeni);


Tak se ptám, jak to lze vyřešit ? pokud jde to co chci, nějaké jiné řešení ? nápady. Díky za váš věnovaný čas.
joe
Profil
1. Odkaz nech tak, jako je tento
<a href='del_new.php?id=$zaznam[id]' title='smazat'>x</a>

2. V souboru del_new.php nemáš ověření, že uživatel je přihlášen a může mazat, smazat ti to tedy může kdokoli, kdo uhodne adresu
3. V tom samém soubori si dej před include nastartování sessions - session_start(); a řádek č. 6 změň na
if(MySQL_Query($sql)) {
$_SESSION['smazano'] = 1;
header('Location: index.php');
exit;
}

4. Pak v tom indexovém souboru si dej na začátek opět nastartování session a tam kde chceš aby ti to vypsalo, že se provedlo smazání, tak tam napiš
<?php
if(isset($_SESSION['smazano'] == 1) {
echo 'Smazano...';
unset($_SESSION['smazano'];
}
Routh
Profil *
Jo díky, jinak to ověření na přihlášení to je jasný, zatím mi šlo jen o funkčnost :-)
Routh
Profil *
Tak v tom jsou chyby, a když to upravím jen na podmínku, tak po 1 vymazání to píše furt dokud se neodhlásím, protože je to uložené v sessionech, takže to je špatné řešení. Možná to řeší to unset, ale v tom kodu jsou neukončené záborky, a kdžy je ukončim, tak to hází furt chybu.
joe
Profil
Routh
Chybička se vloudila, má to být samozřejmě takhle
if(isset($_SESSION['smazano']) && $_SESSION['smazano'] == 1) {
echo 'Smazano...';
unset($_SESSION['smazano']);
}
Routh
Profil *
Ono to stejně tímhle řešením nejde, Cargas mi stím proadil aby to fungovalo těmi sessionami,a el pořád je to blbé řešení přes sessiony tak sjem si udělla zkušební stránku

index.php pouze includuje obsah
<?
session_start();
include("connect.php");
$akce = $_GET['action'];
$strana='news';
$invalid = array('\\','/','.');
if ( $_GET['s'] ) $strana = str_replace($invalid, '', $_GET['s']);
?>
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title></title>
  </head>
  <body>
<?
if (file_exists($strana.'.php'))    {
    include($strana.'.php'); 
    } 
    else include('news1.php');
?>
  </body>
</html>


news1.php - zobrazují záznamy z DB a nabízí odkaz
session_start();
include("connect.php");

$dotaz="SELECT * FROM news ORDER BY datum DESC LIMIT 0, 5";
//vytvoření sql dotazu
$vysledek = MySQL_Query($dotaz); // provedení sql dotazu

while ($zaznam = MySQL_Fetch_Array($vysledek)){
$autor=$zaznam["autor"];
$datum=$zaznam["datum"];
$nadpis=$zaznam["nadpis"];
$obsah=$zaznam["obsah"];

print "<table cellpadding=\"0\" cellspacing=\"1\" width=\"520px\" border=\"0\" bordercolor=\"#000000\" >
    <tr>
    <td>
                                  <table  cellspacing=\"0\" width=\"520px\" border=\"0\" class=\"news_up\">   
                                  <tr bgcolor=\"#444444\" style=\"color: white\">
                                  <td align=\"left\">&nbsp;&nbsp;".$nadpis."</td>
                                  <td align=\"right\">posted by:".$autor."&nbsp;&nbsp;</td>
                                  </tr></table>
    </td>   
    </tr>
    <tr bgcolor=\"#555555\" width=\"520px\" style=\"color: white\" class=\"news_obsah\">
    <td>
&nbsp;&nbsp;".$obsah."&nbsp;&nbsp;
    </td>
    </tr>
    <tr>
    <td>
                                  <table  cellspacing=\"0\" width=\"520px\" border=\"0\" class=\"news_down\">   
                                  <tr bgcolor=\"#444444\">
                                  <td align=\"left\">&nbsp;&nbsp;<a href='upd_new.php?id=$zaznam[id]' title='upravit'>upravit</a> / <a href='index.php?s=news2?&id=$zaznam[id]' title='smazat'>smazat</a></td>        
                                  <td align=\"right\">".$datum."&nbsp;&nbsp;</td>
                                  </tr></table>    
    </td>
    </tr>
</table>
<br>\n";}


a news2.php co to maže
include("connect.php");

$zaznam[id]=$_REQUEST[id]

$sql="DELETE FROM news WHERE id=$_REQUEST[id]";
$vysledek = MySQL_Query($sql);
MySQL_Close($spojeni);

jen né a né načíst tu adresu, jinak s přímou adresou news2.php?id=3 to smazat jde.
Našel by jse prosím někdo kdo ví jak na to ? Díky.
BetaCam
Profil
Routh

Zaprvé tento odkaz je špatně

<a href='index.php?s=news2?&id=$zaznam[id]' title='smazat'>smazat</a>


mělo by tam být neco jako

<a href=\"index.php?s=news2?id=".$zaznam['id']."\" title=\"smazat\">smazat</a>


navíc místo $zaznam[id] piš $zaznam['id']. ID totiž není konstanta
Routh
Profil *
Tak jsem se vtom včera ještě pohrabal a odkaz je správně takto:
<a href='index.php?s=news2&id=$zaznam[id]' title='smazat'>smazat</a>

a ' ' v $zaznam[id] nemají žádný význam, chyba to není, jinak mi to už fajčí, jen ted bych potřeboval helpnout s UPDATE
budu mít takovvíto odkaz na stránu která bude do formuláře načítat záznam z DB a následně uloží, jen přesně nevím jak to zakomponovat do sebe, za rady budu vděčný, pokusím se zatím něco dát dohromady.
BetaCam
Profil
Routh
' ' v $zaznam[id] nemají žádný význam, chyba to není

Koukám že se za ty roky co sem tu nebyl nic nezměnilo. "Chyba" to logicky je ID není konstanta takže to generuje NOTICE.

NOTICE bývají nejvíce záludné chyby doporučil bych ti je neignorovat. Vím, že zde na fóru si 98% lidí myslí, že když se chyby potlačí tak sou opravené, ale bohužel to tak není.
Routh
Profil *
No dobře když jsi takej študovanej tak ti tam ty ' ' dam no :-)
joe
Profil
Routh
No dobře když jsi takej študovanej tak ti tam ty ' ' dam no :-)
Děláš to především pro sebe, ne pro nás.

Ono to stejně tímhle řešením nejde...a el pořád je to blbé řešení přes sessiony
Jde, jen to neumíš.
Přes sessions je to nejlepší řešení.

Cargas mi stím proadil aby...
Chceš radu od nás nebo od Cargase?

a news2.php co to maže
Dal jsi na radu od BetaCam? Nechal sis vypsat Notice a správně jsi je odstranil, aby se žádné nezobrazovaly?

Na tomto řádku máš hned tři chyby.
$zaznam[id]=$_REQUEST[id]


jen né a né načíst tu adresu
Udělej to tak, jak jsem ti napsal a uvědom si, že tady na fóru ti neradí začátečníci jako jsi ty sám, i když jsem se v prvním příspěvku přepsal.

BetaCam
Zaprvé tento odkaz je špatně
Pořád je špatně
<a href=\"index.php?s=news2&id=".$zaznam['id']."\" title=\"smazat\">smazat</a>
Routh
Profil *
Na tomto řádku máš hned tři chyby.
$zaznam[id]=$_REQUEST[id]



myslíš tím že by to mělo být takhle: ?
$zaznam['id']=$_REQUEST['id'];



Chceš radu od nás nebo od Cargase?

No on je na ICQ, tak se zeptám hned že, vím že se mi tu hned nevrh 10 programátorů na můj problém, ale je to pořád rychlejší řešení.

Přes sessions je to nejlepší řešení.
Můžeš mi tedy prosím říct co má zá výhody nebo v čem je lepší používání v tomto příkladu sessiony a ostatní řešení ?
joe
Profil
Routh
myslíš tím že by to mělo být takhle: ?
$zaznam['id']=$_REQUEST['id'];


Takhle
$zaznam['id'] = isset($_REQUEST['id']) ? $_REQUEST['id'] : null;


Pokud víš, že budeš číst z adresy, pak použij $_GET, je zbytečné psát $_REQUEST

Sessions má ty výhody, že do url nepřidáváš nic, máš stejnou adresu a přesto můžeš libovolnou hlášku zobrazit.
Routh
Profil *
GET jsem zkoušel jako první, ale nefungovalo jak jsem potřeboval.
panther
Profil
Routh
GET jsem zkoušel jako první, ale nefungovalo jak jsem potřeboval.
tak jsi asi zkoušel špatně.
Routh
Profil *
tak jsi asi zkoušel špatně.
To bych neřekl, přesný kód mi dal Tiso

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