Ik zit met een probleem, als ik deze pagina in een include laat werken, dan doet het niks. Doe ik hem appart, een exclude, runnen, dan werkt het wel.
Hoe kan dat?

newuseradd.php
<?php

$username = $_GET['username'];
$password = $_GET['password'];
$key = $_GET['key'];
$name = $_GET['name'];
$email = $_GET['email'];
$level = $_GET['level'];

$sql = 'SELECT * FROM AdminUsers';
$result = mysqli_query($connect, $sql);
$details = mysqli_fetch_all($result, MYSQLI_ASSOC);
mysqli_free_result($result);
mysqli_close($connect);

foreach($details as $detail) {
if($username == $detail['Username']) {
echo "<tr><td colspan='7'>Username already in use!</td></tr>";
if($name == $detail['Name']) {
echo "<tr><td colspan='7'>Name already in use!</td></tr>";
if($email == $detail['email']) {
echo "<tr><td colspan='7'>Email already in use!</td></tr>";
}
}
} else {
$query = 'INSERT INTO AdminUsers (Username, Passwd, LoginKey, Name, email, Level) VALUES ('.$username.', '.md5($password).', '.$key.', '.$name.', '.$email.', '.$level.')';
$result = mysqli_query($connect, $query);
echo "<tr><td>New User added</td></tr>";
}

}

?>
Dit is de code en werkt wel als ik hem op de achtergrond laat werken, maar als hij door een include wordt aangeroepen, werkt hij niet. Alle variable staan goed, dus daar is niks mis mee.
PS: bij de exclude laadt ik wel de database.php config in
Arno van Zanten op 05/06/2022 18:15:14

welke code zou ik dan moeten snoeien?

Wat overbodig is. Allereerst die hele berg aan includes. Dan kan je heel HTML wegsnoeien.
En kijk ook welke scripts ergens betrekking op hebben.

Want de newuseradd is belangrijk. die moet controleren of de user niet al bestaat.

Uiteindelijk wel, maar omdat het includeren niet werkt is dit een bijzaak. Dus dit kan je ook gerust wegsnoeien.

Als het toevoegen niet werkt, vertel dan WAT er niet werkt, en WAT er gebeurt?

Laatste gedeelte waar het niet werkt. ik heb er een echo output aangemaakt, maar hij raakt niet door de $query heen en ik zie de fout niet

<?php
echo "<tr><td colspan='7'>Input new user</td></tr>";

$query = 'INSERT INTO AdminUsers
(Username, Passwd, LoginKey, Name, email, Level)
VALUES
("'.$username.'", "'.md5($password).'", "'.$key.'", "'.$name.'", "'.$email.'", "'.$level.'")';

$result = mysqli_query($connect, $query);

echo "<tr><td colspan='7'>".$query."</td></tr>";
?>
echo eens direct na je $query string de $query variabele, dan zie je wat je query is die uitgevoerd wordt.

- Ik zie dat je wel mysqli_real_escape-string() mist om je query te beschermen. Pas deze toe
- Bouw een controle op $result of deze false is. In dat geval toon je mysqli_error($conn), en anders geef je de uitvoer aan.
Krijg ik ook niks te zien helaas

<?php
echo "<tr><td colspan='7'>Input new user</td></tr>";

$query = 'INSERT INTO AdminUsers
(Username, Passwd, LoginKey, Name, email, Level)
VALUES
("'.$username.'", "'.md5($password).'", "'.$key.'", "'.$name.'", "'.$email.'", "'.$level.'")';
echo "<tr><td colspan='7'>".$query."</td></tr>";
$result = mysqli_query($connect, $query);

echo "<tr><td colspan='7'>".$query."</td></tr>";

if(mysqli_query($connect, $query)) {
echo "<br>Record Updated Succesfully";
} else {
echo "<br>Error Updating record";
}
echo "<tr><td>New User added</td></tr>";
?>

[size=xsmall]Toevoeging op 05/06/2022 18:59:49:[/size]

na de echo input new user, blijft hij hangen.
Dan zal er wat wat eerder in je code iets stuk zijn.
Je zou met deze code minimaal de inhoud van $query moeten zien.
De gehel code werkt in princiep wel, want de controlle doet hij.
Als de gebruiker niet bestaat, gaat hij naar de insert toe en daar blijft hij steken.

<?php

$username = $_POST['username'];
$password = $_POST['password'];
$key = $_POST['key'];
$name = $_POST['name'];
$email = $_POST['email'];
$level = $_POST['level'];

$sql = 'SELECT * FROM AdminUsers';
$result = mysqli_query($connect, $sql);
$details = mysqli_fetch_all($result, MYSQLI_ASSOC);
mysqli_free_result($result);
mysqli_close($connect);

foreach($details as $detail) {
if($username == $detail['Username']) {
echo "<tr><td colspan='7'>Username already in use!</td></tr>";
if($name == $detail['Name']) {
echo "<tr><td colspan='7'>Name already in use!</td></tr>";
if($email == $detail['email']) {
echo "<tr><td colspan='7'>Email already in use!</td></tr>";
}
}
} else {
echo "<tr><td colspan='7'>Input new user</td></tr>";

$query = 'INSERT INTO AdminUsers
(Username, Passwd, LoginKey, Name, email, Level)
VALUES
("'.$username.'", "'.md5($password).'", "'.$key.'", "'.$name.'", "'.$email.'", "'.$level.'")';

echo "<tr><td colspan='7'>".$query."</td></tr>";

$result = mysqli_query($connect, $query);

echo "<tr><td colspan='7'>".$query."</td></tr>";

if(mysqli_query($connect, $query)) {
echo "<br>Record Updated Succesfully";
} else {
echo "<br>Error Updating record";
}
echo "<tr><td>New User added</td></tr>";
}
}
?>
Arno van Zanten op 05/06/2022 18:58:45

na de echo input new user, blijft hij hangen.


Wat is hangen? Blauw scherm? Blijft het resfreshen? Bevriest je PC?

Echt, wees gewoon eens duidelijk. Zeg gewoon gedetailleerd mogelijk wat je op je scherm ziet, en wat er gebeurt.
Ik krijg alleen de echo van Input new user endat was alles wat ik te zien krijg, de rest van de code geeft hij niet weer
Dat is wat anders dan 'hangen' of 'steken' ;-)
Je zou dan ook moeten zien wat de query doet:

Record Updated Succesfully of Error Updating record

Ook raad ik aan om bovenaan je script dit te plaatsen:

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
?>


Je wilt tenslotte ALLE error's zien.
Dit kreeg ik terug van de code die je mij gaf
Fatal error: Uncaught Error: mysqli object is already closed in /www/test/admin/inc/newuseradd.php:38 Stack trace: #0 /www/test/admin/inc/newuseradd.php(38): mysqli_query(Object(mysqli), 'INSERT INTO Adm...') #1 /www/test/admin/inc/view.php(67): include('/www/test/admin...') #2 /www/test/admin/index.php(12): include('/www/test/admin...') #3 {main} thrown in /www/test/admin/inc/newuseradd.php on line 38

Reageren