login  Naam:   Wachtwoord: 
Registreer je!
 Forum

nakijken of waarde in array zit

Offline Skatelow - 12/10/2011 16:58
Avatar van SkatelowLid Hallo allemaal,
Even een snelle vraag;
hoe kan ik nagaan of een variabele in een array zit, ook als die array maar 1 waarde bezit?

Ik wil namelijk nakijken of de gebruiker lid is van een bepaalde groep, probleem: als gebruiker maar in 1 groep zit krijg ik:
  1. Warning: in_array() [FUNCTION.in-array]: Wrong datatype...

Ik gebruik namelijk de 'In_Array' functie.
Kan iemand helpen?

13 antwoorden

Gesponsorde links
Offline vinTage - 12/10/2011 17:21 (laatste wijziging 12/10/2011 17:26)
Avatar van vinTage Nieuw lid Al bevat de array maar EEN index, dan nog moet in_array true routeneren.

Mits het te controleren 'array' wel een array is natuurlijk 
Offline Skatelow - 12/10/2011 17:28
Avatar van Skatelow Lid dus je moet eerst de 'Array' functie gebruiken?
Offline vinTage - 12/10/2011 17:30
Avatar van vinTage Nieuw lid euh, als je wilt kijken of er iets in een array staat met in_array, dan moet je natuurlijk wel een array hebben..
Jew hebt niet gezegd hoe je dat array maakte..
Offline Skatelow - 12/10/2011 17:31
Avatar van Skatelow Lid
  1. $BerichtGroep = mysql_query ("SELECT groep FROM groepen_berichten WHERE id = '" . $_GET['id'] . "'"); //haal de naam op van de groep waarin dit bericht is gedeelt
  2. $GroepenLid = mysql_query ("SELECT groep FROM groepen_leden WHERE lid = '" . $_SESSION['gebruiker'] . "'"); //haal de namen van de groepen op waar gebruiker lid van is
Offline vinTage - 12/10/2011 17:37
Avatar van vinTage Nieuw lid Dat levert toch geen array op maar een #resource als ik me niet vergis 

  1. $ar = array();
  2. $qry = mysql_query("select....");
  3. while($bla = mysql_fetch_array($qry))
  4. {
  5. //array_push
  6. }
  7.  
  8. //doe iets met $ar
Offline Skatelow - 12/10/2011 17:44
Avatar van Skatelow Lid Kan je dat even uitleggen?
Ik ken de functie Array_push niet 
Offline vinTage - 12/10/2011 17:46
Avatar van vinTage Nieuw lid Nuja, je moet dat niet perse gebruiken, maar je moet gewoon je resultaten in het array proppen, dat gaat oa met push...

Als je het niet kent zoek je het even op he 

$ar[] = $row['veld']; // gaat ook
Offline Skatelow - 12/10/2011 17:48
Avatar van Skatelow Lid Maar als je enkel 1 resultaat hebt, werkt mysql_fetch_array toch niet?
Offline vinTage - 12/10/2011 17:51
Avatar van vinTage Nieuw lid lol waarom niet ? En je kan ook assoc gebruiken ipv array.
Offline WouterJ - 12/10/2011 18:26
Avatar van WouterJ HTML gevorderde Ik zou assoc ook gebruiken i.p.v. een array. Dit is namelijk sneller en bespaart geheugen.

Een SQL query returned een resource(bij een SELECT, SHOW, DESCRIBE of EXPLAIN query of anders true) of false als er iets fout is gegaan. Je kijkt dus eerst of de query geen false returned, als dat niet zo is kun je met de gegevens aan de slag. Met deze gegevens kun je alleen gebruiken door ze te fetchen. Je hebt verschillende fetch methodes (assoc, array, enz.) maar de gene die ik zou gebruiken is assoc. Vervolgens heb je een array gekregen die zo eruit ziet:
  1. [0] => Array(
  2. [veldnaam] => 'veldvalue',
  3. [veldnaam1] => 'veldvalue1'
  4. ),
  5. [1] => Array(
  6. [veldnaam] => 'veldvalue',
  7. [veldnaam1] => 'veldvalue1'
  8. ),
  9. [...] => Array(
  10. ...
  11. )
  12. )

Je ziet dus dat er in de eerste array alle results zijn (als er bij een SELECT bijv. meerdere rijen worden opgehaald) vervolgens is er per result een array met daarin de veldnamen die je ophaalt en de value die ze hebben in de db. Dus stel je haalt de naam op kan je het doen met $mijnArray['naam'].
Om door de eerste array ([0], [1], ...) heen te gaan gebruiken we een while loop. Vervolgens hebben we per result dus de mogelijkheid om alles te doen wat we willen:
  1. $sQuery = "SELECT naam FROM users WHERE id = 1";
  2. $result = mysql_query($sQuery, $connection); // Query uitvoeren
  3.  
  4. if( $result !== false )
  5. { # Als result niet gelijk is aan false, en er dus geen fout is
  6. while( $row = mysql_fetch_assoc($result) )
  7. { # Voor elk resultaat uit het fetchen
  8. echo 'Hallo '.$result['naam'];
  9. }
  10. }
  11. else
  12. { # Helaas er is toch iets misgegaan
  13. // Echo de error
  14. echo 'Er is een fout: '.mysql_error();
  15. }
Offline Maarten - 13/10/2011 22:27
Avatar van Maarten Erelid Nog even aanvullend: mysql_fetch_assoc werkt dus ook met 1 record, dan krijg je ook gewoon een array. Als je echt specifiek maar 1 veld in 1 record zoekt kan je mysql_result gebruiken. Maar voor jouw vraag & toepassing is bovenstaand/vinTage zijn input inderdaad de juiste manier.
Offline Skatelow - 16/10/2011 16:47
Avatar van Skatelow Lid ik heb nu:

  1. <?php
  2. $BerichtGroep = mysql_query ("SELECT groep FROM groepen_berichten WHERE id = '" . $_GET['bericht'] . "'"); //haal de naam op van de groep waarin dit bericht is gedeelt
  3. $GroepenLid1 = mysql_query ("SELECT groep FROM groepen_leden WHERE lid = '" . $_SESSION['gebruiker'] . "'"); //haal de namen van de groepen op waar gebruiker lid van is
  4. $AantalGroepen1 = mysql_query ("SELECT COUNT(groep) FROM groepen_leden WHERE lid = '" . $_SESSION['gebruiker'] . "'");
  5. $AantalGroepen = mysql_result($AantalGroepen1, 0); // het totaal aantal items
  6.  
  7. while ($GroepenLid = mysql_fetch_array($GroepenLid1))
  8. {
  9. echo "Bericht Groep:" . $BerichtGroep;
  10. echo "Groepen van Lid:" . $GroepenLid;
  11.  
  12. if (in_array( $BerichtGroep , $GroepenLid)) //als de gebruiker lid is van de groep waar het bericht in is gedeelt
  13. {
  14. echo "<div style='position: absolute; bottom:20px;'> <a class='linkje' href='Groep.html?groep=" . $_GET['groep'] . "'>Terug naar Groep</a></div>";
  15. echo "<form method='post' action='" . $_SERVER['PHP_SELF'] . "?groep=" . $_GET['groep'] . "'>";
  16. }
  17. ?>


Maar dan krijg ik uit de variabele BerichtGroep 'Resource id #14'
Offline WouterJ - 16/10/2011 19:42
Avatar van WouterJ HTML gevorderde Zucht, zijn mijn reacties onzichtbaar ofzo? Dit is al de 3e keer dat er niks wordt gedaan met de punten die ik aangeef...
- Gebruik GEEN fetch_array maar FETCH assoc
- Nu fetch je ze wel, maar vervolgens gebruik je gewoon op regel 9 de query.
- PHP_SELF is niet veilig, laat de action attribute gewoon leeg.
- Query is lek -> MySQL injection, dit kun je beveiligen door PHP.net: mysql_real_escape_string te gebruiken
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.219s