Avatar billede pct Nybegynder
25. juni 2009 - 10:28 Der er 11 kommentarer og
1 løsning

Tomt array

Jeg har denne stump kode, som ikke fungerer efter hensigten. Array'et er simpelthen tomt. Jeg bruger en næsten identisk kode tidligere i scriptet, den virker efter hensigten.
Er der nogen der kan se nogle åbenlyse fejl?

//Hent grupper fra shop
$GrpArray = array();
$GrpQuery  = "SELECT ShopId, PriGr, SekGr FROM Groups LIMIT 10;";
$GrpResultat = mysql_query($GrpQuery) or die(mysql_error());

while ($row = mysql_fetch_assoc($GrpResultat)) {
  array_push($GrpArray, array($row2['ShopId'], $row2['PriGr'], $row2['SekGr']));
  echo "<br />Id: ".$row['ShopId']." Pri: ".$row['PriGr']." Sek: ".$row['SekGr']."<br />";
  print_r(array_keys($GrpArray));
}

Per :o)
Avatar billede j4k0b Nybegynder
25. juni 2009 - 11:00 #1
Og du er sikker på at din while løkke overhovedet bliver løbet igennem?

Hvorfra kommer $row2? Skulle du ikke bruge $row i stedet? (på samme linje som array_push)
Avatar billede pct Nybegynder
25. juni 2009 - 12:56 #2
Hermed hele koden (kogt ned til det konkrete):

<?php
require("inc/init.inc");
require("inc/connect_my.php");

function recursive_array_search($needle,$haystack) {
    foreach($haystack as $key=>$value) {
        $current_key=$key;
        if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
            return $current_key;
        }
    }
    return false;
}


//connect to database
$conn2 = mysql_connect('localhost', $MyUsr, $MyPsw);
if (!$conn) {
  die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db("CCpro", $conn2);
if (!$db_selected) {
  die ('Can\'t use db : ' . mysql_error());
}

//Hent ProduktId fra shop
$IdArray = array();
$IdQuery  = "SELECT ProductID, ProductNumber FROM shop_export_varenr LIMIT 10;";
$IdResultat = mysql_query($IdQuery) or die(mysql_error());

while ($row = mysql_fetch_assoc($IdResultat)) {
  array_push($IdArray, array($row['ProductID'], $row['ProductNumber']));
}

$KeyId = recursive_array_search('95969365444',$IdArray);
echo "<br /> tallet er: $KeyId<br />";
echo "Id: ".$IdArray[$KeyId][0]."<br />";
echo "------------------------ Koden virker hertil :) ------------------------<br />";

//Hent grupper fra shop
$GrpArray = array();
$GrpQuery  = "SELECT ShopId, PriGr, SekGr FROM Groups LIMIT 10;";
$GrpResultat = mysql_query($GrpQuery) or die(mysql_error());

while ($row = mysql_fetch_assoc($GrpResultat)) {
  array_push($GrpArray, array($row2['ShopId'], $row2['PriGr'], $row2['SekGr']));
  echo "<br />Id: ".$row['ShopId']." Pri: ".$row['PriGr']." Sek: ".$row['SekGr']."<br />";
  print_r($GrpArray);
}
echo "<br />------------------------ Dette array er tomt :( ------------------------<br />";

?>
Avatar billede j4k0b Nybegynder
25. juni 2009 - 13:10 #3
Kan ikke rigtig bruge det til noget.. :-)

Men lad mig spørge på en anden måde; Giver din SQL nogle resultater eller ej?

Og igen, bør du ikke rette $row2 til $row? Jeg kan ikke se $row2 nogen steder, ud over i linjen med array_push()
Avatar billede pct Nybegynder
25. juni 2009 - 15:50 #4
Jeg har prøvet med row, den eneste grund til jeg skrev row2 er at jeg brugte row i den i 'Hent ProduktId fra shop' tidligere i koden.

Output'et fra linien: echo "<br />Id: ".$row['ShopId']." Pri: ".$row['PriGr']." Sek: ".$row['SekGr']."<br />";
Er som forventet. F.eks: Id: 2598 Pri: 18 Sek: 272

Per :o)
Avatar billede majbom Novice
25. juni 2009 - 20:18 #5
så hvis du ændrer:

array_push($GrpArray, array($row2['ShopId'], $row2['PriGr'], $row2['SekGr']));

til:

array_push($GrpArray, array($row['ShopId'], $row['PriGr'], $row['SekGr']));

er arrayet stadig tomt?
Avatar billede pct Nybegynder
29. juni 2009 - 08:26 #6
Ja desværre :(

Per :o)
Avatar billede majbom Novice
29. juni 2009 - 10:17 #7
prøv lige at kør den her kode:

//Hent grupper fra shop
$GrpArray = array();
$GrpQuery  = "SELECT ShopId, PriGr, SekGr FROM Groups LIMIT 10;";
$GrpResultat = mysql_query($GrpQuery) or die(mysql_error());

while ($row = mysql_fetch_assoc($GrpResultat)) {
  array_push($GrpArray, array($row['ShopId'], $row['PriGr'], $row['SekGr']));
  echo "<br />Id: ".$row['ShopId']." Pri: ".$row['PriGr']." Sek: ".$row['SekGr']."<br />";
  print_r($GrpArray);
}
Avatar billede pct Nybegynder
29. juni 2009 - 10:31 #8
Det man bliver blind på først er øjnene :)
Havde overset row i linien med:
"while ($row = mysql_fetch_assoc($GrpResultat)) {"

Læg et svar

Per :o)
Avatar billede majbom Novice
29. juni 2009 - 10:42 #9
kommer her - synes dog at j4kob skal have halvdelen da han også kom med noget nær samme spørgsmål/hint
Avatar billede pct Nybegynder
29. juni 2009 - 16:32 #10
j4kob skriv et svar :)
Avatar billede majbom Novice
30. juni 2009 - 08:18 #11
-> pct - du skulle ikke have accepteret mit svar før j4kob havde lagt et også...

jeg har oprettet et spørgsmål her: http://www.eksperten.dk/spm/879645 til dig j4kob :)

tak for point :)
Avatar billede pct Nybegynder
30. juni 2009 - 08:40 #12
Typisk, tror det er godt jeg snart har ferie :)
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