webForumDet fria alternativet

Får EJ ut variablen ur databasobjektet

41 svar · 1 223 visningar · startad av lillebror · sida 2 av 3

MatteMedlem sedan aug. 20002 975 inlägg
#21

Felmeddelandet säger att det inte finns något index 'memberID' i din $array1.

Gör som tidigare, och kör print_r($array1) inne i while-slingan. Vad skrivs ut.

lillebrorMedlem sedan apr. 20041 597 inlägg
#22
Notice: Undefined variable: array in /xxx/public_html/index.php on line 149
Notice: Undefined index: memberID in /xxx/public_html/index.php on line 150
">Fredrik
MatteMedlem sedan aug. 20002 975 inlägg
#23

Det är på $array1 du ska köra din print_r(), det är ju den du hämtar från resultatsetet.

lillebrorMedlem sedan apr. 20041 597 inlägg
#24

Följande skrivs ut:

Fredrik1

MatteMedlem sedan aug. 20002 975 inlägg
#25

På vad skrivs Fredrik1 ut ?
Det är i vilket fall ingen utskrift från print_r() på $array1.

lillebrorMedlem sedan apr. 20041 597 inlägg
#26

Detta är koden och jag skriver ju ut position 1 för variabeln $array.

<?php 
		$i=0;
		#error_reporting(E_ALL); 
		#ini_set("display_errors", "1"); 
		while($array = mysql_fetch_array($RSobj_usersOnline)) { 
		echo print_r($array[1]); ?>
		<a href="showprofile.php?uid="<?php echo $array['memberID']; ?>"><?php echo $array['username']; ?></a>
		<?php if($i <> ($RSobj_visitors['number']-$RSobj_visitors['guest']-1)) { echo ", "; }
		$i++;
		} 
		?>
aasahMedlem sedan mars 20034 471 inlägg
#27

Jo, men Matte menade nog att du skulle göra print_r på hela arrayen. :) För

Notice: Undefined variable: array in /xxx/public_html/index.php on line 149
Notice: Undefined index: memberID in /xxx/public_html/index.php on line 150

detta säger att du på rad 149-50 använder en array som ej definierats, och att det inte finns något index "memberID" i den. Hur ser rad 149 och 150 ut?

lillebrorMedlem sedan apr. 20041 597 inlägg
#28

Detta är rad 149

echo print_r($array[1]); ?>

Detta är 150:

<a href="showprofile.php?uid="<?php echo $array['memberID']; ?>"><?php echo $array['username']; ?></a>

Så är såg det visst ut i hela arrayen

Array ( [0] => 1 [memberID] => 1 [1] => Fredrik [username] => Fredrik [2] => Läser "Vilka är online". [activity] => Läser "Vilka är online". [3] => 00:30 [datetime] => 00:30 ) 1 Fredrik
MatteMedlem sedan aug. 20002 975 inlägg
#29

Det var så här jag menade:

		$i=0;
		error_reporting(E_ALL); 
		ini_set("display_errors", "1"); 
		while($array = mysql_fetch_array($RSobj_usersOnline)) { 
                          echo "<pre>";
                          print_r($array); 
                          echo "</pre>\n";
?>
		<a href="showprofile.php?uid="<?php echo $array['memberID']; ?>"><?php echo $array['username']; ?></a>
		<?php if($i <> ($RSobj_visitors['number']-$RSobj_visitors['guest']-1)) { echo ", "; }
		$i++;
		}

Ett antal inlägg upp hette din array $array1 istället. Nu är du tillbaka med $array. Är det samma skript hela tiden, eller arbetar du med två olika skript ?

lillebrorMedlem sedan apr. 20041 597 inlägg
#30

Ja det är samma skript. Jag upptäckte att jag hade skrivit fel i variabelnamnet så därför ändrade jag det till $array.

MatteMedlem sedan aug. 20002 975 inlägg
#31

Och vad får du ut när du kör det jag föreslog sist?

lillebrorMedlem sedan apr. 20041 597 inlägg
#32

Följande resultat får jag nu:

Array
(
    [0] => 1
    [memberID] => 1
    [1] => Fredrik
    [username] => Fredrik
    [2] => 
    [activity] => 
    [3] => 12:00
    [datetime] => 12:00
)

Det är ju rätt solklart att memberID innehåller värdet 1, eller?! :)

MatteMedlem sedan aug. 20002 975 inlägg
#33

Ja, och då SKA du också få med det när du skriver ut länken.
Dessutom får du nu inte med 'undefined index' längre ?

lillebrorMedlem sedan apr. 20041 597 inlägg
#34

Matte skrev:

Ja, och då SKA du också få med det när du skriver ut länken.

Vad gör jag för fel eftersom mitt memberID inte skrivs ut om det bevisligen finns i $array?

Matte skrev:

Dessutom får du nu inte med 'undefined index' längre ?

Nej, det är borta.

Så vitt jag kan se så är det heller inget fel i SQL-satsen...

Användarnamnet skrivs ju ut och det ligger ju efter memberID i arrayen!

MatteMedlem sedan aug. 20002 975 inlägg
#35

Du har nu kopplat på alla felmeddelande.
I loopen kör du print_r() på din array, och ditt index och värde finns där.
När du skriver ut ditt index från arrayen får du heller inte 'undefined index'.
Alltså måste värdet skrivas ut!

Skulle du inte få det, så packa ihop din test-tabell (från databasen) tillsammans med skriptet, i en zip-fil, och skicka till mig i ett PM, så får jag testa det hela själv.

lillebrorMedlem sedan apr. 20041 597 inlägg
#36

Har grubblat lite på detta problem ett tag nu. Fick för mig att köra följande sql-sats i phpmyadmin:

SELECT t2.memberID, t2.username, t1.activity, DATE_FORMAT(t1.date_time, '%H:%i') AS datetime FROM tblonline AS t1, tblmember AS t2 WHERE t1.memberID = t2.memberID ORDER BY t1.date_time DESC

Resultat jag får ut kan ni se i den bifogade bilden. Här syns det klart och tydligt att användarnamnet "Fredrik" finns med samt ett memberID som är "1". Vad beror det på att jag inte får ut det i min php-fil när jag kör det i while-satsen?

<?php 
$i=0;
while($array = mysql_fetch_array($RSobj_usersOnline)) { ?>
<a href="showprofile.php?uid="<?php echo $array['memberID']; ?>"><?php echo $array['username']; ?></a>
<?php if($i <> ($RSobj_visitors['number']-$RSobj_visitors['guest']-1)) { echo ","; }
$i++;
}

Det jag reagerar på är att memberID-kolumnen är markerad med en orange-färgad border. Vad talar det om?

mysql.jpg
aasahMedlem sedan mars 20034 471 inlägg
#37

lillebror skrev:

... Det jag reagerar på är att memberID-kolumnen är markerad med en orange-färgad border. Vad talar det om?

Gissningsvis, (har själv aldrig använt phpmyadmin), är det en markering av primärnyckeln i tabellen. Om ID är PRIMARY KEY (vilket verkar rimligt) kan du nog vara rätt säker på att det är orsaken. :)

Vad beror det på att jag inte får ut det i min php-fil när jag kör det i while-satsen?

Hur ser SQL-frågan ut och vad får du för felmeddelande? Har du verkligen hämtat en rad från Visitor-resultatet också? Det borde inte se ut något sånt här:

<?php 
$i=0;
$visitorInfo = mysql_fetch_array($RSobj_visitors);
if ($visitorInfo !== FALSE) {
  while($array = mysql_fetch_array($RSobj_usersOnline)) { ?>
    <a href="showprofile.php?uid="<?php echo $array['memberID']; ?>">
    <?php echo $array['username']; ?></a>
    <?php if($i <> ($visitorInfo['number']-$visitorInfo['guest']-1)) { 
    echo ","; }
  $i++;
  }
}
else { /*Ta hand om felet...*/ }
lillebrorMedlem sedan apr. 20041 597 inlägg
#38

Vad är det för fel jag ska ta hand om nu när du gjort om koden? While-satsen skriver ju ut användarnamnet korrekt, det som saknas är ett memberID som finns där men som inte skrivs ut av någon outgrundlig anledning! :OO

aasahMedlem sedan mars 20034 471 inlägg
#39

lillebror skrev:

Vad är det för fel jag ska ta hand om nu när du gjort om koden? While-satsen skriver ju ut användarnamnet korrekt, det som saknas är ett memberID som finns där men som inte skrivs ut av någon outgrundlig anledning! :OO

Va? :q Det ända jag la till var:

$visitorInfo = mysql_fetch_array($RSobj_visitors); 
if ($visitorInfo !== FALSE) { 
}
else {}

Resten är kopierat från din kod. Vad menar du med "gjort om"?

Felet som kan uppstå är om något strular i den (andra) SQL-fråga som plockar ut $RSobj_visitors. Med tanke på din namngivning av denna variabel och den namngivning du tillämpar på resten, så undrar jag om du plockat ut en resultat-rad ur detta visitors-"result set" eller ej?

lillebrorMedlem sedan apr. 20041 597 inlägg
#40

Nu upptäckte jag en intressant sak.

Följande while-sats:

$i=0;
		while($array = mysql_fetch_array($RSobj_usersOnline)) { ?>
		<a href="showprofile.php?uid="<?php echo $array['memberID']; ?>"><?php echo $array['username']; ?></a>
		<?php if($i <> ($RSobj_visitors['number']-$RSobj_visitors['guest']-1)) { echo ","; }
		$i++;
		}

...la jag högst upp på sidan för att se om det möjligtvis kunde vara något innan i koden som ställde till det för mig. Nu blev det ingen skillnad. Det blev det däremot när jag tog bort lite från ovanstående kod så att det blev enligt koden nedan. Nu får jag ut ett memberID som är lika med 1. :)

$i=0;
		while($array = mysql_fetch_array($RSobj_usersOnline)) {
		echo "MemberID: ".$array['memberID'];
		if($i <> ($RSobj_visitors['number']-$RSobj_visitors['guest']-1)) { echo ","; }
		$i++;
		}

Min slutsats är att felet som gör att memberID aldrig skrivs ut ligger i följande kod:

 <a href="showprofile.php?uid="<?php echo $array['memberID']; ?>"><?php echo $array['username']; ?></a>

Verkar det rimligt?

144 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)