Avatar billede xpresand Nybegynder
06. maj 2007 - 10:28 Der er 21 kommentarer og
1 løsning

Hjælp til at gemme IP-adresser i et array

Hej, jeg har denne kode, og den henter IP-adresserne fra databasen Ipadresser og så tjekker den om Ip-adressen findes i en anden tabel.

Men jeg har ikke kunne fået den til at virker. Og jeg har fået at vide at efter linien

$q = mysql_query("SELECT * FROM Ipadresser ORDER BY Id") or die(mysql_error());

skal jeg lave et gennemløb, der gemmer alle IP-adresser i et array. Men jeg ved ikke hvordan man gør, så hvis nogen gang at hjælpe ville det være dejligt..

Her er min kode:
<?
include'connect.php';
?>


<?php

//henter ip adresser
$q = mysql_query("SELECT * FROM Ipadresser ORDER BY Id") or die(mysql_error());
$r = mysql_fetch_assoc($q);

//henter beskeder
$query = mysql_query("SELECT * FROM forumskriv ORDER BY Id") or die(mysql_error());
while($row = mysql_fetch_assoc($query))
{
if(in_array($row["ip"], $r))
{
echo "<tr>

                  <td height='46'  align='left' bordercolor='#000000'><br />

                      Navn: $navn <br />
<img src='http://annapihl.frac.dk/billeder/online.jpg' alt='$navn er online'>
                      <br /></td>

                  <td align='left' bordercolor='#000000'>$tekst<br><br>Tilf&oslash;jet den: $dato</td>

                </tr><br><br>--------------------------------------------------------";
}
else
{
echo"
<tr>

                  <td height='46'  align='left' bordercolor='#000000'><br />

                      Navn: $navn <br />$a
<img src='http://annapihl.frac.dk/billeder/offline.jpg' alt='$navn er offline'>
                      <br /></td>

                  <td align='left' bordercolor='#000000'>$tekst<br><br>Tilf&oslash;jet den: $dato</td>

                </tr><br><br>--------------------------------------------------------";}
?>



<?
$hvem = mysql_query("SELECT * FROM forumskriv ORDER BY Id") or die(mysql_error());
while ( $a = mysql_fetch_assoc($hvem))
$ip = $row[Ip];
$tekst = $row[tekst];
$navn = $row[navn];
$dato = $row[dato];

}
?>
Avatar billede coderdk Praktikant
06. maj 2007 - 11:46 #1
Prøv at rette:

$hvem = mysql_query("SELECT * FROM forumskriv ORDER BY Id") or die(mysql_error());
while ( $a = mysql_fetch_assoc($hvem))
$ip = $row[Ip];
$tekst = $row[tekst];
$navn = $row[navn];
$dato = $row[dato];
}

til:

$ip = array();
$hvem = mysql_query("SELECT * FROM forumskriv ORDER BY Id") or die(mysql_error());
while ( $a = mysql_fetch_assoc($hvem))
$ip[] = $row[Ip];
$tekst = $row[tekst];
$navn = $row[navn];
$dato = $row[dato];
}

Så er $ip et array med IP-adresser.
I øvrigt bør du bruge ' eller " omkring indeknavnene, i.e. $row['tekst'] :)
Avatar billede xpresand Nybegynder
06. maj 2007 - 11:48 #2
Okay, tak for svaret. Jeg ved dog ikke om din kode virker, da L**** frac.dk er nede.
Men skal nok skrive tilbage når jeg ved det :)
Avatar billede xpresand Nybegynder
08. maj 2007 - 08:09 #3
coderdk, det ændre ikke noget det du gjorde. Og har lige fundet ud af at den ikke henter IP-adresserne ud af databasen via $ip[] = $row['Ip'];

Du kan evt kigge på denne side www.annapihl.frac.dk/status.php og så nederst på side, der burde være "Jonathan" der skulle være online, men det er det ikke. Det er hele tiden personen oven over.

Kan du hjælpe?
Avatar billede coderdk Praktikant
08. maj 2007 - 10:02 #4
Har du et felt i forumskriv der hedder "Ip"? For så burde det virke. Prøv evt. lige efter while-loop'et at skrive:

echo "<pre>"; var_dump( $ip ); echo "</pre>";
Avatar billede xpresand Nybegynder
08. maj 2007 - 13:33 #5
Ja, jeg har et felt der hedder Ip i forumskriv.

Nu hvor jeg har sat det ind du skrev skriver den:

NULL



                 
Navn: 

                     
Tilføjet den:

--------------------------------------------------------
Avatar billede coderdk Praktikant
08. maj 2007 - 14:08 #6
Altså.

while ( $a = mysql_fetch_assoc($hvem))

skal jo være

while ( $row = mysql_fetch_assoc($hvem))

;P
Avatar billede xpresand Nybegynder
08. maj 2007 - 14:12 #7
hm..den viser stadig det samme status, men når jeg ændre det til $row så viser den ikke tekst navn osv. Kun status.
Avatar billede coderdk Praktikant
08. maj 2007 - 14:21 #8
Prøv lige at lave det hele om til:

<?

include'connect.php';

//henter ip adresser
$q = mysql_query("SELECT * FROM Ipadresser ORDER BY Id") or die(mysql_error());
$ips = array();
while ( $r = mysql_fetch_assoc($q) )
{
  $ips[] = $row['Ip'];
}

//henter beskeder
$query = mysql_query("SELECT * FROM forumskriv ORDER BY Id") or die(mysql_error());
while($row = mysql_fetch_assoc($query))
{
  if(in_array($row["ip"], $r))
  {
    echo "<tr>

                  <td height='46'  align='left' bordercolor='#000000'><br />

                      Navn: $navn <br />
      <img src='http://annapihl.frac.dk/billeder/online.jpg' alt='$navn er online'>
                      <br /></td>

                  <td align='left' bordercolor='#000000'>$tekst<br><br>Tilf&oslash;jet den: $dato</td>

                </tr><br><br>--------------------------------------------------------";
  }
  else
  {
    echo "
      <tr>

                  <td height='46'  align='left' bordercolor='#000000'><br />

                      Navn: $navn <br />$a
      <img src='http://annapihl.frac.dk/billeder/offline.jpg' alt='$navn er offline'>
                      <br /></td>

                  <td align='left' bordercolor='#000000'>$tekst<br><br>Tilf&oslash;jet den: $dato</td>

                </tr><br><br>--------------------------------------------------------";
  }

  $tekst = $row[tekst];
  $navn = $row[navn];
  $dato = $row[dato];

}

?>
Avatar billede coderdk Praktikant
08. maj 2007 - 14:22 #9
Pis!

while ( $r = mysql_fetch_assoc($q) )
{
  $ips[] = $row['Ip'];
}

skulle være:

while ( $r = mysql_fetch_assoc($q) )
{
  $ips[] = $r['Ip'];
}
Avatar billede xpresand Nybegynder
08. maj 2007 - 14:28 #10
Den skriver:
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /web/www/frac/users/a/annapihl/status.php on line 34

Og linie 34 er:
if(in_array($row["ip"], $r))
Avatar billede coderdk Praktikant
08. maj 2007 - 14:40 #11
Ah, $r skal være $ips
Avatar billede xpresand Nybegynder
08. maj 2007 - 14:43 #12
Den giver stadig samme fejl
Avatar billede xpresand Nybegynder
08. maj 2007 - 14:52 #13
Ups min fejl..den viser ikke den der Warning: array..

Nu gør den bare det samme som den gjorde fra start af.
Avatar billede coderdk Praktikant
08. maj 2007 - 15:17 #14
Hmm. Hvad vil du?

//henter ip adresser
$q = mysql_query("SELECT * FROM Ipadresser ORDER BY Id") or die(mysql_error());
$ips = array();
while ( $r = mysql_fetch_assoc($q) )
{
  $ips[] = $r['Ip'];
}

Gemmer alle IP-adresser fra tabellen "Ipadresser" i array'et $ips...
Avatar billede xpresand Nybegynder
08. maj 2007 - 15:51 #15
Når folk besøger debatforummet på min side, vil deres IP-adresse blive gem i 3 minutter i tabellen Ipadresser.

Så skal Arrayen så tjekke om Ip-adressen findes i nogen af indlæggene i forummet. Gør den det skal den vise at personen er Online, men finde Ip-adressen ikke skal den vise at personen er Offline
Avatar billede coderdk Praktikant
08. maj 2007 - 16:11 #16
Det burde virke. Prøv:

<?

include'connect.php';

//henter ip adresser
$q = mysql_query("SELECT * FROM Ipadresser ORDER BY Id") or die(mysql_error());
$ips = array();
while ( $r = mysql_fetch_assoc($q) )
{
  $ips[] = $r['Ip'];
}

//henter beskeder
$query = mysql_query("SELECT * FROM forumskriv ORDER BY Id") or die(mysql_error());
while($row = mysql_fetch_assoc($query))
{
  $tekst = $row['tekst'];
  $navn = $row['navn'];
  $dato = $row['dato'];
  echo "<tr>
          <td height='46'  align='left' bordercolor='#000000'><br />
            Navn: $navn <br />
            <img src='http://annapihl.frac.dk/billeder/";
  if(in_array($row["ip"], $ips))
  {
      echo "online.jpg' alt='$navn er online'>";
  }
  else
  {
    echo "offline.jpg' alt='$navn er offline'>";
  }
  echo "<br /></td>
        <td align='left' bordercolor='#000000'>$tekst<br><br>Tilf&oslash;jet den: $dato</td>
        </tr><br><br>--------------------------------------------------------";
}

?>
Avatar billede xpresand Nybegynder
08. maj 2007 - 16:32 #17
Alle indlæg i mit debatforum har ikke en IP-adressen da det er for nylig at jeg satte den til at sætte det ind. Men nu viser den at alle de indlæg der ikke står en IP-adresse ved er Online og alle dem som har en IP-adresse er Offline.
Avatar billede xpresand Nybegynder
08. maj 2007 - 16:37 #18
Jeg synes også at der er mærkeligt, for jeg det burde virker når jeg læser din kode..
Avatar billede xpresand Nybegynder
08. maj 2007 - 16:44 #19
Det virker nu!!

Havde glemt at fortælle at jeg havde ændre navnet fr Ip til ip,..så nu virker det :)!!!!
Avatar billede coderdk Praktikant
08. maj 2007 - 16:46 #20
hehhe ok ;)
Avatar billede xpresand Nybegynder
08. maj 2007 - 16:47 #21
Har trykket Accepter, så du burde have fået dine Point! :D
Avatar billede coderdk Praktikant
08. maj 2007 - 17:25 #22
Yep, takker :)
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