Controleren of iets is de database aanwezig is

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Eric Cartman

Eric Cartman

28/09/2005 19:53:00
Quote Anchor link
Ik ben een soort stem-systeem aan het maken. Je kan dan een handtekening zetten, alleen één iemand mag niet twee keer stemmen, dit (wou ik) controleren doormiddel van het IP-adres. Alleen ik zou niet weten hoe je kijkt of een bepaald gegeven in de database aanwezig is. Ik hoop dat iemand mij kan helpen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
// Contact maken met de MySQL-server
include('connect.php');

// Invoergegevens in een variabele zetten
$naam   = addslashes($_POST['naam']);
$mail   = addslashes($_POST['mail']);
$school = addslashes($_POST['school']);
$plaats = addslashes($_POST['plaats']);
$ip     = $_SERVER['REMOTE_ADDR'];


// SQL-query opgeven in variabele
$sql = "INSERT INTO anticorvee
        (naam, mail, school, plaats, ip, datum)    
    VALUES
        ('$naam', '$mail', '$school', '$plaats', '$ip', NOW())"
;
    

// Gegevens invoeren in de MySQL-database
if (mysql_query($sql) == FALSE) {
  die('Het stemmen om problemen met de database mislukt. Als u toch wilt stemmen, stuur dan een e-mail naar <a href="mailto:[email protected]">[email protected]</a>, met de titel HAND.');
  mysql_error();
}


?>
 
PHP hulp

PHP hulp

24/04/2024 16:27:59
 
Han eev

Han eev

28/09/2005 20:02:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?PHP
$uery
= mysql_query("SELECT * FROM lalal WHERE ip='".$_SERVER['REMOTE_ADDR']."'");
if(mysql_num_rows($uery) >= 1) {
echo 'u heeft al gestemt';
}

?>

ik hoop dat ik je een beetje op weg help
 

28/09/2005 20:05:00
Quote Anchor link
Je kunt better sessions gebruiken, maak er 1 aan en laat het voor 2 weken (?) runnen (totdat je een nieuwe poll hebt).
 
Eric Cartman

Eric Cartman

28/09/2005 20:09:00
Quote Anchor link
Ik weet niet of dat nut heeft, ik wil het maar 1 keertje gebruiken. Alleen met succes wordt het misschien nogmaals gebruikt, om een ander doel te bereiken bijvoorbeeld. Nooit meer nakomen lijkt me wel wat... :p
 
Eris -

Eris -

28/09/2005 20:10:00
Quote Anchor link
sessies blijven maximaal geldig totdat je de browser afsluit
Dus je hetb er niets aan.
 
Alfred -

Alfred -

28/09/2005 20:55:00
Quote Anchor link
Han:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?PHP
$uery
= mysql_query("SELECT * FROM lalal WHERE ip='".$_SERVER['REMOTE_ADDR']."'");
if(mysql_num_rows($uery) >= 1) {
echo 'u heeft al gestemt';
}

?>

ik hoop dat ik je een beetje op weg help


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sql
= mysql_query("SELECT COUNT(`id`) FROM tabel WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "'");
$aantal = mysql_result($sql, 0);
if ($aantal >= 1) {
  # Reeds gestemd
} else {
  # Niet gestemd
}
?>


Count is sneller dan mysql_num_rows, mysql_num_rows is ook zinloos, want je haalt niet eens data op uit de database.
Als je nu data zou ophalen, en wil weten hoeveel je ophaalt, dan is mysql_num_rows een optie, anders lijkt me dit verspilling.
 
Eric Cartman

Eric Cartman

29/09/2005 16:06:00
Quote Anchor link
Maar mysql_num_rows() werkt wel, alleen wil ik nu nog tegengaan dat er een of andere grapjas is die htm/php/sql gaat gebruiken zodat ie de site platlegt. Ik ben er inmiddels achter dat je dat kunt doen met htmlentities(), maar wat moet ik nog meer gebruiken??
 
Roy Bongers

Roy Bongers

29/09/2005 18:19:00
Quote Anchor link
$naam = addslashes($_POST['naam']);
$mail = addslashes($_POST['mail']);
$school = addslashes($_POST['school']);
$plaats = addslashes($_POST['plaats']);
$ip = $_SERVER['REMOTE_ADDR'];

word:

$naam = htmlentities($_POST['naam']);
$mail = htmlentities($_POST['mail']);
$school = htmlentities($_POST['school']);
$plaats = htmlentities($_POST['plaats']);
$ip = $_SERVER['REMOTE_ADDR'];
Gewijzigd op 29/09/2005 18:19:00 door Roy Bongers
 
Eric Cartman

Eric Cartman

30/09/2005 18:06:00
Quote Anchor link
Nu hebik het script op de webserver gezet, en tot mijn verbazing is het nu mogelijk om wel twee maal te stemmen met hetzelfde IP-adres. Weet iemand wat er fout aan is..?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
// De teksten en het menu includen
include('config/text.inc.php');
include('config/menu.inc.php');

// Contact maken met de MySQL-server
include('includes/connect.inc.php');

// Invoergegevens in een variabele zetten
$naam   = htmlentities($_POST['naam']);
$mail   = htmlentities($_POST['mail']);
$school = htmlentities($_POST['school']);
$plaats = htmlentities($_POST['plaats']);
$ip     = $_SERVER['REMOTE_ADDR'];


// SQL-query opgeven in variabele
$sql = "INSERT INTO anticorvee
        (naam, mail, school, plaats, ip, datum)    
    VALUES
        ('$naam', '$mail', '$school', '$plaats', '$ip', NOW())"
;

// Controleren of er al getekend is    
$query = mysql_query("SELECT ip FROM anticorvee WHERE ip='" .$ip. "'");
if (mysql_num_rows($query) >= 1) {
  $_text= $text['algezet'];
  $titel = "Babaluji // Je hebt al getekend!";
}


// Kijken of de MySQL-query uitgevoerd kan worden
else {
  if (mysql_query($sql) == FALSE) {
    $titel = "Babaluji // Het stemmen is mislukt";
    $_text = $text['mislukt'];
  }

  
  else {
    $titel = "Babaluji // Het stemmen is succesvol gelukt";
    $_text = $text['succesvol'];
  }
}


// De template-file includen
include('templates/standard.inc.php');
?>
Gewijzigd op 02/10/2005 12:40:00 door Eric Cartman
 
Eric Cartman

Eric Cartman

02/10/2005 13:34:00
Quote Anchor link
Rafael:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sql
= mysql_query("SELECT COUNT(`id`) FROM tabel WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "'");
$aantal = mysql_result($sql, 0);
if ($aantal >= 1) {
  # Reeds gestemd
} else {
  # Niet gestemd
}
?>


Count is sneller dan mysql_num_rows, mysql_num_rows is ook zinloos, want je haalt niet eens data op uit de database.
Als je nu data zou ophalen, en wil weten hoeveel je ophaalt, dan is mysql_num_rows een optie, anders lijkt me dit verspilling.


Ik heb dit nog even geprobeerd, maar dit werkt ook niet. Heeft niemand een oplossing?
Gewijzigd op 02/10/2005 13:42:00 door Eric Cartman
 
Alfred -

Alfred -

02/10/2005 14:22:00
Quote Anchor link
Heb je de velden 'id' & 'ip' in de database?
Heb je de tabelnaam aangepast?
 
Eric Cartman

Eric Cartman

02/10/2005 14:27:00
Quote Anchor link
Nee, ik sla SQL-queries altijd op in een textbestandje. Dan ga ik in PHPmyadmin naar SQL en draai ik die SQL-query, zodat ik precies dezelfde tabel krijg. Daar kan het dus niet aan liggen.
 
Alfred -

Alfred -

02/10/2005 14:43:00
Quote Anchor link
...

M'n bovenstaande query diende als voorbeeld, en heeft niets te maken met je database structuur... Dus hoe kan jij dan "precies dezelfde" tabel krijgen?
 
Eric Cartman

Eric Cartman

02/10/2005 14:51:00
Quote Anchor link
Ik vat het nou niet helemaal meer. Je post een voorbeeld, en dat is helemaal niet van toepassing op dit script..? Of zit ik er nou weer 'ns flink naast..?
 
Alfred -

Alfred -

02/10/2005 14:54:00
Quote Anchor link
Je wou kijken of er iets aanwezig was in de database, dus gaf ik een voorbeeld om dit te tellen.
Dit is GEEN kant-en-klaar script, maar moet je zelf aanpassen naar jouw database...
Gewijzigd op 02/10/2005 14:54:00 door Alfred -
 
Eric Cartman

Eric Cartman

02/10/2005 15:05:00
Quote Anchor link
Dit heb ik gedaan, maar het werkt nog steeds niet. Ik krijg de volgende foutmelding:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\apachefriends\xampp\xampp\htdocs\test\Babaluji\stem.php on line 25

En daaronder komt de lay-out te staan en vermelding Succesvol gestemd. Dan werkt het toch niet..?
 
Alfred -

Alfred -

02/10/2005 15:22:00
Quote Anchor link
Ongeldige query... Zoals ik zei, zelf aanpassen naar jouw db.
 
Eric Cartman

Eric Cartman

02/10/2005 15:24:00
Quote Anchor link
Ik heb hem volgens mij toch goed aangepast:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// Controleren of er al getekend is    
$query = mysql_query("SELECT COUNT(`ip`) FROM tabel WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "'");
$aantal = mysql_result($query, 0);
if ($aantal >= 1) {
  $_text= $text['algezet'];
  $titel = "Babaluji // Je hebt al getekend!";
}

?>
 
Barman V

Barman V

02/10/2005 15:40:00
Quote Anchor link
Maak er eens

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= mysql_query("SELECT COUNT(`ip`) FROM tabel WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "'") or die (mysql_error());
?>


van
 
Barman V

Barman V

02/10/2005 15:43:00
Quote Anchor link
Misschien heeft het namelijk met het groeperen te maken.
In sommige gevallen bij MAX, MIN, SUM, COUNT, enz eist de query een GROUP BY

Voor jouw query lijkt het me een beetje vreemd, maar het is te proberen.

Dan krijg je zoiets als

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= mysql_query("SELECT COUNT(`ip`) FROM tabel WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "' GROUP BY gebrid") or die (mysql_error());
?>
Gewijzigd op 02/10/2005 15:44:00 door Barman V
 
Eric Cartman

Eric Cartman

02/10/2005 15:45:00
Quote Anchor link
Sorry Rafael, je had toch gelijk. Ik had FROM tabel niet aangepast. Hij werkt dus wel..! Bedankt..!

--edit
Je had in ieder geval gelijk voor mijn lokale server. Op de server waar de website staat (phpBBhost), lukt het nog steeds niet om mensen maar 1 keer te laten stemmen.
Gewijzigd op 02/10/2005 15:55:00 door Eric Cartman
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.