Autor Zpráva
tealke
Profil *
Dobrý den
Mám problém s vkládáním dat do mysql, který běží na cloud serveru s operačním systémem linux. používám pro vkládání tyto scripty:

formulář pro vkládání:
<tbody>
    <tr>
      <td style="height: 150px; width: 400px; text-align: center;"
 colspan="1" rowspan="1" nowrap="nowrap">
      <table
 style="height: 32px; text-align: left; margin-left: auto; margin-right: auto; width: 735px;"
 border="1" cellpadding="2" cellspacing="2">
        <tbody>
        <form method="post" action="pridatwar.php" >
          <tr>
            <td style="text-align: center;">N&aacute;&scaron;
klan</td>
            <td style="text-align: center; width: 173px;">Hostujc&iacute;
klan</td>
            <td style="text-align: center; width: 173px;">mapa</td>
            <td style="text-align: center; width: 174px;">skore</td>
          </tr>
          <tr>
            <td style="text-align: center;"><input type="text" name="nas_klan" /><br /></td>
            <td style="text-align: center; width: 173px;"><input type="text" name="hostujci_klan" /><br /></td>
            <td style="text-align: center; width: 173px;"><input type="text" name="map" /><br /></td>
            <td style="text-align: center; width: 174px;"><input type="text" name="score" /><br /></td>
       <td> <input type="hidden" name="odeslano" value="true">
    <input type="submit" name="odeslat" value="Odeslat">
</form></td>
          </tr>
        </tbody>
      </table>
      <br>
      </td>
    </tr>

script na zpracování:
<?php
 
require_once('pridatwar.php');
 
if(isset($_POST['submit']) && $_POST['submit'] == 'odeslat') 
{
   //prijmuti promnenych
 
       $nas_klan = $_POST['nas_klan'];
            $hostujci_klan = $_POST['hostujci_klan'];                   
             $map = $_POST['map'];
              $score = $_POST['score'];  
      
 
   //ukladani dat do DB
   
   $connection=mysql_Connect("localhost", "root", "");
   $database_connection=Mysql_Select_DB("ssgcl_mysql");
 
   mysql_select_db($database_connection, $connection);
 
   $insert_query = "INSERT INTO clanwar(nas_klan, hostujci_klan, map, score) VALUES ('$nas_klan', '$hostujci_klan', '$map', '$score')";
                                                       
                                                
 
   $result = mysql_query($insert_query, $connection) or die(mysql_error());
  
 
                 if(!$result){
echo("Mas to rozbity");
} else{
echo("blablabla ulozeno");
}
}
?>

Boužel nevím čím to je když pomocí těchto formulářů vložím data do db tak mi v tabulce nskočí nový řádek a ID ale texty s formuláře tam nejsou jen prázdný řádek s ID.
Nevím čím to je zkoušel jsem už všechno. Děkuji za odpovědi
Taps
Profil
zkus upravit podmínku
<?
if(isset($_POST['odeslat']) && $_POST['odeslat'] == 'Odeslat') 
?>
tealke
Profil *
díky, už mi to jde to mě nenapadlo že to může být jen v takové kravině...si s tím hraju už 2 hodiny
tealke
Profil *
mohl bych se ještě zeptat mám tento kod pro výpis všech řádků z db a potřeboval bych kněmu přidat tlačítko pro mazaní záznamů akort když k němu jakýmkoliv způsobem něco připíšu tak se mi zobrazuje jen prázdná stránka bez chyb...nevím jak na to

kod
<table style="width: 700px; height: 100px;">
  <tbody>
    <tr>
      <td colspan="2" rowspan="1"
 style="text-align: center;"></td>
    </tr>
    <tr>
<?php mysql_connect('localhost','root','')
or die('chyba:'.mysql_error() );
mysql_select_db('ssgcl_mysql');
// čitelný a dostatečně efektivní způsob
$result = mysql_query("SELECT * FROM tab");
if (!mysql_num_rows($result)) {
echo" <table>";
echo "<h1><b><big><font color='#ff0000'>Zatím jsm neměli žádné Clan war!</b></big></color></font></h1>\n";
} else {
$result=mysql_query('select * from clanwar order by poradi;');
if ($row=mysql_fetch_assoc($result)) {
echo" <table style=\"width: 450px; height: 80px; text-align: left; margin-left: auto; margin-right: auto;\"
border=\"2\" cellpadding=\"5\" cellspacing=\"4\"> <tbody align=\"center\" bgcolor=\"DarkSlateGray\">
<tr>
<td style=\"width: 74px;\">Pořad&iacute; war</td>
<td style=\"width: 73px;\">N&aacute;&scaron;
klan</td>
<td style=\"width: 88px;\">Hostujc&iacute;
klan</td>
<td style=\"width: 88px;\">Mapa</td>
<td style=\"width: 76px;\">Skore</td>
</tr>
</tbody>
<col style=\"background-color: rgb(47, 79, 79);\">";
echo "<tr>";
foreach($row as $key => $value) {echo "<td>".$value;  };
}
while ($row=mysql_fetch_assoc($result)) {
echo "<tr>";
foreach($row as $key => $value) {echo "<td>".$value;  };
}
mysql_close();
echo"<tr>
</tr>
</tbody>"; }
?>
    </tr>
  </tbody>
</table>
</html>

dále bych se rád zeptal jak udělat třeba to že mi to nebude vypisovat id záznamu jestli je to možné
děkuji za odpověď
tealke
Profil *
tak děkuji za neodpověď...již sem to vyřešil ale mám další problém tak snad mi už někdo pomůže....s mazáním z db

na mazání používám odkaz
echo "<td> <a href=\"smazani.php?poradi='.$poradi.'\">Smazat</a>";

a ve smazat mám
$smazat = $_POST['smazat'];
$query = "DELETE * FROM clanwar WHERE pordi = '$smazat'";
$result = mysql_query ($query);
if ($result){
echo "Údaj byl úspěšně smazán!";
}  else {
echo "Bohužel se nepodařilo údaje smazat.";
  mysql_close(); 
}

ale ten odkaz na soubor smazat mi vypisuje nesmyslné id" smazani.php?poradi=%27..%27" u všech záznamů stejné...a script když se mi spustí tak logicky napíše že se záznam nepovedl smazat ale nevím jak to opravit nikde sem nic nenašel
Taps
Profil
zkus
<?
$smazat = $_GET['poradi'];
?>
juriad
Profil
Tam je chyb:
1) to echo je celé špatně
a) tečky neslouží ke spojení uvnitř řetězce
b) proměnná $poradi neexistuje
c) aby ses vyhnul tomu GETu (viz 2a), musíš nahradit odkaz formulářem s method="post"

2) vstupní proměnná
a) proměnná se odesílá GETem, což je špatně z důvodu, že to umožňuje komukoli smazat záznam v databázi; pokud máš v tom skriptu kontrolu na přihlášení uživatele, stačí aby administrátora uživatel přiměl přijít na „správnou adresu“. Na skripty, které provádí akce, nesmí být možné odkázat.
b) jmenuje se $_GET['poradi'] jak už řekl Taps.

3) Dotaz do databáze je chybně
a) v DELETE se nevyjmenovávají sloupce ani neuvádí hvězdička
b) máš tam překlep pordi
c) nikterak neošetřuješ, že $smazat nebude něco vadného
d) používáš apostrofy kolem (hádám) číselné hodnoty

4) mysql_query je už tři roky zavražená funkce a nové verzi PHP už byla odstraněná, použij modernější API pro komunikaci s databází.

5) Po smazání musíš přesměrovat pomocí header namísto výpisu hlášky. (To je důsledek toho POSTu.)


On i ten kód v [#5] stojí za houby a rozhodně není pravda, že je to „čitelný a dostatečně efektivní způsob“.
tealke
Profil *
boužel t nepomohlo...podle mě je nějak špatně ten odkaz protože on neposílá id co vidím


dobrá když mám tedy všechno špatně mohl by mi někdo napsat ten script jak má být správně boužel toto dělám poprvé a nevím jak na to
tealke
Profil
no když sem opravil pár chyb třeba ten překlik ve slově tak mi to sice napíše že byl záznam smazán ale nic to nesmaže tak já nevím kde dělám chybu,...byl bych asi vážně vděčnej kdyby mi někdo ten script napsal tak aby to fungovalo....podle mího je to v tom odkazu na tu funci mazání že nepředává ID
tealke
Profil
Moderátor Chamurappi: Vyhozeno … a zase vráceno kvůli reakci.

no tak mazat mi to už jde v pohodě akorát teda používám zastaralou verzi..akorát sem nepřišel na to jak mám vracet ten výsledek...to mi zaboha nejde..ale než se tady dočkám nějaké rady tak na to zase přijdu sám asi
Moderátor Chamurappi: S tímhle otráveným přístupem nemá cenu sem psát. Klidně si na to přijď sám, tady to nikomu vadit nebude :-)
pcmanik
Profil
tealke:
Namiesto blábolenia ukáž aktuálnu verziu kódu a normálne popíš čo nefunguje tak ako má.
tealke
Profil
pcmanik:
kody jsou vesměs pořád stejné

$smazat = $_GET['smazat'];
$query = "DELETE * FROM clanwar WHERE poradi = '$id'";
$result = mysql_query ($query);
if ($result){
echo "Údaj byl úspěšně smazán!";
}  else {
echo "Bohužel se nepodařilo údaje smazat.";
  mysql_close(); 
}

nic sem na tom neměnil jen pořebuju aby se mi tady s toho zobrazovala na jinou stránku to jestli byl údaj smazán nebo nebyl toď vše na to nemohu přijít


Chamurappi:

a ano mám takovou reakci protože tady odpovídá jen jeden člověk..a navíc sem nenapsal nic špatného jen sem konstatoval že vždy když sem něco napíšu tak než se tady někdo ozve tak na to přijdu
Taps
Profil
Uprav si promennou...misto $id napis $smazat
tealke
Profil
na co mě to maže a funguje...vím proč to mám tak jen potřebuju na jinou stránku dostat výsledek
echo "Údaj byl úspěšně smazán!";
}  else {
echo "Bohužel se nepodařilo údaje smazat.";
  mysql_close(); 
}

to nevím jak to udělat
Hando
Profil
Na jinou stránku? Nejspíše redirectem přes header. :) Ostatně po provedení nějaké akce je vhodné přesměrovávat, aby při znovunačtení stránky nedocházelo ke znovuvykonání akce.
Např. logika Post/Redirect/Get...
tealke
Profil
ano jenže mám linux cloud server jak sem psal v prvním příspěvku a když použiju header a něco jak sem našel tady v diskuzích a zkusím to tak mi to po smazání napíše že stránka neexistuje nebo že je nedosupná a nic to nesmaže..proto se ptám tady

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: