Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno banalitka v php a mysql - insert a select do DB

Na php a mysql jsem prostě levej, dělám s nimi už dlouho a stejně nedokážu takovou banalitu jako vložit jmeno a 5 cisel do DB a všechny i je pak zobrazit. Zde je co jsem vyplodil za 12 hodin:

tabulka kody v DB ma: name, code, date.

vloz.html:

<html>
<body>
<form action="vloz.php" method="post">
Zadej jmeno:
<input type="text" name="name" />
<br/>
Zadej cisla:
<input type="text" name="num[]" />
<input type="text" name="num[]" />
<input type="text" name="num[]" />
<input type="text" name="num[]" />
<input type="text" name="num[]" />
<input type="submit" name="odeslat" value="odeslat"/>
</form>
</body>
</html>

tady je vse ok.

------------------------
pridavani je vloz.php:

<?php
//ini_set('display_errors',true);
//error_reporting(E_ALL);
$jmeno=$_POST["name"];
$kod = array();
$kod=$_POST["num"];

$kodu_vlozeno = 0;
foreach($kod as $a)
  if($a != '')
    $kodu_vlozeno++;


if(empty($jmeno)) 
  die("zadej jmeno!");
if(empty($kod[0]))
  die("zadej kod 1!");

$link = mysql_connect('localhost', '-', '-');
if (!$link)
  die('nemohu se spojit s: ' . mysql_error());
mysql_select_db("----") 
  or die(mysql_error());

$today = date("Y-m-d");

$query = "SELECT  *, COUNT(*)
          FROM kody 
          WHERE UNIX_TIMESTAMP(date)=UNIX_TIMESTAMP('$today') 
          AND name='$jmeno' 
          HAVING COUNT(*)<6
	  LIMIT 1";

$dotaz = mysql_query($query);

while($row = mysql_fetch_array($dotaz)) {
  $kodu_dnes = $row['COUNT(*)'];
}
if(!isset($kodu_dnes))
  $kodu_dnes = 0;
if($kodu_dnes == 5)
   die ("tento uzivatel jiz dosahl 5 kodu pridanych DNES, zkus to prosim zitra"); 


$kodu = 5-$kodu_dnes;
if($kodu_vlozeno > $kodu)
  echo "Dnes můžete zadat už jen " . $kodu . " kody. Poslední" . ($kodu_vlozeno-$kodu) . " kody nebudou vloženy";

$a = 0;
for($i=$kodu_dnes; $i<5; $i++) {
  if(isset($kod[$a]))
    if(!mysql_query("INSERT INTO kody SET name='$jmeno', code='$kod[$a]', date='$today'"))
      die("odmitam klic  ". $a+1 .", protoze ho uz mame, dal nepokracuji. dej v prohlizeci zpet a oprav zaznam ". $a+1);
  $a++;
}

echo "Data vlozena ok!";
mysql_close($link);
?>

tak zde je problem, ze to prida pet kusu kodu vporadku, ale min nez pet to neprida korektne.
-----------------

zobrazeni je taky problem, to vubec nevim jak uchopit...

<?php
error_reporting(E_ALL);
$link = mysql_connect('localhost', '--', '---');
if (!$link) {
    die('nemohu se spojit s: '. mysql_error());
}
echo "Jsme spojeni s DB<br />";

mysql_select_db("------") or die(mysql_error());

$dotaz = mysql_query("SELECT COUNT(*) FROM `kody`");


echo "v DB mame jiz ";
$row = mysql_fetch_array($dotaz, MYSQL_NUM); 
echo isset($row[0]) ? $row[0] : "???";
echo " zaznamu";

$dotaz2 = mysql_query("SELECT * FROM `kody`");
$row2 = mysql_fetch_array($dotaz2, MYSQL_ASSOC);
var_dump($row2);
//echo isset($row2[0]) ? $row2[0] : "NIC";

mysql_close($link);
?> 

Kdyztak prosim navest na nejaky tutorial, ale ten kde najdu co hledam, najit si na mysql umim spoustu ale nejak neumim ty informace syntetizovat do toho co potrebuji.

Předmět Autor Datum
budu trochu strucnejsi: zobrazeni dat - zobrazi se mi jen prvni zaznam tabulky, zbytek ne. co je sp…
ali4 02.12.2009 12:40
ali4
Zdá se mi že v té podmínce while by mělo být něco takového: $result = mysql_query($sql ,$db); while…
Flash_Gordon 02.12.2009 14:35
Flash_Gordon
dekuju pochopil jsem z toho jak to myslite a s malou upravou to facha ;-) todle mi staci, zbytek zk… poslední
ali4 02.12.2009 14:55
ali4

budu trochu strucnejsi:

zobrazeni dat - zobrazi se mi jen prvni zaznam tabulky, zbytek ne. co je spatne na dotazu?

$dotaz2 = mysql_query("SELECT * FROM `kody` LIMIT 0, 30");
$row2 = mysql_fetch_array($dotaz2, MYSQL_NUM);


echo "<br /><br />";
$a=0;
while($a<($row[0]*3)){
	echo $row2[$a];
	echo "<br />";
	$a++;
}

Zpět do poradny Odpovědět na původní otázku Nahoru