Krijg mijn id niet terug van $row['id'];

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis  van DUin

Dennis van DUin

06/04/2015 18:03:10
Quote Anchor link
Beste mensen van dit behulpzame forum.

Allereerst bedankt voor de fijne en snelle reacties, waarbij iedereen heel behulpzaam overkomt!

Ik ben bezig om weer eens iets nieuws te proberen in php en mysql waarbij ik alles zelf aan het schrijven ben. Ik probeer mijn vragen wel op internet op te zoeken en meestal vind ik hier een antwoord, maar nu lukt het niet.

Ik probeer in mijn php bestand het id van de ander terug te geven met de volgende code:

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
<?php

error_reporting(E_ALL);  // geef alle errors weer.

$host =  // locale database
$username =  // de naam van je database
$password =  // het wachtwoord in erin te komen meestal leeg
$database =  // De naam van je databse
$idd = $_GET['idd'];  // de variable die je uit de URL haalt.              
$level = $_GET['level'];  // de variable die je uit de URL haalt.              


// Create connection

$conn = mysqli_connect($host, $username, $password, $database);
// Check connection

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}



$sql = "SELECT * FROM players WHERE 'level' = '$level' AND NOT 'id' = '$idd'";


if ($result=mysqli_query($conn, $sql)) {

while($row = mysqli_fetch_row($result))
{

echo "1|" . $row['id'];
}

}

else
{
echo "0";
}


mysqli_close($conn);
?>


Waarom id niet gelijk mag zijn aan $idd is omdat je niet tegen dezelfde persoon moet kunnen vechten. (Het is gekoppeld aan een spelletje die ik programmeer. Nu probeer ik met de echo "1|" . $row['id']; het id van de ander terug te sturen, maar het bericht blijft constant leeg.

Als ik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
while($row = mysqli_fetch_row($result))
{
echo "1|" . $row['id'];
}
eruit haal en dat verander in
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "1";
dan krijg ik wel de 1 binnen. De fout zal hem dus zitten in while($row = mysqli_fetch_row($result)) maar ik weet niet wat ik fout doe...

Kan iemand mij helpen, waardoor ik de row van de tabel terug kan sturen?


Groetjes,
Dennis
Gewijzigd op 06/04/2015 19:14:26 door Dennis van DUin
 
PHP hulp

PHP hulp

25/11/2024 00:59:23
 
Thomas van den Heuvel

Thomas van den Heuvel

06/04/2015 18:22:55
Quote Anchor link
fetch_row geeft een numeriek array terug. terwijl je de key "id" gebruikt. Dat zal niet werken.

Gebruik fetch_assoc, dat werkt waarschijnlijk beter.

EDIT: je mist ook
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
ini_set('display_errors', 'stdout');
?>

error_reporting geeft aan wat voor errors je wilt zien, display_errors geeft aan waar je deze wilt zien, als je een van de twee niet definieert heb je grote kans dat fouten niet (of niet op je scherm, maar elders) worden gemeld.

Als je display_errors toevoegt krijg je waarschijnlijk de foutmelding "notice: undefined index "id" on line xyz".
Gewijzigd op 06/04/2015 18:25:46 door Thomas van den Heuvel
 
Dennis  van DUin

Dennis van DUin

06/04/2015 18:27:00
Quote Anchor link
Dan heb ik dus:

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
$sql = "SELECT * FROM players WHERE 'level' = '$level' AND NOT 'id' = '$idd'";


if ($result=mysqli_query($conn, $sql)) {

while($row = $result->fetch_assoc()){
echo "1|" . $row['id'];
}

}
else
{
echo "0";
}


Me berichtje blijft leeg...? Ik ken de functie die jij geeft niet dus misschien doe ik iets fout...


Edit:
Ik heb ook de error toegevoegd maar ik krijg niks te zien:

Link:

http://onlineapp.altervista.org/valaan.php?idd=1&level=1
Gewijzigd op 06/04/2015 18:33:48 door Dennis van DUin
 
Thomas van den Heuvel

Thomas van den Heuvel

06/04/2015 18:37:54
Quote Anchor link
Uh, weet je zeker dat de query resultaten oplevert? Wat geeft $result->num_rows terug?

De constructie AND NOT 'id' = '$idd' is nogal vreemd?

Zou dit niet AND id <> '$idd' moeten zijn ofzo?
(belangrijk: de KOLOMNAAM moet NIET tussen quotes)
Daarnaast pakt ie de NOT van een niet-lege string, die je vervolgens met een integer vergelijkt, dit zal vrijwel zeker valideren tot "false" en een query met ... AND false ... levert nooit iets op.

Ook controleer je nergens of de query fouten oplevert.

Retourneert $result toevallig false?

EDIT: mijn malware programma blokkeert je website :).
Gewijzigd op 06/04/2015 18:41:44 door Thomas van den Heuvel
 
Dennis  van DUin

Dennis van DUin

06/04/2015 18:49:22
Quote Anchor link
Als ik dit ervan maak:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$sql = "SELECT * FROM players WHERE 'level' = '$level' AND id <> '$idd'";


if ($result=mysqli_query($conn, $sql)) {

$rowcount = $result->num_rows;
echo $rowcount;
}
 
else
{
echo "5";
}


Da krijg ik als echo 0. Dus rowcount is 0...

Screen van me databse:
Afbeelding

Edit:
Kort gezegd wat ik wil bereiken is dat het script een id terug stuurt van iemand met hetzelfde level als je binnen krijgt bij de get. Maar het id mag niet hetzelfde zijn als het id dat bij de get binnen komt.

En wat bedoel je hiermee?
Ook controleer je nergens of de query fouten oplevert.


Groetjes,
Dennis
Gewijzigd op 06/04/2015 19:02:03 door Dennis van DUin
 
Thomas van den Heuvel

Thomas van den Heuvel

06/04/2015 19:17:24
Quote Anchor link
Je maakt bij level dezelfde vergissing. Als je quotes om een kolomnaam zet verander je deze in een string.

met
WHERE '<kolom>' = '<getal>'
vergelijk je de string '<kolom>' met "getal" '<getal>'
Dit levert nooit iets op...

met
WHERE <kolom> = '<getal>'
vergelijk je de tabel-kolom <kolom> met "getal" '<getal>'.

En "getal" is in feite een string met een numerieke waarde...
 
- SanThe -

- SanThe -

06/04/2015 19:24:14
Quote Anchor link
WHERE 'level' = '$level'

Je vergelijkt de tekst level met de inhoud van $level.
 
Dennis  van DUin

Dennis van DUin

06/04/2015 20:34:37
Quote Anchor link
Onwijs bedankt! Nu werkt het helemaal goed! Ik heb alleen nog 1 vraag, nu kiest hij steeds de eerste uit de database, maar dit moet random gebeuren kan dat ook?

Groetjes,
Dennis
 
Thomas van den Heuvel

Thomas van den Heuvel

06/04/2015 20:35:36
Quote Anchor link
ORDER BY RAND() LIMIT 1
?
 
Dennis  van DUin

Dennis van DUin

06/04/2015 21:07:06
Quote Anchor link
Onwijs bedankt! Nu werkt alles helemaal goed! RAND() is weer een nieuwe functie voor mij dus heb hem meteen even opgezocht op internet!

Groetjes,
Dennis
 



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.