Autor Zpráva
veredico
Profil
Dobrý den, mám problém, na který jsem krátký...
snažím se podle x návodů, co jsem nalezl na internetu udělat stránku, ve které budu moct upravovat pijatá data z webového formuláře, který se zapisuje do databaze...
Můj problém je, že tyto data neumím přepsat... Může mi prosím někdo pomoci a to pokud možno přímo kódem který už jen zpracuju tak jak potřebuji?

Jinak, manualy ve kterém jsem se dostal nejdále jsou zde...

http://pawno.cz/topic/29219-phpmysql-zapisupravamazanie-udajov-v-databaze/ tento manuál mi umožnil měnit data tak jak potřebuji, ale mění je ve všech řádcích tabulky...

http://www.phpeasystep.com/mysql/9.html
tento manuál mi říká že data byla přepsána, ale přepsána nebyla...

Ještě jednou díky za pomoc...
jefitto44
Profil
Nerozumiem čo chceš... užívateľ vypíše formulár, tie dáta sa zoberú a uložia do DB a ty to chceš zmeniť... dobre rozumiem?
veredico
Profil
jefitto44:
Mám webovou stránku, ze které si lidé žádají o půjčku... tyto data se mi ukladaji pomoci POST do sql tabulky... ted potrebuji, abych v administraci, kterou tvořím měl možnost ty data, co tam klient zadal, upravit pro další zpracování... Upravit mám na mysli, když se například klient přepíše v ulici, jménu, telefonu,... Potřebuji abych toto dělal ve webové stránce, aby to mohli upravovat i lidé bez jakékoli znalosti kódu... tudíž potřebuji: načtení dat z dbs (není problém) a ta načtená data, abych kliknutím na tlačítko upravit, mohl v třeba novém formuláři změnit.

Díky za radu
¨


Soubor 1
<?php
include("heslo.php");


$sql = mysql_query("SELECT * FROM zadost") or die(mysql_error());

while($vypis = mysql_fetch_array($sql))
{
echo "<h3>".$vypis["jmeno"]." ".$vypis["prijmeni"]."</h3>"; //vypise nadpis
echo "".$vypis["telefon"]."<br>"; // vypise text
echo "".$vypis["emailAddr"]."<br>"; // vypise text
echo "".$vypis["ulice"]."<br>"; // vypise text
echo "".$vypis["cp"]."<br>"; // vypise text
echo "".$vypis["co"]."<br>"; // vypise text
echo "".$vypis["psc"]."<br>"; // vypise text
echo "".$vypis["sleva"]."<br>"; // vypise text
echo "".$vypis["pohlavi"]."<br>"; // vypise text
echo "".$vypis["obec"]."<br>"; // vypise text
echo "".$vypis["datumnarozeni"]."<br>"; // vypise text


//Tu mate odkazy na upravenie alebo zmazanie udajov odkazy si uz mozte upravit podla seba
echo "<a href='uprav.php?udaj=".$vypis["zadost_id"]."'>Zmenit</a>";
}
?>

soubor 2
 <?php
include("heslo.php"); //nemoze vam chybat pripojenie do databazy

if(isset($_POST['vloz'])) //ak bolo stlacene tlacitko Vlozit
{
$jmeno = $_POST["jmeno"];
$prijmeni = $_POST["prijmeni"];
$telefon = $_POST["telefon"];
$emailAddr = $_POST["emailAddr"];
$ulice = $_POST["ulice"];
$cp = $_POST["cp"];
$co = $_POST["co"];
$psc = $_POST["psc"];
$sleva = $_POST["sleva"];
$pohlavi = $_POST["pohlavi"];
$obec = $_POST["obec"];
$datumnarozeni =$_POST["datumnarozeni"]; 
        

$sql = "insert into zadost set jmeno='".$jmeno."', prijmeni='".$prijmeni."', telefon='".$telefon."', emailAddr='".$emailAddr."', ulice='".$ulice."', cp='".$cp."', co='".$co."', psc='".$psc."', sleva='".$sleva."', pohlavi='".$pohlavi."', obec='".$obec."', datumnarozeni='".$datumnarozeni."';"; //prida udaje do db
        $vysledok = mysql_query($sql);  

        if ($vysledok) {
        echo "Udaj uspesne pridany"; //vypise uspesnost
        } else {
        echo "Udaj nemohol byt pridany! Skuste to ešte raz."; //vypise neuspesnost
}}
?

soubor 3
<?php
include("heslo.php");

if(isset($_POST['uprav'])) //ak bolo stlacene tlacitko uprav
{
$zadost_id = $_POST["zadost_id"];
$jmeno = $_POST["jmeno"];
$prijmeni = $_POST["prijmeni"];
$telefon = $_POST["telefon"];
$emailAddr = $_POST["emailAddr"];
$ulice = $_POST["ulice"];
$cp = $_POST["cp"];
$co = $_POST["co"];
$psc = $_POST["psc"];
$sleva = $_POST["sleva"];
$pohlavi = $_POST["pohlavi"];
$obec = $_POST["obec"];
$datumnarozeni =$_POST["datumnarozeni"]; 

        $sql ="UPDATE zadost set jmeno='".$jmeno."', prijmeni='".$prijmeni."', telefon='".$telefon."', emailAddr='".$emailAddr."', ulice='".$ulice."', cp='".$cp."', co='".$co."', psc='".$psc."', sleva='".$sleva."', pohlavi='".$pohlavi."', obec='".$obec."', datumnarozeni='".$datumnarozeni."';"; //upravime udaje v db
        $vysledok=mysql_query($sql);
        if ($vysledok) {
        echo "Udaj uspesne upraveny"; //vypise uspesnost
        } else {
        echo "Udaj nemohol byt upraveny! Skuste to ešte raz."; //vypise neuspesnost
}}

        $sql = mysql_query("SELECT * FROM zadost where zadost_id='".$id."'"); //vytiahneme udaje z db
        $vypis = mysql_fetch_row($sql);

      
        
        
        echo '<form method="post">';
        echo '<span>Pan/Paní:                   
                  </span> <br>                                     
                         <input name="pohlavi" placeholder="'.$vypis[1].'" id="pohlavi" style=" text-align: center;  width:80%" required >                                                            
                  <br>';
        echo '<span>Vaše jméno:                   
                  </span>  <br>                               
                  <input type="text" name="jmeno" placeholder="'.$vypis[2].'" id="jmeno" required value="" style=" text-align: center;  width:80%" >                             
                  <br>';
        echo '<span>Vaše příjmení:                   
                  </span><br>                                 
                  <input type="text" name="prijmeni" placeholder="'.$vypis[3].'" id="prijmeni" required value="" style=" text-align: center;  width:80%" >                             
                  <br> ';
        echo '<span>Vaše mobilní číslo:                   
                  </span> <br>                                      
                  <input type="text" name="telefon" maxlength="9" placeholder="'.$vypis[4].'" id="telefon" required  pattern="^[67]{1}[0-9]{8}$" value="" style=" text-align: center;  width:80%" >      <br>';
        echo '      <span>Datum narození:</span><br>        
          <input type="text" name="datumnarozeni" maxlength="10" placeholder="'.$vypis[5].'" id="datumnarozeni" value="" style=" text-align: center; width:80%" >
                  
                  <br>                             ';
        echo '<span>Email:                   
                  </span> <br>                                
                  <input type="text" name="emailAddr" placeholder="'.$vypis[6].'" id="emailAddr" required value="" style=" text-align: center;  width:80%" ><br>';
        echo ' <span>Obec:</span> <br>  
          <input type="text" name="obec" placeholder="'.$vypis[7].'" id="naseptavac" required  value="" style=" text-align: center;  width:80%">
          <br>             
                  <br>  ';
        echo '<span>Ulice:                   
                  </span><br>                                 
                  <input type="text" name="ulice"  placeholder="'.$vypis[8].'" id="ulice" value=""  required  style=" text-align: center;  width:80%" >                             
                  <br> ';
        echo ' <span>Číslo popisné a číslo orientační:                  
                  </span> <br>                                
                  <input type="text" name="cp" placeholder="'.$vypis[9].'" id="cp" value=""  required style=" text-align: center; ">
                  <input type="text" name="co" placeholder="'.$vypis[10].'" id="co" value="" style=" text-align: center;" >                              
                  <br>  ';
        echo ' <span>Poštovní směrovací číslo:                   
                  </span><br>                                 
                  <input type="text" name="psc" placeholder="'.$vypis[11].'" id="psc" value=""  required  style=" text-align: center; width:80%">                             
                  
<br>';
        echo '<span>Mám zájem o:                   
                  </span><br>                                   
                  <input name="sleva" class="button" placeholder="'.$vypis[12].'" id="sleva" style=" width:80%" required >                                                                                
                                                                                              
                   
                                                                                            
                  </select>                                  
                  <br>  ';
        echo '<span>Slevový kupón:                   
                  </span><br>                                 
                  <input type="text" name="kupon" placeholder="'.$vypis[13].'" id="kupon" value=""  style=" text-align: center; width:80%">                             
                  <br>   ';
        echo '<input type="submit" value="Upravit" name="uprav">';
        
         $sql = mysql_query("SELECT * FROM zadost where zadost_id= '".$id."'"); //vytiahneme udaje z db
         


    
?> 


soubor 4
<?php
include("heslo.php");

if($zmazat == "ok")
{
$sql = "delete from tabulka where id=".$id.""; //zmaze udaj podla id
$vysledok = mysql_query($sql);
if ($vysledok) {
echo "Udaj úspešne zmazany"; //vypise uspesnost
} else {
echo "Udaj nemohol byt zmazany! Skuste to ešte raz."; //vypise neuspesnost
}}
?>
juriad
Profil
Nemám čas to číst. Pokud ti funguje změna všech řádků v databázi na místo jen jediného, stačí spravit podmínku v UPDATE dotazu - přidat klauzuli WHERE, která identifikuje ten záznam, který chceš upravovat. Něco jako:
WHERE zadost_id = $zadost_id
veredico
Profil
juriad:
Promiňte, ale asi jsem naprosto slepý a tupý... Koukám se na ten kód, všelijak to upravuji, ale stejně mi to nejede...

Nebyla by možnost, třeba nějak vysvětlit proč mi to nejede ani s kódem z této stránky?
http://www.phpeasystep.com/mysql/9.html
dělal jsem to naprosto přesně, jak tam popisují, dokonce i stejné názvy jsem nechal, a vytvořil si tabulku do které to má zapisovat a měnit...

Děkuji za pomoc...

Jinak WHERE zadost_id = $zadost_id jsem zkoušel... (aspoň jsem přesvědčen o tom, že jsem to psal správně...)
Jan Kozák
Profil
V souboru 3 na 20. řádku doplň SQL dotaz takto:
...datumnarozeni='".$datumnarozeni."' WHERE id=$zadost_id";
- Vyhledej si, co je to escapování v MySQL dotazech, jinak nejen že ti bude někdo moci rozbít databázi, ale budeš si ji moci rozhodit sám a nebo, na což určitě narazíš, ti některé hodnoty vůbec nepůjdou uložit.
- Opravdu potřebuješ mít u každého echo poznámku, že tento příkaz vypíše text?
- Prázdné řetězce ze souboru 1 vyházej, akorát ti znepřehledňují skript.
- V souboru 4 zřejmě spoléháš na zapnutí direktivy register_globals.
- Na popisky formulářových polí nepoužívej <span>, ale <label>. Když totiž člověk klikne na <label>, skočí mu kurzor do příslušného políčka.

Adresu toho tutoriálu, ze kterého jsi čerpal, si nějakým způsobem zablokuj a už tam nechoď. Je to špatný návod. Dobrou učebnici najdeš na pehapko.cz.
veredico
Profil
Jan Kozák:
Děkuji za vysvětlení <span> a <label>, to jsem neveděl... každopádně, doplňil jsem ten řádek, a pořád to nefunguje jak má... :(
Soubor 4 spoléháš na zapnutí direktivy register_globals. to ani nevím co je, díky za další podmět si něco vyhledat...

Existuje někde funkční kód, který bych si zkopíroval a upravil k obrazu svému?
Děkuji za radu
jefitto44
Profil
Pozri sa, ty potrebuješ toto....

Načítať formulár a vytihanuť do neho údaje. Tie sa tam dávajú pomocou atributu value... napr <input type="text" name="meno" value="<?=$menoZDatabazy?>">
Čiže používaš select

A potom po kliknutí na tlačidlo formulára robíš update existujúcej tabuľky. Ak zabudneš v update na podmienku WHERE, tak ti to bude prepísovať všetky riadky v databáze. Použi teda primárny, alebo unikátny kľúč na prepisovanie


Napr.
UPDATE user SET (meno=$_POST["meno"]) WHERE user_id=1 napr.
veredico
Profil
jefitto44:
Promiň, naprosto nechápu jak to mám udělat... :(
veredico
Profil
Pánové, už vím kde mám chybu, ale nevím jak to napravit... můžete poradit?

Na prvním souboru se mi zadost_id zobrazí, když kliknu na zmenit, tak se mi ID zobrazi i v adresni liste, ale neprenese se mi do stranky druhe, vydite tam prosím někdo tu chybu???

První stránka
<?php
include("heslo.php");


$sql = mysql_query("SELECT * FROM zadost") or die(mysql_error());

while($vypis = mysql_fetch_array($sql))
{
echo "<h3>".$vypis["jmeno"]." ".$vypis["prijmeni"]."</h3>"; //vypise nadpis
echo "ID ".$vypis["zadost_id"]."<br>"; // vypise text
echo "Telefon ".$vypis["telefon"]."<br>"; // vypise text
echo "Email ".$vypis["emailAddr"]."<br>"; // vypise text
echo "Ulice ".$vypis["ulice"]."<br>"; // vypise text
echo "CP ".$vypis["cp"]."<br>"; // vypise text
echo "CO ".$vypis["co"]."<br>"; // vypise text
echo "PSC ".$vypis["psc"]."<br>"; // vypise text
echo "Sleva ".$vypis["sleva"]."<br>"; // vypise text
echo "Pohlavi ".$vypis["pohlavi"]."<br>"; // vypise text
echo "Obec ".$vypis["obec"]."<br>"; // vypise text
echo "Datum Narozeni ".$vypis["datumnarozeni"]."<br>"; // vypise text



echo $idecko;


//Tu mate odkazy na upravenie alebo zmazanie udajov odkazy si uz mozte upravit podla seba
echo "<a href='uprav.php?udaj=".$vypis["zadost_id"]."'>Zmenit</a>";
}
?>   


Druhá stránka
  <?php
include("heslo.php");


$sql = mysql_query("SELECT * FROM zadost where zadost_id= '$zadost_id'") or die(mysql_error());

while($vypis = mysql_fetch_array($sql))
{
echo "<h3>".$vypis["jmeno"]." ".$vypis["prijmeni"]."</h3>"; //vypise nadpis
echo "".$vypis["telefon"]."<br>"; // vypise text
echo "".$vypis["emailAddr"]."<br>"; // vypise text
echo "".$vypis["ulice"]."<br>"; // vypise text
echo "".$vypis["cp"]."<br>"; // vypise text
echo "".$vypis["co"]."<br>"; // vypise text
echo "".$vypis["psc"]."<br>"; // vypise text
echo "".$vypis["sleva"]."<br>"; // vypise text
echo "".$vypis["pohlavi"]."<br>"; // vypise text
echo "".$vypis["obec"]."<br>"; // vypise text
echo "".$vypis["datumnarozeni"]."<br>"; // vypise text


//Tu mate odkazy na upravenie alebo zmazanie udajov odkazy si uz mozte upravit podla seba
echo "<a href='uprav.php?udaj=".$vypis["zadost_id"]."'>Zmenit</a> | <a href='smaz.php?zmazat=ok&id=".$vypis["id"]."'>Zmazat</a>";
}
echo $jmeno;
echo $zadost_id;
?>    
Michales
Profil
$zadost_id = $_GET['udaj'];
Dej za include("heslo.php");
veredico
Profil
Michales:
Díky, ale stále mi to nejede... :( Už jsem z toho na játra...
Michales
Profil
veredico:
Nejak se nemohu vyznat v tom tvem prvni stranka a druha stranka.
Doufám ze to bylo vlozeno do druha stranka
veredico
Profil
Při zpracování BB značek došlo k samovolnému sežrání celého příspěvku. Pardon.
Michales:
Dulezity je tento soubor... na ten se totiz jde z index.php... nahore v adresním řádku mám ...uprav.php?udaj=11, ale nenacte mi to ty hodnoty co potřebuji...

  <?php
include("heslo.php");
 
if(isset($_POST['uprav'])) //ak bolo stlacene tlacitko uprav
{
$zadost_id = $_GET['udaj']; 
$jmeno = $_POST["jmeno"];
$prijmeni = $_POST["prijmeni"];
$telefon = $_POST["telefon"];
$emailAddr = $_POST["emailAddr"];
$ulice = $_POST["ulice"];
$cp = $_POST["cp"];
$co = $_POST["co"];
$psc = $_POST["psc"];
$sleva = $_POST["sleva"];
$pohlavi = $_POST["pohlavi"];
$obec = $_POST["obec"];
$datumnarozeni =$_POST["datumnarozeni"]; 
 
      //  $sql ="UPDATE zadost set jmeno='".$jmeno."', prijmeni='".$prijmeni."', telefon='".$telefon."', emailAddr='".$emailAddr."', ulice='".$ulice."', cp='".$cp."', co='".$co."', psc='".$psc."', sleva='".$sleva."', pohlavi='".$pohlavi."', obec='".$obec."', datumnarozeni='".$datumnarozeni."'WHERE id=$zadost_id;"; //upravime udaje v db
      
      
      
      $sql ="UPDATE zadost set jmeno='$jmeno', prijmeni='$prijmeni', telefon='$telefon', emailAddr='$emailAddr', ulice='$ulice', cp='$cp', co='$co', psc='$psc', sleva='$sleva', pohlavi='$pohlavi', obec='$obec', datumnarozeni='$datumnarozeni' WHERE zadost_id;";
        $vysledok=mysql_query($sql);
        if ($vysledok) {
        echo "Udaj uspesne upraveny"; //vypise uspesnost
        } else {
        echo "Udaj nemohol byt upraveny! Skuste to ešte raz."; //vypise neuspesnost
}}
 
        $sql = mysql_query("SELECT * FROM zadost where zadost_id='".$zadost_id."'"); //vytiahneme udaje z db
        $vypis = mysql_fetch_row($sql);
       
        
        
        echo '<form method="post">';
        echo '<span>Pan/Paní:                   
                  </span> <br>                                     
                         <input name="pohlavi" placeholder="'.$vypis[1].'" id="pohlavi" style=" text-align: center;  width:80%" required >                                                            
                  <br>';
        echo '<span>Vaše jméno:                   
                  </span>  <br>                               
                  <input type="text" name="jmeno" placeholder="'.$vypis[2].'" id="jmeno" required value="" style=" text-align: center;  width:80%" >                             
                  <br>';
        echo '<span>Vaše příjmení:                   
                  </span><br>                                 
                  <input type="text" name="prijmeni" placeholder="'.$vypis[3].'" id="prijmeni" required value="" style=" text-align: center;  width:80%" >                             
                  <br> ';
        echo '<span>Vaše mobilní číslo:                   
                  </span> <br>                                      
                  <input type="text" name="telefon" maxlength="9" placeholder="'.$vypis[4].'" id="telefon" required  pattern="^[67]{1}[0-9]{8}$" value="" style=" text-align: center;  width:80%" >      <br>';
        echo '      <span>Datum narození:</span><br>        
          <input type="text" name="datumnarozeni" maxlength="10" placeholder="'.$vypis[5].'" id="datumnarozeni" value="" style=" text-align: center; width:80%" >
                  
                  <br>                             ';
        echo '<span>Email:                   
                  </span> <br>                                
                  <input type="text" name="emailAddr" placeholder="'.$vypis[6].'" id="emailAddr" required value="" style=" text-align: center;  width:80%" ><br>';
        echo ' <span>Obec:</span> <br>  
          <input type="text" name="obec" placeholder="'.$vypis[7].'" id="naseptavac" required  value="" style=" text-align: center;  width:80%">
          <br>             
                  <br>  ';
        echo '<span>Ulice:                   
                  </span><br>                                 
                  <input type="text" name="ulice"  placeholder="'.$vypis[8].'" id="ulice" value=""  required  style=" text-align: center;  width:80%" >                             
                  <br> ';
        echo ' <span>Číslo popisné a číslo orientační:                  
                  </span> <br>                                
                  <input type="text" name="cp" placeholder="'.$vypis[9].'" id="cp" value=""  required style=" text-align: center; ">
                  <input type="text" name="co" placeholder="'.$vypis[10].'" id="co" value="" style=" text-align: center;" >                              
                  <br>  ';
        echo ' <span>Poštovní směrovací číslo:                   
                  </span><br>                                 
                  <input type="text" name="psc" placeholder="'.$vypis[11].'" id="psc" value=""  required  style=" text-align: center; width:80%">                             
                  
<br>';
        echo '<span>Mám zájem o:                   
                  </span><br>                                   
                  <input name="sleva" class="button" placeholder="'.$vypis[12].'" id="sleva" style=" width:80%" required >                                                                                
                                                                                              
                   
                                                                                            
                  </select>                                  
                  <br>  ';
        echo '<span>Slevový kupón:                   
                  </span><br>                                 
                  <input type="text" name="kupon" placeholder="'.$vypis[13].'" id="kupon" value=""  style=" text-align: center; width:80%">                             
                  <br>   ';
        echo '<input type="submit" value="Upravit" name="uprav">';
        
         $sql = mysql_query("SELECT * FROM zadost where zadost_id= '".$zadost_id."'"); //vytiahneme udaje z db
         
 
 
   echo $zados_id; 
?>



Mohu někoho požádat, aby mi upravil tenhle kód tak, aby fungoval když dám manuálně ID do adresního řádku?
Moc Prosím, potom to už zvládnu.

 <?php
include("heslo.php");
  $zadost_id = $_GET['udaj']; 
  $sql = mysql_query("SELECT * FROM zadost where zadost_id='udaj'") or die(mysql_error());
while($vypis = mysql_fetch_array($sql))
{
echo "<h3>".$vypis["jmeno"]." ".$vypis["prijmeni"]."</h3>"; //vypise nadpis
echo "".$vypis["telefon"]."<br>"; // vypise text
echo "".$vypis["emailAddr"]."<br>"; // vypise text
echo "".$vypis["ulice"]."<br>"; // vypise text
echo "".$vypis["cp"]."<br>"; // vypise text
echo "".$vypis["co"]."<br>"; // vypise text
echo "".$vypis["psc"]."<br>"; // vypise text
echo "".$vypis["sleva"]."<br>"; // vypise text
echo "".$vypis["pohlavi"]."<br>"; // vypise text
echo "".$vypis["obec"]."<br>"; // vypise text
echo "".$vypis["datumnarozeni"]."<br>"; // vypise text


//Tu mate odkazy na upravenie alebo zmazanie udajov odkazy si uz mozte upravit podla seba
echo "<a href='uprav.php?udaj=".$vypis["zadost_id"]."'>Zmenit</a> | <a href='smaz.php?zmazat=ok&id=".$vypis["zadost_id"]."'>Zmazat</a>";
}
?>
smiesek
Profil
nevím na kolik to pomůže, ale 4. řádek bych asi přepsala jako
  $sql = mysql_query("SELECT * FROM zadost where zadost_id='$zadost_id'") or die(mysql_error());

používáte tam udaj ale tato proměnná se nepředává z GET ...
Cipísek
Profil *
veredico:
include("heslo.php");
  $zadost_id = $_GET['udaj']; 
  $sql = mysql_query("SELECT * FROM zadost where zadost_id='.$zadost_id.'") or die(mysql_error());
while($vypis = mysql_fetch_array($sql))
{
echo "<h3>".$vypis["jmeno"]." ".$vypis["prijmeni"]."</h3>"; //vypise nadpis
echo "".$vypis["telefon"]."<br>"; // vypise text
echo "".$vypis["emailAddr"]."<br>"; // vypise text
echo "".$vypis["ulice"]."<br>"; // vypise text
echo "".$vypis["cp"]."<br>"; // vypise text
echo "".$vypis["co"]."<br>"; // vypise text
echo "".$vypis["psc"]."<br>"; // vypise text
echo "".$vypis["sleva"]."<br>"; // vypise text
echo "".$vypis["pohlavi"]."<br>"; // vypise text
echo "".$vypis["obec"]."<br>"; // vypise text
echo "".$vypis["datumnarozeni"]."<br>"; // vypise text
 
 
//Tu mate odkazy na upravenie alebo zmazanie udajov odkazy si uz mozte upravit podla seba
echo "<a href='uprav.php?udaj=".$vypis["zadost_id"]."'>Zmenit</a> | <a href='smaz.php?zmazat=ok&id=".$vypis["zadost_id"]."'>Zmazat</a>";
}



Pardon bez těch teček
$sql = mysql_query("SELECT * FROM zadost where zadost_id='$zadost_id'") or die(mysql_error());

Jak je uvedeno výše od smiesek
veredico
Profil
Všem moc díky, kód dávám sem... pro někoho dalšího... Můj celý problém byl, že jsem nedokázal přenést hodnotu.

<?php
include("heslo.php");
  $zadost_id = $_GET['udaj']; 
  $sql = mysql_query("SELECT * FROM zadost where zadost_id='$zadost_id'") or die(mysql_error());
while($vypis = mysql_fetch_row($sql))
{
echo "<h3>".$vypis[1]." ".$vypis[2]."</h3>"; //vypise nadpis
echo "".$vypis[3]."<br>"; // vypise text
echo "".$vypis[4]."<br>"; // vypise text
echo "".$vypis[5]."<br>"; // vypise text
echo "".$vypis[6]."<br>"; // vypise text
echo "".$vypis[7]."<br>"; // vypise text
echo "".$vypis[8]."<br>"; // vypise text
echo "".$vypis[9]."<br>"; // vypise text
echo "".$vypis[10]."<br>"; // vypise text
echo "".$vypis[11]."<br>"; // vypise text
echo "".$vypis[12]."<br>"; // vypise text
//Tu mate odkazy na upravenie alebo zmazanie udajov odkazy si uz mozte upravit podla seba
echo "<a href='uprav.php?udaj=".$vypis[0]."'>Zmenit</a> | <a href='smaz.php?zmazat=ok&id=".$vypis[0]."'>Zmazat</a>";
}
?>
Jan Kozák
Profil
Je dobře, že to funguje. Ještě by to ale chtělo trochu upravit, aby to neselhalo při vyplnění daty a aby se s tím skriptem dalo dále pracovat: (Poznámky jsem seřadil podle důležitosti, nahoře jsou uvedeny závažné problémy.)
1) Už jsem zmiňoval escapování u dotazů do databáze. V tomto případě musíš zajistit, že data z $_GET["udaj"] nebudou obsahovat znaky, které by mohly narušit dotaz a v extrémním případě poškodit data uložená v databázi. V tomto případě je nutné zajistit, aby se do dotazu dostala pouze čísla.

2) Je nutné escapovat i všechna data, která se vypisují do HTML struktury (tedy do webové stránky, ale i třeba do formátovaného e-mailu). Když někdo do zapsaných dat uloží menšítko < nebo většítko >, rozhodí ti strukturu stránky. Vůbec se nemusí jednat o žádný cílený útok.

3) Je chyba, že v SQL dotazu nevyjmenováváš požadované sloupečky a zároveň jednotlivé prvky pole $vypis značíš indexem.
- Při vývoji skriptu musíš stále nahlížet do struktury databáze a jak blbý stále počítat: nula - jedna - dva - tři… Co je třeba $vypis[11]? To nikdo netuší. U položky $zadost["rodne_cislo"] je obsah jasný.
- Až někdy smažeš nebo přidáš sloupeček do tabulky nebo změníš jejich pořadí, stránka se ti rozpadne a ty nezjistíš proč, protože ten SQL dotaz nevyhodí žádnou chybu.
- Když si řekneš, že nějaký sloupeček v databázi už nepotřebuješ, nebudeš ho moci jen tak vyhodit. Těžko zjistíš, ve kterých souborech je použit. Ctrl + F pro hledání v konkrétním souboru i funkce pro hledání ve více souborech ti najdou pouze části, kde se pracuje s konkrétní tabulkou. Ten sloupeček samotný ale ne, protože ho ve skriptech nemáš uvedený.
- Pokud budeš s databází manipulovat, budeš muset ve všech skriptech změnit index nejen konkrétního sloupečku, ale i všech následujících, což je šílené.

4) Rozšíření, které obsahuje funkce začínající na mysql_ (tedy například mysql_query, mysql_fetch_row), je v současných verzích PHP označeno jako zastaralé a v některé z dalších verzí PHP bude odstraněno. Není správné ho používat u nových projektů, protože je pak nebude možné přestěhovat na nové servery, které budou obsahovat budoucí verze PHP (ty budou opět bezpečnější, výkonnější, obsahovat nové funkce atd).
Viz povídání o deprecated funkcích.

5) Již jsem tě upozorňoval na to, že ty prázdné řetězce pouze skript znepřehledňují. Když se ti tak líbí, proč jich nedáš víc na jeden řádek? Například: echo ""."".""."".""."".""."".""."".""; Je to známka toho, že ty i autor toho rádoby tutoriálu nerozumíte základům PHP. Proto jsem tě odkázal na učebnici, která začátky popisuje snadno pochopitelnou formou.

6) Příkaz echo vždycky vypisuje svůj obsah. Nic jiného neumí. Vůbec nedává smysl si za takový příkaz dát komentář, že „vypise text“. Podobné zbytečnosti akorát způsobují, že se skript pořádně nedá číst.

7) Část or die(mysql_error()); by se vůbec neměla do tutoriálů dávat, protože:
- málokterý začátečník ví, proč funguje tak, jak funguje. Dávat si do zdrojáku prvky, které nechápu, tím se moc nenaučím.
- výpis mysql_error() nepatří do ostré verze webu. Takováto chybová hláška akorát zmate uživatele a je bezpečnostní dírou, protože prozrazuje část struktury databáze. Útočníkovi se může hodit, že třeba zjistí, jakým jazykem a kterým způsobem jsou tvořeny názvy sloupců v databázi.
- chyby na uživatele budou těžko působit pozitivně. Těžko ale bude rád za chybovou hlášku, která se načte bez kaskádových stylů a zbytku webu.
- málokdy je nutné v případě chybného připojení k databázi sestřelit skript. Uživateli se i v takovém případě mohou zobrazit třeba obrázky a prvky, které třeba součástí databáze nejsou. A nebo které jsou vygenerovány jiným než právě selhaným dotazem na DB.

8) Předpokládá se, že v $zadost_id bude číselná hodnota. Ta do apostrofů nepatří.

9) Příkaz include stejně jako echo není klasickou funkcí. Závorky tam jsou nadbytečné. Bohatě stačí include "heslo.php"; Příkaz echo může vypsat data zapsaná na více řádků přijde mi to přehlednější než stonásobně opakovaný tentýž příkaz.

10) Když píšeš komentáře do skriptu česky nebo slovensky, piš je opravdu česky nebo slovensky, tedy včetně diakritiky a interpunkce a velkých/malých znaků. Málokomu se bude chtít dumat, co znamená „zmazanie udajov odkazy“.

Mám pro tebe program na prodloužený víkend. Přečti si učebnici pehapko.cz. Věřím, že tě to „programování“ bude mnohem víc bavit, až budeš chápat, proč to dělá, co to dělá.
veredico
Profil
Jan Kozák:
Děkuji za tvůj komentář.
1, teď hned jdu řešit to escapování, to je bod, který mě dost zaujal... :)
2, dokud mám v bedně ty kódy, kam jsem co dal, tak jdu přejmenovat ty sloupce... $vypis['1'] prepisu na nazev sloupce, máš naprostou pravdu, že bych se z toho po čase zbláznil, nehledě na to, kdyby to potom upravoval někdo jiný...
3, (tedy například mysql_query, mysql_fetch_row)... kolega používá nějaký cakephp, je to východisko pro to, abych nemusel řešit tyhle věci?
4, prázdné řetězce jsem odstranil, stejně tak jako slovenské poznámky + poznámky za echem...

Děkuji moc, určitě se na to vrhnu poddrobněji...

Jinak mám prosbu...
Mám databázy, do kterré každý POST dával pod vlastní ID, ale aby řětězec dával smysl, tak se musí app_id nějak spojit...

tušíš prosím tebe, jak tenhle zápis zobrazit v jednom řádku, abych to potom mohl upravovat? Měl bych představu o kódu, který jsem řešil včera, jenže tohle asi tak jednoduché nebude... Když si místo zadost_id budu volat app_id, tak se mi zobrazí tolik řádků, kolik jich je v té DBS... Naprosto netuším co s tímhle provedu... Je to stará DBS webu, a ani ji potřebují mít stále při ruce.

Každopádně, děkuji za výtah informací, rozhodně si je zapamatuji, a vypíšu na nástěnku. :)

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:

0