Webstatt.org - Community seit 2006 - 2012 (2024?)

MySQL Eintrag schon vorhanden?

Avatar user-177
22.09.2009 19:32

Also zum Problem.
Ich habe eine Gästeliste programmiert. Speziell schaut man sich ein Event an, und man kann sich dann als angemeldeter User in eine Gästeliste eintragen. Nun kann man sich derzeit noch tausendmal eintragen. Da nicht abgefragt wird, ob man bereits für dieses Event eingetragen ist.

Nun wollte ich eine einfach Abfrage schreib en, klappt aber nicht traurig
Vieleicht kann mir jemand helfen was ich verkehrt mache.

<?php

if($u=="gaesteliste"zwinkern {
echo genTitel('04/16/14','In Gästeliste eintragen'zwinkern;

?>
<script type=text/javascript>
...
</script>
<?php
if (!@mysql_num_rows(mysql_query("SELECT * FROM ".$dbx."_events_gaesteliste WHERE event='$wert1' AND user='$wert2'"zwinkern) <>0) /* Prüfen ob bei der event id bereits die user ID eingetragen ist */

{
$result = @mysql_query("INSERT INTO ".$dbx."_events_gaesteliste (event,user) VALUES ('".$s."','".$usrd[id]."'zwinkern"zwinkern;

else { echo "Dieser Eintrag existiert schon";} /* Verbieten des erneuten Eintragens */
echo "<script type=text/javascript>
function Weiterleitung()
{ parent.window.location.href = \"index.php?d=events&s=".$s."\"; }
window.setTimeout(\"Weiterleitung()\",1500);
</script>
<img src=icon/03/16/02.png width=16 height=16 align=absmiddle> Der Kommentar wurde erfolgreich hinzugefügt.";
}

echo "<form method=post name=gast><input type=hidden name=iframe value=events><input type=hidden name=i value=k><input type=hidden name=s value=\"".$s."\"><input type=hidden name=u value=kommentar><table border=0 cellspacing=0 cellpadding=5 width=100% height=200><tr><td valign=top></td><td align=right></td></tr><tr><td colspan=2 align=right><input type=hidden value=Eintragen class=formbutton></td></tr></table></form>";
}

?>


Über Hilfe wäre ich dankbar traurig

Avatar user-271
23.09.2009 00:43

if (!@mysql_num_rows(mysql_query("SELECT * FROM ".$dbx."_events_gaesteliste WHERE event='$wert1' AND user='$wert2'"zwinkern) <>0)  /* Prüfen ob bei der event id bereits die user ID eingetragen ist */

?

boolean wert in einer if prüfen?

#!/bin/bash
traurig){ neutral:& };:
Avatar user-177
23.09.2009 17:42

Original von user-271
if (!@mysql_num_rows(mysql_query("SELECT * FROM ".$dbx."_events_gaesteliste WHERE event='$wert1' AND user='$wert2'"zwinkern) <>0)  /* Prüfen ob bei der event id bereits die user ID eingetragen ist */

?

boolean wert in einer if prüfen?

mhh, nun muss man sagen bin ich kein gott in Mysql und PHP, was ist ein boolean? Ich hab mir das Fragment eher zusammen gewürschelt lächeln

user-309
24.09.2009 09:16

boolean = Wahrheitswert (true, false bzw. 0 und 1)

Ich habe für einen simplen Hack für unser Forum geschrieben, bei denen man sich zu Events anmelden kann.
Da das Board schon eine Eventfunktion besaß habe ich lediglich eine zusätzliche Spalte in der Eventtabelle hinzugefügt, in der die teilnehmenden User mittels ID und mit Komma getrennt eingetragen werden.
Diese wir dann bei jeder Minipulation ausgelesen, an den Kommas getrennt und geprüft, ob der Wert schon vorhanden ist:

Das sieht in etwa so aus:

Einfaches Prüfen

if ($mybb->user['uid'] > 0) {
$arrPartiUsers = explode(",", $event['additionalusers']);
if(!in_array($mybb->user['uid'],$arrPartiUsers)) {
SIGNUP
} else {
SIGNOFF
}
}


Interaktion

if($arrAddUsers['additionalusers'] != ""zwinkern {
$arrAddUser = explode(",", $arrAddUsers['additionalusers']);
} else {
$arrAddUser = array();
}
if($mybb->input['signin'] == TRUE && !in_array($mybb->user['uid'], $arrAddUser)) {
array_push($arrAddUser, $mybb->user['uid']);
} else {
if($mybb->input['signin'] == FALSE && in_array($mybb->user['uid'], $arrAddUser)) {
$key = array_search($mybb->user['uid'], $arrAddUser);
unset($arrAddUser[$key]);
}
}


$arrAddUser enthält dann die neuen User, bzw das Event ohne den User.

Die interessaten Funktionen sind:
in_array(); Liefert Bool als Rückgabe
array_push(); Liefert Bool als Rückgabe
array_search(); Liefert Schlüssel (Position) als Rückgabe

Für alles weitere sollte die PHP Dokumentation ausreichen