Avatar billede kagehuset Nybegynder
04. januar 2004 - 19:37 Der er 30 kommentarer og
1 løsning

Sammenligne array med mysql database

Hey

Jeg har et array som jeg gerne vill have sammenlignet med en række navne som er i en mysql database... Jeg går ikke ud fra et mysql kald pr. navn er specielt effektivt, så man ikke hente navnene fra databasen i et array og så sammenligne de 2 arrays?

mvh
Mads
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 19:38 #1
Kan du komme med et eksempel på hvad du mener?
Avatar billede ahv Nybegynder
04. januar 2004 - 19:57 #2
Er det noget ala følgende du søger?

$query = mysql_query("SELECT * FROM table WHERE navn IN (".implode(",",$array_med_navne).")") or die(mysql_error());
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 20:04 #3
'navne' får mig til at tænke på at der skal '...' omkring, ahv ;)
Avatar billede kagehuset Nybegynder
04. januar 2004 - 20:08 #4
Hey

ahv -> Kan godt være jeg spørger dumt, men hvad kommer $query så til at indeholde?

mvh
Mads
Avatar billede ahv Nybegynder
04. januar 2004 - 20:09 #5
Den kommer til at indeholde de navne som passer med navnene i arrayet, udskriv dem ->

while ($row = mysql_fetch_array($query)) {
    echo $row["navn"];
}
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 20:09 #6
Den fx se sådan ud

SELECT * FROM table WHERE navn IN ('Hans','Peter','Kurt')
Avatar billede ahv Nybegynder
04. januar 2004 - 20:13 #7
Ja selvfølgelig skal der '...' omkring :)

$query = mysql_query("SELECT * FROM table WHERE navn IN ('".implode(",",$array_med_navne)."')") or die(mysql_error());
Avatar billede kagehuset Nybegynder
04. januar 2004 - 20:16 #8
Hey

Får en "Unknown table 'peter' in where clause" - peter er det første navn i arrayet med navne...

mvh
Mads
Avatar billede ahv Nybegynder
04. januar 2004 - 20:18 #9
Det var fordi der ikke var singel-apostroffer rundt om som EJ korrekt rettede:

$query = mysql_query("SELECT * FROM table WHERE navn IN ('".implode(",",$array_med_navne)."')") or die(mysql_error());
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 20:19 #10
ahv: det skal jo ikke være SELECT * FROM table WHERE navn IN ('Hans,Peter,Kurt')

Hæng på kagehuset, vent lige til vi siger ok - så kan du prøve
Avatar billede kagehuset Nybegynder
04. januar 2004 - 20:20 #11
Hey igen

Har sat single paranteser på - nu sker der intet...

mvh
Mads
Avatar billede ahv Nybegynder
04. januar 2004 - 20:22 #12
Hvordan ser hele din kode ud nu?
Avatar billede kagehuset Nybegynder
04. januar 2004 - 20:25 #13
Hey

$query = mysql_query("SELECT * FROM base WHERE name IN ('".implode(",",$files)."')") or die(mysql_error());


while ($row = mysql_fetch_array($query)) {
    echo $row["name"];
}
Avatar billede ahv Nybegynder
04. januar 2004 - 20:27 #14
Sikker på der er nogen navne i array'et der passer med dem i tabellen?
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 20:30 #15
vil du sætte '...'-erne rigtig på eller skal jeg, ahv?
Avatar billede kagehuset Nybegynder
04. januar 2004 - 20:38 #16
Hey

Har sat dem på - er lige igang med at checke input... Ser ikke ud til der kommer forbindelse til databasen - har nok lavet en spasserfejl et sted :-)
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 20:41 #17
Du skal ikke lede efter fejl så længe du har: ....WHERE name IN ('".implode(",",$files)."')")
Der er fejlen - vi skal bare finde ud af hvem der ordner det ;)
Avatar billede kagehuset Nybegynder
04. januar 2004 - 20:52 #18
Hey

Så forstår jeg bedre! Hvor skal de da stå så? Syns jeg har prøvet alle steder...

mvh
Mads
Avatar billede ahv Nybegynder
04. januar 2004 - 20:56 #19
$query = mysql_query("SELECT * FROM base WHERE name IN ('".implode("','",$files)."')") or die(mysql_error());
Avatar billede kagehuset Nybegynder
04. januar 2004 - 20:58 #20
Ahh - sådan!

Takker begge to! erikjacobsen - smider du ikke lige et svar så du også kan få en sjat point?

mvh
Mads
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 21:00 #21
Nej, tak,  jeg har ikke lavet noget konstruktivt - kun brokket mig ;)
Avatar billede kagehuset Nybegynder
04. januar 2004 - 21:01 #22
Hov - lige hurtigt - hvis jeg ville have den til at skrive de navne der ikke findes både i databasen og i arrayet, men kun dem som er i arrayet - hint?

mvh
Mads
Avatar billede kagehuset Nybegynder
04. januar 2004 - 21:01 #23
hehe

Fair nok!
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 21:03 #24
Jeg forstår ikke hvad du mener. Et eksempel?
Avatar billede kagehuset Nybegynder
04. januar 2004 - 21:06 #25
Som det er nu er der 4 navne i et array hvoraf 2 af dem pgså er i en database, og takket være ahv smider php nu de 2 som findes i både databasen ud til brugeren... Hvis jeg nu vil have de 2 som ikke er i databasen ud i stedet...

mvh
Mads
Avatar billede ahv Nybegynder
04. januar 2004 - 21:10 #26
Jeg har ikke lige noget forslag.
Avatar billede kagehuset Nybegynder
04. januar 2004 - 21:11 #27
K, men tak alligevel - du får lige nogle point!!
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 21:15 #28
Skitse:

<?

  $a[]='Hans';
  $a[]='Peter';
  $a[]='Kurt';
  $a[]='Julemanden';

  for ($i=0;$i<count($a);$i++) {
    $b[$a[$i]]=1;
  }


  // vi simulerer  select * from tabel where navn in ('Hans','Peter','Kurt','Julemanden')
  // Kun 'Hans' og 'Kurt' er i databasen

    $res[]='Hans';
    $res[]='Kurt';

    for ($i=0;$i<count($res);$i++) {
      $navnfradatabasen=$res[$i];  // simuler udtræk!
      unset($b[$navnfradatabasen]);
    }

  // dem der er i arrayet, men ikke i databasen udskrives
  foreach ($b as $key=>$val) {
    print "$key\n";
  }

?>
Avatar billede kagehuset Nybegynder
04. januar 2004 - 21:32 #29
Hey

Takker - så skulle du jo have haft point alligevel :-)
Avatar billede erikjacobsen Ekspert
04. januar 2004 - 21:35 #30
det der? Det var bare kattekillingerne der dansede rundt på tastaturet
da jeg vendte ryggen til. Tag dig ikke af det ;)
Avatar billede kagehuset Nybegynder
04. januar 2004 - 21:43 #31
hehe

Takker alligevel!

mvh
Mads
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester