[php / mysql] Query wordt 2x uitgevoerd.. maar hoe kan dit?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TiSaE
  • Registratie: Juli 2002
  • Laatst online: 21:25
Ik zit met een volgend probleem: Ik maak een soort on-line bestandbeheer systeem dit werkt met groepen, binnen deze groepen zitten gebruikers. Nu wordt een bepaalde sql query 2x uitgevoerd.... Alleen de code hiervoor roep ik maar 1x aan.. Na 4 dagen tuureluurs gestaard te hebben op de code probeer ik het hier maar eens.....

PHP:
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
// Een nieuwe gebruiker toevoegen
 if($nieuwgroep == '')
 {
 // Gewoon een gebruiker gegevens toevoegen aan een huidige groep die al bestaat
    $dbh = getConn();
    $query = "INSERT INTO `ictgebruikers` (`id`, `user`, `location`, `pass`) VALUES ('', '$user', '$oudgroep', '$pass');";
    $dbh = getConn();
    mysql_query($query, $dbh) or die('An error occured: ' . mysql_error());
    mysql_close($dbh);

        Header("Location: bestandsbeheer.php");
        exit;

 }
 else
 {

 // Een gebruiker toevoegen aan een nieuwe groep
    $query = "INSERT INTO `ictgroepen` (`ID`, `Naam`) VALUES ('', '$nieuwgroep');";
    $dbh = getConn();
    mysql_query($query, $dbh) or die('An error occured: ' . mysql_error());
    mysql_close($dbh);

    $dbh = getConn();
    $sql = "SELECT * FROM ictgroepen WHERE Naam = '$nieuwgroep'";
    $res = mysql_query($sql) or die(mysql_error());
    while($row = mysql_fetch_object($res))
    {
            $newgroep = $row->ID;
    }
    mysql_close($dbh);
    

    $query = "INSERT INTO `ictgebruikers` (`id`, `user`, `location`, `pass`) VALUES ('', '$user', '$newgroep', '$pass');";
    $dbh = getConn();
    mysql_query($query, $dbh) or die('An error occured: ' . mysql_error());
    mysql_close($dbh);

        Header("Location: bestandsbeheer.php");
        exit;

 }

Ik krijg geen foutmeldingen ofzo alles doet het goed, maar iets te goed hij voert de volgende sql code 2x uit......
PHP:
1
$query = "INSERT INTO `ictgebruikers` (`id`, `user`, `location`, `pass`) VALUES ('', '$user', '$newgroep', '$pass');";


Maar dat snap ik dus niet, ik roep hem maar 1x aan

Mochten er nog meer vragen zijn ofzo dan hoor ik het wel, ik wordt helemaal gek van dit stukje code 8)7

Alvast bedankt

[ Voor 9% gewijzigd door gorgi_19 op 02-02-2005 12:47 ]


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Tip: PHP Code tussen [ php] tags geeft ook kleurtjes, leest iets makkelijker..

Waarom roep je zovaak (onnodig) de functie getConn(); aan? Die op regel 5 of op regel 7 is sowieso al overbodig, aangezien die daar tussen niet gesloten wordt. Maar waarom niet gewoon boven aan je pagina 1x aanroepen, en helemaal onderaan 1x sluiten? :)

Verder zie ik zo 1,2,3 niet de fout.. Probeer eens netjes de debuggen, zoals ook in de FAQ staat. Gewoon om de zoveel regels een echo plaatsen met variabelen, en kijken of die de waarde hebben die je verwacht.

// EDIT

Nog wat tips..
- Ik zet de variabelen altijd buiten de string, dat leest makkelijker
- "SELECT * FROM" is (vooral bij grote tabellen) langzamer als wanneer je alle velden benoemd
- Met de functie mysql_insert_id(); krijg je het ID terug van de laatste INSERT, hoef je die hele while()-loop op regel 27 niet te doen
- Ik zou voor je if-else check eerder de empty(); functie gebruiken. :)

Is dit trouwens het hele script? Ik dat geval lijkt het er op dat je globals gebruikt, iets wat ik niet zou aanraden.

[ Voor 33% gewijzigd door OkkE op 02-02-2005 13:56 ]

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

Verwijderd

TiSaE schreef op woensdag 02 februari 2005 @ 11:59:
PHP:
1
$query = "INSERT INTO `ictgebruikers` (`id`, `user`, `location`, `pass`) VALUES ('', '$user', '$newgroep', '$pass');";
Waarom staan er twee ; ?
OkkE schreef op woensdag 02 februari 2005 @ 12:45:
Waarom roep je zovaak (onnodig) de functie getConn(); aan? Die op regel 5 of op regel 7 is sowieso al overbodig, aangezien die daar tussen niet gesloten wordt. Maar waarom niet gewoon boven aan je pagina 1x aanroepen, en helemaal onderaan 1x sluiten? :)
Ik gok dat hij denkt dat het sneller is.
Maar het tegendeel is waar, het duurt juist langer om de hele tijd connectie te openen en te sluiten dan dat je hem de hele tijd open houdt.

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Als ik me niet vergis moet (hoord? mag?) er aan het einde van een MySQL query een puntkomma staan. Dat php die voor je toevoegd als deze er niet staat is punt 2, maar denk dat de TS er daarom 2 heeft staan. :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • TiSaE
  • Registratie: Juli 2002
  • Laatst online: 21:25
Er staan 2 omdat die code dus 2x uitgevoerd wordt, ik denk zet die er nog even apart bij zodat daar ergens de fout moet zitten......