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.
41 svar · 1 223 visningar · startad av lillebror · sida 2 av 3
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.
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
Det är på $array1 du ska köra din print_r(), det är ju den du hämtar från resultatsetet.
På vad skrivs Fredrik1 ut ?
Det är i vilket fall ingen utskrift från print_r() på $array1.
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++;
}
?>
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?
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
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 ?
Ja det är samma skript. Jag upptäckte att jag hade skrivit fel i variabelnamnet så därför ändrade jag det till $array.
Och vad får du ut när du kör det jag föreslog sist?
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?! :)
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 ?
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!
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.
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?
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...*/ }
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
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?
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?