Kontrola zapsanych dat v tabulce z databaze – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kontrola zapsanych dat v tabulce z databaze – PHP – Fórum – Programujte.comKontrola zapsanych dat v tabulce z databaze – PHP – Fórum – Programujte.com

 

caesar
~ Anonymní uživatel
4 příspěvky
24. 11. 2006   #1
-
0
-

skript "predmety.php" vypada takto (jeho cast):




...
...
$vysledek=mysql_query("SELECT * FROM vyber_predmetu"); //vybere vse z tabulky v databazi
while ($zaznam=MySQL_Fetch_Array($vysledek)): //cyklus pro vlozeni radku do pole
?>
<TR>
<TD><? echo '<input type="checkbox" name="ID_pred[]" value="'.$zaznam["ID_pred"].'">'.$zaznam["ID_pred"].'</input>';?></TD>
<TD><? echo $zaznam["nazev_predmetu"]?></TD>
<TD><? echo $zaznam["semestr"]?></TD>
<TD><? echo $zaznam["garant"]?></TD>
<TD><? echo $zaznam["zakonceni"]?></TD>
<TD><? echo $zaznam["Obsah_predmetu"]?></TD>
</TR>
<?
endwhile;
echo "</table>";
?>


a skript "save_predmety.php" takto (cast):

 

<?php
include("session.php"); //spusteni session
include("spojeni.php"); //pripojeni k databazi
$idst= $_SESSION['userID']; // vytvorene session s id studenta
$predmet = $_POST["ID_pred"];
for ($i = 0; $i < count($predmet); $i++) {
$vloz = mysql_query("INSERT INTO zapsane_predmety VALUES ('$idst', '$predmet[$i]')");
}
require ('./prihlasen.php');
exit;
?>


Podstata je takova, ze si uzivatel vybere zaskrtnutim checkboxu nejake predmety v "predmety.php", ktere jsou zobrazeny z tabulky ("vyber_predmetu") v databazi MYSQL a ty si zapise pres skript "save_predmety.php" do tabulky ("zapsane_predmety"), kde jsou dva sloupce "ID_studenta" typu "int" a "ID_predmetu" typu "varchar".
Slo by nejak zamezit tomu,kdyz uzivatel jiz ma dany predmet zapsany, aby v radku tabulky na strance "predmety.php" nebyla moznost zaskrtnuti ceckboxu, nebo aby se tam nezobrazoval? Preci jen, nac by si uzivatel zapisoval predmet dany vicekrat...Dekuji za rady!

Nahlásit jako SPAM
IP: ...–
Ondrej Juríček
~ Moderátor
0
Stálý člen
24. 11. 2006   #2
-
0
-

V prvom kóde prvý dotaz:

$idst = $_SESSION['userID'];

$vysledek = mysql_query("SELECT * FROM vyber_predmetu WHERE nazev_predmetu NOT IN (SELECT ID_predmetu FROM zapsane_predmety WHERE ID_studenta = '$idst')");


dúfam, že som to dobre napísal, lebo občas sa v SQL zamotám :D
a diskusii si mohol pokračovať v starej téme

Nahlásit jako SPAM
IP: ...–
caesar
~ Anonymní uživatel
4 příspěvky
24. 11. 2006   #3
-
0
-

dekuju, ale nejak to nejde podle toho selectu...tak jsem to vyresil jinak viz nize uvedene 2 skripty, ale potreboval bych trochu doresit podminku s "in_array", kde se vzdy nezobrazi ve vysledku pouze jeden predmet, rep jeho "checkbox", ktery ma uzivatel jiz zapsany. Ve skutecnosti jich ma vsak zapsano vice a ty se zobrazi normalne a jdou znovu zapsat i kdyz uz je ma zapsane :( Co s tim kodem je prosim?

"predmety.php":



<?php
include("session.php");
include("hlava.php");
$idst= $_SESSION['userID'];
?>
<body style="background-color: lightgreen;">
<div align="center">
<FORM name="vyber_pr" ACTION="./save_predmety.php" METHOD="POST">
<?
define ("ROWS", 5);
mysql_connect('localhost', 'tom', '123456');
mysql_select_db("projekt");
if (!isset($_GET["celkem"])) //pokud nev?me, kolik bude z?znamu tak to zjist?me...
{
$vysledek=mysql_query("SELECT * FROM tom02");
$celkem=mysql_num_rows ($vysledek); //po?et ??dk? v tabulce
$zaznam=mysql_fetch_array($vysledek);
// $celkem=$zaznam["ID"];
}
else
{
$celkem=$_GET["celkem"];
}
if ($celkem>ROWS)
{
if (!isset($_GET["od"])) $od=1; else $od=$_GET["od"];
$vysledek=mysql_query("select * from tom02"." limit ".($od-1).", ".ROWS);
echo "Z?znamu: ".$od."-";
echo (($od+ROWS-1)<=$celkem)?($od+ROWS-1):$celkem;
echo " z celkem $celkem   ";
//zac?tek - vytvor odkaz pouze pokud nejsme na zac?tku
if ($od==1) echo "Zac?tek | ";
else echo "<a href="".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=1">Zac?tek</a> | ";
//zpet - vytvor odkaz pouze pokud nejsme v prvn?ch ROWS
if ($od<ROWS) echo "Predchoz? | ";
else echo "<a href="".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=".($od-ROWS)."">Predchoz?</a> | ";
//dal?? - vytvor, pouze pokud nejsme v posledn?ch ROWS
if ($od+ROWS>$celkem) echo "N?sleduj?c? | ";
else echo "<a href="".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=".($od+ROWS)."">N?sleduj?c?</a> | ";
//posledn? - to je posledn?ch (zbytek po delen? ROWS) z?znamu
if ($od>$celkem-ROWS) echo "Konec <BR>";
else echo "<a href="".$_SERVER["PHP_SELF"]."?celkem=$celkem&od=".($celkem-$celkem%ROWS+1)."">Konec</a><BR>";
}
echo "<br><table><tr><td>V?BER</td><td>N?ZEV PREDMETU</td><td>SEMESTR</td><td>GARANT</td><td>ZAKONCEN?</td><td>OBSAH PREDMETU</td></tr>";
$sudy=0;
while ($zaznam=MySQL_Fetch_Array($vysledek)):
//$id_predmetu=$zaznam["ID_pred"];
?>
<TR <? if ($sudy==0) {
echo "bgcolor=silver";
}?>>



<TD><?

$zapsane_mozne_predmety= mysql_query("select * from tom03 where ID_st ='$idst'");
$zaz=mysql_fetch_array($zapsane_mozne_predmety);
$pred = array($zaznam["ID_pred"]);
$pocet_radku=mysql_num_rows ($zapsane_mozne_predmety);
$zaps_pred = array($zaz["ID_pred"]);
echo $zaps_pred;
//echo $zaps_pred;
//$zapsane_predmety=array('Predmet_nazev_1','Predmet_nazev_2');
//$celkem_predmetu je pocet r?dku v tabulce s predmety...
for ($i= 0; $i<(count($celkem)); $i++)
{

if ((in_array($pred[$i],$zaps_pred)))
{
}
else
{

echo '<input type="checkbox" name="ID_pred[]" value="'.$zaznam["ID_pred"].'">'.$zaznam["ID_pred"].'</input>';
}
}


?></TD>
<TD><? echo $zaznam["nazev_predmetu"]?></TD>
<TD><? echo $zaznam["semestr"]?></TD>
<TD><? echo $zaznam["garant"]?></TD>
<TD><? echo $zaznam["zakonceni"]?></TD>
<TD><? echo $zaznam["Obsah_predmetu"]?></TD>
</TR>
<?
if ($sudy==0) {
$sudy=1;
}
else {
$sudy=0;
}
endwhile;
echo "</table>";
echo "array_key_exists($pred[1],$zaps_pred)";
?><br>
<input type="submit" name="zapis_pred" value="Zapi? predmet(y)" style="width: 120px;" />
</FORM><br>
<a href="./prihlasen.php">N?vrat na pøedchoz? str?nku</a>

</div>

</body>
</html>




a po kliku se zobrazi:
<?php

include("session.php");
include("spojeni.php");
$idst= $_SESSION['userID'];
$predmet = $_POST["ID_pred"];
for ($i = 0; $i < count($predmet); $i++) {
$vloz = mysql_query("INSERT INTO tom03 VALUES ('$idst', '$predmet[$i]')");
}
require ('./prihlasen.php');
exit;
?>

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 78 hostů

Podobná vlákna

Uprava dat v tabulce — založil Zuben

Kontrola dat — založil pejtrik

Kontrola vstupních dat — založil polarkac

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý