[PHP/MySQL] Variablen krijgen waardes niet mee

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Aan de hand van dat andere gesloten topic

Het gaat om deze code, het eerste deel werkt prima, het voornamelijk om het onderste gedeelte.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?

require_once($_SERVER['DOCUMENT_ROOT']."/scripts/util.php");
$sql = new MySQL_class;
$sql->Create("******");

$Queryfid = ("SELECT forum_id FROM auth_access WHERE auth_access.group_id = 18"); 

while (list ($data) = mysql_fetch_row($result)) 

$blaat[] = $data; 
} 

print_r($blaat);


Dit werkt in principe prima, ik krijg keurig een array terug met daarin de individuele waardes, Deze waardes gebruik ik in de volgende query om een select te maken.

PHP:
1
2
3
4
$query = ("SELECT topics.topic_title, topics.topic_poster, topics.topic_time, topics.topic_id, topics.forum_id, users.user_id, users.username 
FROM topics 
INNER JOIN users ON topics.topic_poster = users.user_id 
WHERE forum_id = '$blaat' ORDER BY topic_id DESC LIMIT 0, 5");


En in de volgende code gaat het dus fout. Het gaat om een code die eerder door iemand anders is gemaakt, en die ik moet aanpassen. Het probleem is dus dat hij de variablen niet meekrijgt, terwijl dit stukje van de code niet is aangepast. Dit komt dus rechtstreeks uit de orginele file waar het wel werkt. Maar ik heb volgens mij niet in de voorstaande code aangepast waardoor het nu niet zou moeten werken.

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
$result = mysql_query($query); 
while (list ($lijst) = mysql_fetch_array($result)) 
{ 

$totaal_berichten = $sql->QueryItem("SELECT COUNT(*) FROM topics"); 


for ($i = 0; $i < $sql->rows; $i++) 
{ 

    $sql->Fetch($i); 
    $topic_title = $sql->data[topic_title]; 
    $username = $sql->data[username]; 
    $topic_time = $sql->data[topic_time]; 
    $topic_id = $sql->data[topic_id]; 
    $forum_id = $sql->data[forum_id]; 

    $topic_title = maxChar($topic_title, 54); 
    $username = maxChar($username, 30); 
    $datum = date('H:i d-m-Y', ($topic_time)); 
    echo ("<br>  <a href='/forum/viewtopic.php?topic=".$topic_id."&forum=".$forum_id."&0&link=2'>".$topic_title."</A><br>"); 
    echo ("  door <b>".$username."</b> om ".$datum."<br>"); 

}

if ($totaal_berichten == 0 )

{
    echo ("<br><p class='subkop2' align='left'>&nbsp;&nbsp;Er zijn nog geen forumberichten geplaatst.</p>");
}
?> 


Het zal uiteindelijk wel iets heel stoms zijn, maar ben hier nu al een paar dagen mee bezig en kom er niet echt uit.

[ Voor 11% gewijzigd door Verwijderd op 06-10-2003 16:49 . Reden: stukje code vergeten ]


Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

WHERE forum_id = '" . $blaat . "' ORDER

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
helaas dat werkt ook niet. Maar daar ligt het probleem ook niet. Als ik een waarde voor $blaat invul, bijvoorbeeld de waarde 1, die gewoon valide is en dus een waarde terug zou moeten geven doet hij het ook niet.

Acties:
  • 0 Henk 'm!

Verwijderd

André schreef op 06 October 2003 @ 16:44:
WHERE forum_id = '" . $blaat . "' ORDER
enkele quotes?
code:
1
WHERE forum_id = " . $blaat . " ORDER

Acties:
  • 0 Henk 'm!

Verwijderd

is $blaat een enkele waarde? en een integer?

[ Voor 23% gewijzigd door Verwijderd op 06-10-2003 16:58 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
nee, $blaat zijn meerdere waardes, 1 cijferige en 2 cijferige waardes. En het is geen integer.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
misschien nog even een waardevolle toevoeging, de laatste query doet het wel gewoon als ik hem rechtstreek op de database uitvoer met een standaard waarde.

deze query dus
PHP:
1
2
3
4
5
6
7
<?
$query = ("SELECT topics.topic_title, topics.topic_poster, 
topics.topic_time, topics.topic_id, topics.forum_id, users.user_id, users.username 
FROM topics 
INNER JOIN users ON topics.topic_poster = users.user_id 
WHERE forum_id = '$blaat' ORDER BY topic_id DESC LIMIT 0, 5");
?> 

[ Voor 5% gewijzigd door Verwijderd op 06-10-2003 20:24 . Reden: layout verneukerij aangepast ]


Acties:
  • 0 Henk 'm!

  • MichelVH
  • Registratie: Oktober 2001
  • Laatst online: 16-09 20:54
Tsjah, een array rechtstreeks in een query stoppen werkt natuurlijk niet :)
PHP:
1
2
3
4
5
6
7
8
9
10
foreach ( $blaat as $forum_id )
{
    $sql_forum .= ( !empty($sql_forum) ? ',' : '' ) . $forum_id;
}

$query = ("SELECT topics.topic_title, topics.topic_poster, 
topics.topic_time, topics.topic_id, topics.forum_id, users.user_id, users.username 
FROM topics 
INNER JOIN users ON topics.topic_poster = users.user_id 
WHERE forum_id IN ($forum_sql) ORDER BY topic_id DESC LIMIT 0, 5");
Dit stopt (als het goed is, niet getest) de forum_id's in blaat in je query.

Don't be afraid of the dark, be afraid of what it hides


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb het even geprobeerd maar deze code geeft alleen de laatste id weer.

Acties:
  • 0 Henk 'm!

Verwijderd

$forum_sql != $sql_forum

ik denk dat dat het probleem wel eens zou kunnen zijn...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
yep dat had ik inderdaad al gezien ja, heb er nu dit van gemaakt.
PHP:
1
2
3
4
$query = ("SELECT topics.topic_title, topics.topic_poster, topics.topic_time, topics.topic_id, 
topics.forum_id, users.user_id, users.username FROM topics INNER JOIN users ON 
topics.topic_poster = users.user_id  WHERE topics.forum_id = '" . $sql_forum[0]. "' OR '" . 
$sql_forum[2] ."' ORDER BY topic_id DESC LIMIT 0, 5");

Probleem is alleen hij dat alles weergeeft uit detabel ipv waar forum_id 1 of 3 is. Als ik alleen maar 1 variable in de query stop dan doet hij het wel. Ik denk dus dat ik helemaal fout bezig ben. Als ik gewoon $sql_forum doe dan probeerd ie de waarde 1,3 te vinden, ook als ik het tussen haakjes zet en hij op '1' of '3' zoekt werkt het niet. ik vermoed dat ik hem in een loop moet zetten, of zit er nu helemaal naast?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok volgens mij gaat het met de opzet van deze code niet lukken. Misschien dat jullie enige ideeen hebben over hoe ik de code beter kan opstellen om mijn resultaten te krijgen. Dit is de database nagemaakt in Access.

Afbeeldingslocatie: http://picserv.beyond-reality.nl/getpicture.php?id=384162&check=132b9a
Het gaat om een index pagina waar de gebruikers onder andere een preview kunnen zien van de laatste 5 geposte fora topics. Het gaat hier dus uitsluitend om de code voor die fora preview.

Elke user heeft een group_id toegewezen. Er zijn 4 verschillende group_id's. Bij elk group_id horen bepaalde sub fora. Het is uiteindelijk de bedoeling dat na het inloggen van de gebruiker hij de laatste 5 topics uit zijn fora ziet, en niet de fora van de andere group_id's.

Via de sessie krijgt het systeem door bij welke group_id de gebruiker hoort.
Deze kan hij vergelijken met de group_id's in de tabel auth_access, hierna kan hij de group_id's weer naast forum_id leggen in auth_access. Via die forum_id kan hij uit de tabel forums de rest van de gegevens van de topics halen. En uiteindelijk moet hier in php een preview uit gegenereerd worden.

Wat is in dit geval wijsheid?

Acties:
  • 0 Henk 'm!

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 08:38
TheDark schreef op 06 October 2003 @ 20:58:
Tsjah, een array rechtstreeks in een query stoppen werkt natuurlijk niet :)
PHP:
1
2
3
4
5
6
7
8
9
10
foreach ( $blaat as $forum_id )
{
    $sql_forum .= ( !empty($sql_forum) ? ',' : '' ) . $forum_id;
}

$query = ("SELECT topics.topic_title, topics.topic_poster, 
topics.topic_time, topics.topic_id, topics.forum_id, users.user_id, users.username 
FROM topics 
INNER JOIN users ON topics.topic_poster = users.user_id 
WHERE forum_id IN ($forum_sql) ORDER BY topic_id DESC LIMIT 0, 5");
Dit stopt (als het goed is, niet getest) de forum_id's in blaat in je query.
Dan kun je er nog beter zoiets van maken:

PHP:
1
2
3
4
5
$query = "SELECT topics.topic_title, topics.topic_poster, 
topics.topic_time, topics.topic_id, topics.forum_id, users.user_id, users.username 
FROM topics 
INNER JOIN users ON topics.topic_poster = users.user_id 
WHERE forum_id IN (" . implode(",", $blaat) . ") ORDER BY topic_id DESC LIMIT 0, 5";

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
wow hij doet et tnx :)
Pagina: 1