Avatar billede torstein Novice
18. juni 2003 - 23:38 Der er 12 kommentarer og
2 løsninger

Check om streng findes i DB.

Jeg har flg script, som via en array gemmer variabler i en tabel.
Dog er problemet at man kan gemme den samme øvelse flere gange på samme dato. Det skal der sættes en stopper for, MEN HVORDAN????

include ("sql.php");
$datoen=date("Y-m-d");

if ($action=="opdater"){

// Slet den tidligere træningssammensætning...
// mysql_query("delete from create_db where id_bruger='$_SESSION[husk_id]'");
// Den nye sættes ind..
for($i=0; $i < count($_POST['id_ovl']); $i++) {
    if ($_POST['id_ovl'][$i] != "") {
        $tmp = $_POST['id_ovl'][$i];
        mysql_query("INSERT INTO create_db (id_bruger,id_ovl,dato) VALUES ('$_SESSION[husk_id]','$tmp','$datoen')") or die (mysql_query());
    }
}?>
<div align="center"><h3>Øvelser opdateret</h3></div>
<?}
if (!$action){
$kat='opvarmning';
$overallm = mysql_query("SELECT * FROM ovelse_db WHERE kat ='$kat'") or die(mysql_error());
$count = mysql_num_rows($overallm);?>
<a name="opv"></a><P><b> Opvarmning (<?=$count;?>) </b></p>
<?$number = mysql_num_rows($overallm);?>
<p><?
while ($row = mysql_fetch_array($overallm)) {?>
<form action="<? echo $php_self; ?>" method="post">
<input type="checkbox" name="id_ovl[]" value="<?=$row[id_ovl];?>"><a href=java script:void(0) onClick="window.open('vis_ovl.php?id_ovl=<?=$row[id_ovl];?>','','width=580,height=550,left = 200, top = 100,menubar=no,scrollbars=yes')"><?echo $row[ovl_navn]."</a> <br>";}?><p align="right"><a href="#top">Til toppen</a></p>

<?
$kat='smaaspil';
$overallm = mysql_query("SELECT * FROM ovelse_db WHERE kat ='$kat'") or die(mysql_error());
$count = mysql_num_rows($overallm);
?>
<a name="sma"></a><b>Småspil (<?=$count;?>)</b></p>
<?$number = mysql_num_rows($overallm);?>
<p><?
while ($row = mysql_fetch_array($overallm)) {?>
<form action="<? echo $php_self; ?>" method="post">
<input type="checkbox" name="id_ovl[]" value="<?=$row[id_ovl];?>"><a href=java script:void(0) onClick="window.open('vis_ovl.php?id_ovl=<?=$row[id_ovl];?>','','width=580,height=550,left = 200, top = 100,menubar=no,scrollbars=yes')"><?echo $row[ovl_navn]."</a> <br>";}?><p align="right"><a href="#top">Til toppen</a></p>

// derudover et par andre $kat flere....

<input type="submit" name="action" size=10 value="opdater"></form></P><?}?>
Avatar billede ahv Nybegynder
18. juni 2003 - 23:41 #1
Er det ikke blot at hive datoen ud fra tabellen og sammenligne den med dagsdato ?

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

if ($dagsdato != $datofratabel) {
// Så må vi godt
Avatar billede torstein Novice
18. juni 2003 - 23:51 #2
Ahv, der var noget, men.....ikke helt efter hensigten kan jeg se, da sammensætningen af de forskellige øvelser godt kan ske over flere datoer. Kan man ikke sammenligne id_ovl[] OG $id_bruger i stedet.

Jeg skal nok have slettet den dato...
Avatar billede ahv Nybegynder
18. juni 2003 - 23:53 #3
Så hvis id_ovl er i databasen og $id_bruger er inde skal man ikke?
Avatar billede torstein Novice
19. juni 2003 - 00:16 #4
Det er korrekt. Brugeren, som huskes af $_SESSION[husk_id]/id_bruger må ikke kunne lægge 2 ens øvelser i tabellen.
Avatar billede ahv Nybegynder
19. juni 2003 - 00:20 #5
if ($id_olvfratabel != $id_bruger) {
// Så må vi gerne
Avatar billede ahv Nybegynder
19. juni 2003 - 00:22 #6
Eller du kan tjekke op på ->

SELECT * FROM tabel WHERE olv_id !='$id_bruger'

Så kan vi så lave en ->
if($row['felt']) {
// Så må vi gerne
Avatar billede torstein Novice
19. juni 2003 - 00:27 #7
Man skal IKKE sammenligne id_bruger med id_ovl. ID_bruger er 'fast', mens id_ovl er en array id_ovl[], og den skal sammenlignes med alle andre id_ovl i tabellen hvor brugeren også er id_bruger...
Avatar billede ahv Nybegynder
19. juni 2003 - 00:28 #8
Kan du ikke lige fortælle helt præcist hvordan din(e) tabel(ler) hænger sammen?
Avatar billede torstein Novice
19. juni 2003 - 00:36 #9
DB create_db:
CREATE TABLE create_db (
  id_create tinyint(4) NOT NULL auto_increment,
  id_bruger tinyint(4) NOT NULL default '0',
  id_ovl tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (id_create)
) TYPE=MyISAM COMMENT='Træningsprogram DB til Øvl coach.dk';

#
# Data dump for tabellen `create_db`
#

INSERT INTO create_db VALUES (35, 1, 8);
INSERT INTO create_db VALUES (34, 1, 16);
INSERT INTO create_db VALUES (33, 1, 14);

Jeg vil gerne have det sådan at der chekkes for 'dobbeltgængere' inden den laver denne opdatering:

for($i=0; $i < count($_POST['id_ovl']); $i++) {
    if ($_POST['id_ovl'][$i] != "") {
        $tmp = $_POST['id_ovl'][$i];
        mysql_query("INSERT INTO create_db (id_bruger,id_ovl) VALUES ('$_SESSION[husk_id]','$tmp')") or die (mysql_query());
    }
}?>
Avatar billede ahv Nybegynder
19. juni 2003 - 00:41 #10
Undskyld, det er nok pga. tidspunktet? Hvis der findes en dobbeltgægnger må man ikke? Hvilket felt er det dobbeltgængeren skal være på? id_ovl?
Avatar billede torstein Novice
19. juni 2003 - 00:46 #11
Ja det er ved at være sent, tanken har også strejfet mig.

Dobbeltgængeren skal være på begge felter

bruger med id 1 må ikke oprette 2 øvelser med ovl_id 2

så det må være noget med

hvis id_bruger = $_SESSION[husk_id] OG id_ovl = $tmp / id_ovl[]

Det som jeg er forvirret over er når der kommer denne array ind i det, da $tmp /ID_ovl ikke er ens hver gang der skal chekkes...hvis du forstår.
Avatar billede ahv Nybegynder
19. juni 2003 - 00:51 #12
"bruger med id 1 må ikke oprette 2 øvelser med ovl_id 2"

Er det så ikke bare ->

SELECT * FROM tabel WHERE id='1' AND ovl_id='2' <- Tallen kommer jo så fra dine variabler osv.

Hvis vi så hiver ud og tjekker om den fandt noget?
Avatar billede torstein Novice
19. juni 2003 - 01:03 #13
for($i=0; $i < count($_POST['id_ovl']); $i++) {
    if ($_POST['id_ovl'][$i] != "") {
        $tmp = $_POST['id_ovl'][$i];
        $check_for_tidligere = mysql_query("SELECT * FROM create_db WHERE id_bruger ='$_SESSION[husk_id]' AND id_ovl='$tmp'") or die(mysql_error());
$count_tidl = mysql_num_rows($check_for_tidligere);
if (!$count_tidl){
        mysql_query("INSERT INTO create_db (id_bruger,id_ovl) VALUES ('$_SESSION[husk_id]','$tmp')") or die (mysql_query());} else {}
    }
}}

Dette virker ($check for tidligere)... Det er vist sengetid, vi deler i porten, som tak for din hjælp. Håber det er OK.
Avatar billede ahv Nybegynder
19. juni 2003 - 01:04 #14
Helt ok, sov godt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester