Avatar billede thylen Nybegynder
26. marts 2008 - 04:16 Der er 13 kommentarer

tjek i en database om værdien allerede eksistere

Hejsa, jeg har et problem, jeg er kommet godt igang med et signupsystem / event system, hvor at før den ligger ens informationer ind når man klikker på signup skal den tjekke om man allerede ligger i databasen. Jeg KAN simpelthen ikke få noget til at virke, så hvis nogle ville prøve at rette min kode til også indsætte sådan et system, så jeg kan lære hvordan man gør, eller bare vise mig det - så jeg selv kan gøre det ville jeg blive meget glad.

Her er min kode:

<?php
mysql_connect("localhost","root","")or die(myqsl_error());
mysql_select_db("signupsystem");

if(!isset($_SESSION)){
    session_start();
    }

$urlId = $_REQUEST['id'];
$userSession = $_SESSION['MM_brugernavn'];
$sqlQuery = mysql_query("SELECT * FROM `users` WHERE b_navn='$userSession'")or die(mysql_error());
while($showQuery = mysql_fetch_assoc($sqlQuery)){
$getUserId = $showQuery['nick'];
$getNick = $showQuery['class'];
$getUser = $showQuery['id'];
$getLevel = $showQuery['level'];
$getRace = $showQuery['race'];
$actionSign = $_SERVER['PHP_SELF']."?id=$urlId";
$signstatus = $_POST['signstatus'];
$selectSql = mysql_query("SELECT * FROM `raidmemebers` WHERE raidnr='$urlId'")or die(mysql_error());
$rowSql = mysql_fetch_assoc($selectSql);

if((isset($_SESSION['signed']) == 1)){
echo "Du er allerede signed";
} elseif((isset($_GET['action']) == "sign")){
mysql_query("INSERT INTO `raidmemebers` (`brugerid`,`nick`,`class`,`raidnr`,`signstatus`,`level`,`race`) VALUES ('$getUser','$getUserId','$getNick','$urlId','$signstatus','$getLevel','$getRace')")or die(mysql_error());
}}
$getSign = mysql_query("SELECT * FROM `raidmemebers` WHERE raidnr='$urlId'")or die(mysql_error());
while($visSign = mysql_fetch_assoc($getSign)){
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Showsigns</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<form method="post" action="<?php echo $actionSign;?>&action=sign">
<select name="signstatus">
<option value="0">---SELECT ONE---</option>
<option value="1">--Sign--</option>
<option value="2">--Sign Off--</option>
</select>
<input type="submit" value="Sign">
</form>
<table>
<tr class="head">
<td width="10%"><strong>Nr:</strong></td>
<td width="20%"><strong>Name:</strong></td>
<td width="15%"><strong>Class:</strong></td>
<td width="15%"><strong>Race:</strong></td>
<td width="10%"><strong>Level:</strong></td>
<td width="10%"><strong>Signstatus:</strong></td>
</tr>
<?php do { ?>
<tr>
    <td><?php echo $visSign['id']; ?></td>
    <td><?php echo $visSign['nick']; ?> </td>
    <td><?php echo $visSign['class']; ?></td>
    <td><?php echo $visSign['race']; ?></td>
    <td><?php echo $visSign['level']; ?></td>
    <td><?php if($visSign['signstatus'] == 1){ echo "Signed"; }
        if($visSign['signstatus'] == 2){ echo "Signed off"; }?></td>
    <td></td>
      </tr>
<?php
} while($visSign = mysql_fetch_assoc($getSign));
exit;
}
?>
    </table>
</div>
</body>
</html>
Avatar billede jakobdo Ekspert
26. marts 2008 - 08:18 #1
Du kan gøre det på flere måder:

Lav en
$query = ("SELECT id FROM raidmemebers WHERE b_navn = $username");
if(mysql_num_rows($query)==1){
echo 'Brugeren findes allerede';
}

Eller du kan lave b_navn UNIQUE, så vil databasen smide en fejl, hvis du forsøger at oprette en bruger som allerede findes.
Den fejl kan du så fange.
Avatar billede cortx Nybegynder
26. marts 2008 - 09:13 #2
thylen det smarteste er nok query'en ..
Avatar billede jakobdo Ekspert
26. marts 2008 - 09:21 #3
Det er klart UNIQUE. :o)
Avatar billede cortx Nybegynder
26. marts 2008 - 09:30 #4
Så skal han vel også til at arbejde med selve fejlmeddelelsen? har faktisk ikke arbejdet med unique, men Jeg synes det smarteste (eller letteste) er query løsningen hehe..
Avatar billede olebole Juniormester
26. marts 2008 - 20:55 #5
<ole>

- men det er det afgjort ikke. Hvorfor spørge databasen to gange, når man ved langt de fleste forsøg kan nøjes med én?  ;o)

$sql = "INSERT INTO `tabel_navn` ................... ";
@mysql_query($sql);
if (mysql_errno()==1062) {
    // Findes allerede - gør noget andet
    // - er dette svært?  ;o)
}

/mvh
</bole>
Avatar billede thylen Nybegynder
26. marts 2008 - 21:41 #6
tak alle sammen fik det fikset, nu skal jeg bare bruge lidt hjælp med dette javascript..

Hejsa, jeg har et lille problem. Jeg skal havde lavet et lille javascript, som kan gøre at hvis man ikke har valgt en af 2 option values så skal den alert();.

<select name=min_optionvalue>
<option value="0">---SELECT ONE---</option>
<option value="1">Sign</option>
<option value="2">Sign off</option>

det den helt præcist skal gøre er, hvis man har valgt <option value="0"> så skal den sige aleart("Vælg en gyldig option"); - nogle som kan hjælpe mig med sådan et script ;-)?
Avatar billede jakobdo Ekspert
26. marts 2008 - 21:44 #7
Du kunne lave noget ala:

if(document.getelementbyid('min_optionvalue').value == 0)
alert('Vælg gyldig option');
document.getelementbyid('min_optionvalue').focus();

Og samtidig skal du tilføje id="min_optionvalue" på din <select...>
Avatar billede jakobdo Ekspert
26. marts 2008 - 21:45 #8
Du kan måske endda lave det med en onchange event på <select>
Eller med en radiobutton. :o)
Avatar billede thylen Nybegynder
26. marts 2008 - 21:59 #9
<script language="text/javascript">
if(document.getelementbyid('optionalert').value == 0)
alert('Vælg gyldig option');
document.getelementbyid('optionalert').focus();
</script>

hmm virker ikke rigtigt :< jeg sætter det lige ind før min form

<form method="post" action="<?php echo $actionSign;?>&action=sign">
<select name="signstatus" id="optionalert">
<option value="0">---SELECT ONE---</option>
<option value="1">--Sign--</option>
<option value="2">--Sign Off--</option>
</select>
<input type="submit" value="Sign">
</form>
Avatar billede jakobdo Ekspert
26. marts 2008 - 22:10 #10
Noget i stil med:

<html>
<head>
<title>Validate</title>
<script type="text/javascript">
function validate(){
    if(document.getElementById('optionalert').value == 0){
        alert('Vælg gyldig option');
        document.getElementById('optionalert').focus();
        return false;
    }else{
        return true;
    }
}
</script>
</head>
<body>
<form method="post" onsubmit="return validate();" action="noget.php">
<select name="signstatus" id="optionalert">
<option value="0">---SELECT ONE---</option>
<option value="1">--Sign--</option>
<option value="2">--Sign Off--</option>
</select>
<input type="submit" value="Sign">
</form>
</body>
</html>
Avatar billede olebole Juniormester
26. marts 2008 - 22:11 #11
Har du ikke allerede én tråd kørende om det emne?
Avatar billede thylen Nybegynder
26. marts 2008 - 22:30 #12
jo, men nu jakob var hurtigt til at response, så jeg ville lige høre ham :-)
Avatar billede thylen Nybegynder
26. marts 2008 - 22:41 #13
http://www.eksperten.dk/spm/825354

Forsæt tråden her :-)
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