rijen in een mysql database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

04/12/2006 14:36:00
Quote Anchor link
Ik heb al een tijdje een login op me site intussen zijn er nu 10.000 leden geregistreerd maar er kunnen er nu niet meer bij. Heeft iemand een idee hoe ik dit kan oplossen, zonder hiervoor oude accounts te verwijderen?
 
PHP hulp

PHP hulp

19/11/2024 05:28:28
 
- SanThe -

- SanThe -

04/12/2006 14:40:00
Quote Anchor link
En waarom kunnen er niet meer bij?
 

04/12/2006 14:47:00
Quote Anchor link
er zit een controle functie in die controleert of de naam al bestaat in de rij en zit een controle functie op die kijkt of het ip al bestaat maar ook als ik een naam gebruik die nog niet bestaat en de ip functie uitschakel wil hij deze niet toevoegen aan de database.

Zit er toevallig een limiet aan een table, dat er maximaal maar 10.000 rijen in kunnen?
Gewijzigd op 01/01/1970 01:00:00 door
 
Joren de Wit

Joren de Wit

04/12/2006 14:48:00
Quote Anchor link
Wat is de foutmelding die je krijgt?
 

04/12/2006 14:50:00
Quote Anchor link
krijg geen foutmelding ook niet met ERROR_REPORTING(1024)
Gewijzigd op 01/01/1970 01:00:00 door
 
Joren de Wit

Joren de Wit

04/12/2006 14:55:00
Quote Anchor link
Laat eens het stukje van je script zien waarin je de query uitvoert. Misschien dat daar wat fout zit.

ps. Zet error_reporting liever gewoon op E_ALL ofwel code 2047. De fatale fouten en waarschuwingen wil je namelijk ook gewoon zien.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 

04/12/2006 15:01:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$sql
= 'INSERT INTO gebruikers (id, naam, wachtwoord, status, email, missie, actief, actcode, lastactive, ip, laatst_ip) VALUES (NULL, \''.htmlspecialchars($_POST["naam"]).'\', \''.md5($_POST["paswoord"]).'\', \'0\', \''.$_POST["mail"].'\', \'\', \'0\', \'\', \'0000-00-00 00:00:00\', \''.$_SERVER['REMOTE_ADDR'].'\')';
$resultaat = mysql_query( $sql ) or die ( "Fout: ".mysql_error() );
?>
Gewijzigd op 01/01/1970 01:00:00 door
 
Joren de Wit

Joren de Wit

04/12/2006 15:05:00
Quote Anchor link
En hoe controleer je of een naam en ip adres nog niet bestaat? En hoe merk je dat er niets in je database ingevoerd wordt?

Laat dus ook even een stukje van je omliggende code zien ;-)
 

04/12/2006 15:11:00
Quote Anchor link
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
<?php
if(####){
# hier staat het form

}else{
$sql = "SELECT naam FROM gebruikers WHERE naam='".htmlspecialchars($_POST['naam'])."'";
$query = mysql_query( $sql ) or die ( "Fout: ".mysql_error() );
$tellen = mysql_num_rows($query);
    //Check naam
    if($tellen==0){
    $sql = "SELECT ip FROM gebruikers WHERE ip='".$_SERVER['REMOTE_ADDR']."'";
    $query = mysql_query( $sql ) or die ( "Fout: ".mysql_error() );
    $tellen = mysql_num_rows($query);
        //Check ip
        if($tellen==0){
        //Gebruiker toevoegen aan database
        $sql = 'INSERT INTO gebruikers (id, naam, wachtwoord, status, email, missie, actief, actcode, lastactive, ip, laatst_ip) VALUES (NULL, \''.htmlspecialchars($_POST["naam"]).'\', \''.md5($_POST["paswoord"]).'\', \'0\', \''.$_POST["mail"].'\', \'\', \'0\', \'\', \'0000-00-00 00:00:00\', \''.$_SERVER['REMOTE_ADDR'].'\')';
        $resultaat = mysql_query( $sql ) or die ( "Fout: ".mysql_error() );
        }
else{
        $sql = "SELECT naam FROM gebruikers WHERE ip='".$_SERVER['REMOTE_ADDR']."'";
        $resultaat = mysql_query( $sql ) or die ( "Fout: ".mysql_error() );
        $rij = mysql_fetch_object($resultaat);
        echo "Hey ".$rij->naam." ben je daar alweer volgens onze database heb je al een gebruikers account.";
        }        
    }
else{
    echo "Deze naam is al in gebruik, klik <a href=\"javascript:history.back(-1)\">hier</a> om terug te gaan.";
    }
}

?>


dit is hem dan :) maar hij heeft er al 10.000 geregistreerd zal niet weten wat daar dan mis mee is
Gewijzigd op 01/01/1970 01:00:00 door
 
Frank -

Frank -

04/12/2006 15:23:00
Quote Anchor link
Als die SELECT-queries kunnen zo richting prullenbak, daar heb je niets aan. Wanneer een ip-adres of gebruikersnaam slechts 1x mag voorkomen, zet dan een UNIQUE op deze kolom. Dan zorgt de database er voor dat er geen dubbele waardes in de tabel worden weggeschreven.

Vervolgens gooi jij met een INSERT de nieuwe gebruiker in de database en klaar is kees. Mocht een waarde al in de tabel staan, dan zal de query keurig mislukken. Met mysql_errno() == 1062 kun je deze fout dan opvangen.

I.p.v. 4 queries heb je dus maar 1 query nodig. Dat ruimt lekker op!

Offtopic: De naam $query slaat nergens op, in deze variabele staat namelijk helemaal geen query! Het gaat om een resultset, $result lijkt mij dan ook voor de hand liggen.
 
Joren de Wit

Joren de Wit

04/12/2006 15:23:00
Quote Anchor link
Nee, er lijkt me ook niets mis mee inderdaad. Je zou nog eens een melding kunnen geven als het invoegen gelukt is/zou moeten zijn. Ook kun je met de functie mysql_affected_rows() nog controleren hoeveel rijen er beïnvloed zijn door je INSERT query. Als dit 0 is, weet je dat je query niet gelukt is.

Zet ook error_reporting nog even op E_ALL en niet op 1024.
 

04/12/2006 15:25:00
Quote Anchor link
oke bedankt even het script een beetje aanpassen :) een stuk overzichtelijker is het dan ook.
 

04/12/2006 15:28:00
Quote Anchor link
bedankt blanche die functie kan ik wel toepassen :) ERROR_REPORTING staat nu op E_ALL nog steeds geen fouten maar ik ga wel even knutselen :)
 



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.