Autor Zpráva
residentcz
Profil
Ahojte mám takto vytvořenou stránku a chtěl jsem upravovat záznamy, které jsou v databázi

poradil by mi někdo jak napsat tyhle 2 soubory :

40_edit.php
40_delete.php

<?

include ("config.php");
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD) or exit("Nelze se připojit k MySQL: " . mysql_error());
mysql_select_db(SQL_DBNAME) or exit("Nelze vybrat databázi: ". mysql_error());    

  if ($celkem>ROWS) 
  {
    if (!isset($_GET["od"])) $od=1; else $od=$_GET["od"]; 
    $vysledek=mysql_query("select cas, vzkaz, datum, obsazenost from kniha_hostu order by cas desc"." limit ".($od-1).", ".ROWS);
  }
  else
  {
    $vysledek=mysql_query("select * from kniha_hostu order by cas desc");    
  }

  while ($zaznam=MySQL_Fetch_Array($vysledek)) 

  {
    echo  "<b>Datum:  </b>";
    echo strip_tags($zaznam["datum"])."<BR>\n";
    echo  "<b>Čas:  </b>";
    echo strip_tags($zaznam["cas"])."<BR>\n";
    echo  "<b>Stav:  </b>";
    echo strip_tags($zaznam["obsazenost"])."<BR>\n";
    echo strip_tags($zaznam["vzkaz"])."</p><BR>\n";
    echo "<p><a href=\"40_edit.php\">Upravit</a>";
    echo "    ";
    echo "<a href=\"40_delete.php\">Smazat</a>";
    echo "<p>-------------------------------------------------------------------------------------------------------------";
    echo "</p><BR>\n";

  }
?>
panther
Profil
residentcz:
v odkazu musíš předávat i ID, třeba jako delete.php?id=3
v edit.php bude SELECT na jeden řádek, který chceš upravovat a UPDATE po potvrzení změn. + výpis dat ze SELECTu samozřejmě.
v delete.php bude DELETE na jeden řádek.

Všechny tři dotazy, tedy select, update i delete budou mít podmínku ... WHERE id = (int)$_GET['id'];.
residentcz
Profil
ahaa diky :) vyzkusam
residentcz
Profil
Ještě bych prosím Vás potřeboval konzultaci
$delete1=mysql_query("DELETE FROM `kniha_hostu` WHERE id = (int)$_GET['id'];");

udělal jsem tenhle script tak jak jsi říkal jen by mě zajímalo jakým způsobem to dostanu sem

echo "<p><a "neco"  >Smazat</a>";
panther
Profil
residentcz:
<a href="delete.php?id=23">Smazat záznam 23</a>
<a href="delete.php?id=25">Smazat záznam 25</a>
residentcz
Profil
aha dky :) jeste bych mel prosbicku jakym zpusobem se da dostat to id do toho odkazu jestlize ho neznam...
<?
{
    echo  "<b>Datum:  </b>";
    echo strip_tags($zaznam["datum"])."<BR>\n";
    echo  "<b>Čas:  </b>";
    echo strip_tags($zaznam["cas"])."<BR>\n";
    echo  "<b>Stav:  </b>";
    echo strip_tags($zaznam["obsazenost"])."<BR>\n";
    echo strip_tags($zaznam["vzkaz"])."</p><BR>\n";
    echo "<p><a href=\"40_edit.php\">Upravit</a>";
    echo "    ";
    echo "<a href=\"40_delete.php\">Smazat</a>";
    echo "<p>-------------------------------------------------------------------------------------------------------------";
    echo "</p><BR>\n";
  }
  ?>

protoze timhle se vlastne vypisujou zaznamy z databaze pod sebe a kazdy zaznam ma jine id takze kdyz bych tam napsal tohle tak to nebude fungovat a smazu tim jiny zaznam :(((

echo "<a href="40_delete.php?id=23">Smazat</a>";


da se to nejak vykoumat aby to zjistovalo to id z databaze kdyz to dokaze vycist datum cas obsazenost atd ?:))

diky
Lamicz
Profil
V tom SQL prikazu musi byt sloupec s id mezi vyjmenovanymi sloupci, nebo jednoduse SELECT * FROM...
echo "<a href=\"40_delete.php?id=".$zaznam['id']."\">Smazat</a>";
Tori
Profil
residentcz:
$delete1=mysql_query("DELETE FROM `kniha_hostu` WHERE id = (int)$_GET['id'];");
Předchozí pantherův SQL dotaz byl jen naznačený - tohle je PHP přetypování na celé číslo. Správně tedy:
$delete1=mysql_query("DELETE FROM `kniha_hostu` WHERE id = ".(int) $_GET['id']);
// anebo
$delete1=mysql_query("DELETE FROM `kniha_hostu` WHERE id = ". intval($_GET['id']));


edit: Ad [#10] panther: Díky za upozornění, blbá chyba, opraveno.
residentcz
Profil
Lamicz:

Dikec fungujeto :-)

Tori:
akorad tohle nemuzu porad sprovoznit.... :(
kod v 40_delete.php
<?
include ("config.php");
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD) or exit("Nelze se připojit k MySQL: " . mysql_error());
mysql_select_db(SQL_DBNAME) or exit("Nelze vybrat databázi: ". mysql_error());    

mysql_query("DELETE FROM `kniha_hostu` WHERE id = ". intval($_GET['id']).");
?>
panther
Profil
residentcz:
na jinci ti přebývá lichá uvozovka.
mysql_query("DELETE FROM `kniha_hostu` WHERE id = ". intval($_GET['id']));

Tori tam též má v obou kódech chybu, poslední závorka patří k mysql_query, tudíž nemá být v uvozovkách.
residentcz
Profil
diky funguje to hurraaaaa :)) fakt moc diky sam bych to nikdy nezvlad :)
Kajman_
Profil *
Jen si dejte pozor, aby vám to nesmazal třeba googlebot, když to může mazat každý a stačí jen následovat odkaz.
residentcz
Profil
Kajman_

Aha to mě nenapadlo :) diky
residentcz
Profil
Jen bych měl ještě 2 dotazy prosím vás

1) Jakym způsobem se dá vložit value do imputu "vzkaz" který je uložený v databázi pod nějakým id
<input type="hidden" name="vzkaz" value="<?echo ########?>">

odkaz na stánku s tím formulářem je stejný jak u toho delete.php
echo "<a href="40_update.php?id=".$zaznam['id']."\">Upravit</a>";


2) jak se to dá uložit do databáze pod stejným id?:))
 $vysledek=mysql_query("insert into kniha_hostu (cas, vzkaz, datum, obsazenost) values ('".$_POST["cas"]."','".$_POST["vzkaz"]."','".$_POST["datum"]."','".$_POST["obsazenost"]."')");


Díky moc všem :)
residentcz
Profil
k té 2 mám tohle ale asik je tam někde chyba :(( a nevím kde

$vysledek=mysql_query("update kniha_hostu set (cas, vzkaz, datum, obsazenost) = ('".$_POST["cas"]."','".$_POST["vzkaz"]."','".$_POST["datum"]."','".$_POST["obsazenost"]."') WHERE id = ". intval($_GET['id'])");
panther
Profil
residentcz:
2) na konci ti zase přebývá uvozovka - ano, počty do deseti jsou náročné, zkus si přesto uvozovky přepočítat. Když nevíš, kde je chyba, zatím tím, že si vypíšeš mysql_error() a povolíš výpis chybových hlášek.

1) musíš si ten vzkaz vytánout selectem, jako jakákoliv jiná data z DB. Ten tam nikde nevidím, začni tedy ním.
Kajman_
Profil *
residentcz:
je tam někde chyba :(( a nevím kde

Tak si ji vypište. Nejspíše bude v tom, že tvoříte vlastní syntaxi příkazu update (klikněte si na to update ve svém příspěvku a nastudujte si správné použití).
residentcz
Profil
Dikec hoši :) jsem úplnej nováček a tohle je můj první projekt :)

jdu se na to mrknout
Patiseq
Profil *
čau lidi mám něco podobného,
<?php
include "../include/config.php";
mysql_connect($mysql_ip,$mysql_user,$mysql_pass);
mysql_select_db($mysql_name);
$pocet_prispevku = 1;
$get = "denicek";
$stranka = $_GET[$get];
if(!$stranka)
{
 $stranka = 1;
 $prvni = 0;
 $druhy = $pocet_prispevku;
}
else
{
$prvni = ($stranka-1) * $pocet_prispevku;
$druhy = $pocet_prispevku;
}

if(!is_numeric($stranka))
{
$stranka = 1;
}
$query_vyber_vse = mysql_query("SELECT * FROM denicky WHERE id ORDER BY `denicky`.`id` DESC LIMIT $prvni, $druhy ;");  //seřezení: ASC od 1, DESC od poslední 
while ($zaznam = mysql_fetch_array($query_vyber_vse))
echo "
             <tr><td colspan='5'><b><font color='RED'><u>".$zaznam['datum']."</u></font></b></td></tr>
             <tr><td colspan='5'><font color='red'>♥</font> <b>".$zaznam['nadpis']."</b> <font color='red'>♥</font></td></tr>
             <tr><td colspan='5'>".$zaznam['clanek']."</td></tr>
             <tr><td colspan='5'><font color='red'>♥</font></td></tr>
             <tr><td colspan='5'>Autor: ".$zaznam['autor']."; Napsáno: ".$zaznam['vlozeno']."</td></tr>
             <tr><td colspan='5'><br><br></td></tr>";
 $query_vyber_id = mysql_query("SELECT COUNT(*) FROM denicky WHERE id");
 $pocet = mysql_result($query_vyber_id, 0);      
 $pocet_stran = $pocet/1;
 $pocet_stran = ceil($pocet_stran);
       if($stranka != 1){                  
         echo "<tr><td><a href='?$get=1' title='Nejnovější'><<</a></td><td><a href='?$get=".($stranka-1)."'>Novější</a></td>";
         }
       for($i = 1; $i <= $pocet_stran; $i++)
       {
       if($stranka == $i){
         $class = "<td class='aktivni'><b>Stránka $i</b></td>";
       }
       else
       {
        $class = "<td class='neaktivni'><a href='?$get=$i' title='Stránka $i'>Stránka $i</a></td>";
       }
         if(($i <=($stranka + 0)) AND ($i >= ($stranka - 0)))
        {
        echo $class;
       }
       }    
       if($stranka != $pocet_stran){  
         echo "<td><a href='?$get=".($stranka+1)."'>Starší</a></td><td><a href='?$get=$pocet_stran' title='Nejstarší'>>></a></td></tr>";
         }   
mysql_close($spojeni);

?>
takto se mi vypisují data z DB a chtěl bych někam přidat odkaz aby se mi to otevíralo jako tady: www.denik.cekuj.net/zkouska.php a v něm formulář na upravení dat z DB

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