Avatar billede kgp43 Nybegynder
26. februar 2005 - 15:45 Der er 34 kommentarer og
1 løsning

Problemer med array

Hejsa,

Jeg har en database med ca 1000 domænenavne. Vil have et lille script der skal gennemgå alle enteries, for at checke om domænerne virker. Har derfor lavet en to-frames side.
Se her: http://www.savefile.com/hosting/moderators/validate.php

Problemet er at min kode ikke skifter id i arrayet, når man klikker næste. Kan ikke finde fejlen:


//Get list of domains
$domain_query = mysql_query("SELECT * FROM domains ") or die (mysql_error());
while($domain_fetch = mysql_fetch_array($domain_query)) {

    $domainlist[] = $domain_fetch[id];

}

//If no domain_id is selected, then we choose the first one in the array
if(!$list_no) {
    $list_no = '1';
}

$domain_query = mysql_query("SELECT * FROM domains WHERE id='$domainlist[$list_no]' ") or die (mysql_error());
$domain_fetch = mysql_fetch_array($domain_query);
$domain_name = $domain_fetch[domain];

$list_no++;

echo "<a href='validate.php?list_no=$list_no' target='_parent'>Next domain</a><br />";
echo "<a href='http://www.$domain_name' target='mainFrame'>Show domain</a>";
Avatar billede detox Nybegynder
26. februar 2005 - 15:50 #1
Måske skal du bruge $_GET arrayet. Ret:

if(!$list_no) {
    $list_no = '1';
}

til:

$list_no = isset($_GET['list_no']) ? $_GET['list_no'] : 1;
Avatar billede kgp43 Nybegynder
26. februar 2005 - 15:57 #2
rettet og uploaded.
Ser ikke ud til at virke.

- Hvis jeg sætter list_no til 50 (manuelt i koden), så viser den domæne nummer 50 og henviser (next) til nummer 51, men herefter sker der intet (bliver ved med at henvise til 51)
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:00 #3
Hvis jeg ændre direkte i urlen, så henviser den stadig til nummer 2 - selvom jeg ændre værdien af list_no til 50
http://www.savefile.com/hosting/moderators/validate.php?list_no=50
Avatar billede detox Nybegynder
26. februar 2005 - 16:01 #4
Men jeg må indrømme, at jeg forstår slet ikke nødvendigheden af din første forespørgsel. Du hiver alt ud af tabellen for at bruge et 'id' i din anden forespørgsel. Du skulle hellere hente række nr. 1, 2, 3, osv...
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:02 #5
der manger en masse række numre , så jeg kan ikke hente nummer 1,2,3 osv.
Avatar billede sjh Nybegynder
26. februar 2005 - 16:04 #6
Kan du ikke bruge den her så..

<?php
  $intStart = $_GET["next"];
  if (!isset($intStart)) $intStart = 0;

  $strSQL = "SELECT * FROM domains ORDER BY ID LIMIT ".$intStart.", 1;";
  $sqlResult = mysql_query($strSQL);

  while($Row = mysql_fetch_array($sqlResult)) {
    $strDomain = $Row["domain"];
  }

  $intStart++;

  echo '<a href="validate.php?next='.$intStart.'" target="_parent">Next domain</a><br>';
  echo '<a href="http://www.'.$strDomain.'" target="mainFrame">Show domain</a>';
?>
Avatar billede detox Nybegynder
26. februar 2005 - 16:06 #7
I den her stil:

$rk = isset($_GET['rk']) ? $_GET['rk'] : 1;

$domain_query = mysql_query("SELECT * FROM domains ORDER BY id LIMIT $rk,1") or die (mysql_error());
$domain_fetch = mysql_fetch_array($domain_query);
$domain_name = $domain_fetch['domain'];

$rk++;
echo "<a href='validate.php?rk=$rk' target='_parent'>Next domain</a><br />";
echo "<a href='http://www.$domain_name' target='mainFrame'>Show domain</a>";
Avatar billede sjh Nybegynder
26. februar 2005 - 16:06 #8
du skal lige rette dem her til.. eksperten viser dem ikke som de skal

  echo '<a href="validate.php?next='.$intStart.'" target="_parent">Next domain</a><br>';
  echo '<a href="http://www.'.$strDomain.'" target="mainFrame">Show domain</a>';
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:08 #9
detox; den stopper også ved nummer2
- dette er altså mærkeligt... hmm

Har det noget at gøre med at jeg anvender frames på denne side? Er første gang jeg bruger frames.
Avatar billede detox Nybegynder
26. februar 2005 - 16:09 #10
Ja, det må det næsten være. Jeg har ikke så meget erfaring med frames ifm php.
Avatar billede detox Nybegynder
26. februar 2005 - 16:17 #11
Du kan jo prøve at teste det uden frames.
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:19 #12
Avatar billede detox Nybegynder
26. februar 2005 - 16:20 #13
Hvis du skal bruge frames, kan du måske prøve med en session variabel istedet, jeg ved ikke hvordan de reagerer ift. frames?
Avatar billede sjh Nybegynder
26. februar 2005 - 16:21 #14
det virker da fint hos mig..
http://hostscript.sjhdata.dk/validate.php
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:22 #15
ja, men du bruger heller ikke frames :P
Det virker fint uden frames :)
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:23 #16
Jeg har prøvet at flytte koden (på nær linksene) op i toppen af validate.php (i stedet for validate_top.php), men uden resultat.
Avatar billede sukos Juniormester
26. februar 2005 - 16:30 #17
Jeg ville så'n:

$domainlist = array();
$domain_query = mysql_query("SELECT `id` FROM `domains ") or die (mysql_error());
while($domain_fetch = mysql_fetch_array($domain_query)) {

    $domainlist[] = $domain_fetch["id"];

}

$last = end($domainlist);
reset($domainlist);

if(!isset($_GET["list_no"])) {
    $get_id = $domainlist[0];
}else{

    if($_GET["list_no"] != $last) {
    $nu = array_search($_GET["list_no"], $domainlist);
    $get_id = $domainlist[$nu+1];
    }else{
    $get_id = $last;
    }

}
echo"<p>";
echo"SELECT * FROM domains WHERE id='". $get_id ."'";
Avatar billede sjh Nybegynder
26. februar 2005 - 16:31 #18
er det sådan her du mener så??
http://hostscript.sjhdata.dk/validate.php
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:37 #19
sjh: ja

Hvordan ?
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:38 #20
Sukos: den skifter ikke get_id
der ud til at det er samme problem som overstående.
Avatar billede sjh Nybegynder
26. februar 2005 - 16:40 #21
Avatar billede sukos Juniormester
26. februar 2005 - 16:41 #22
hehe, du skal jo heller ikke lave query for næste domain!
Avatar billede sukos Juniormester
26. februar 2005 - 16:42 #23
if(!isset($_GET["list_no"]) || !in_array($_GET["list_no"], $domainlist)) {
    $get_id = $domainlist[0];
    $ref = $get_id;
}else{

    $ref = $_GET["list_no"];
    if($_GET["list_no"] != $last) {
    $nu = array_search($_GET["list_no"], $domainlist);
    $get_id = $domainlist[$nu+1];
    }else{
    $get_id = $last;
    }

}

echo"<p>";
echo"<a href=\"". $_SERVER["PHP_SELF"] ."?list_no=". $get_id ."\">Næste</a><br>";
echo"SELECT * FROM domains WHERE id='". $ref ."'";
Avatar billede sjh Nybegynder
26. februar 2005 - 16:45 #24
kgp43 > du kan hente koden her: http://hostscript.sjhdata.dk/validate.zip
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:48 #25
har hentet koden og den virker perfekt.
Takker for hjælpen

lig et svar så er der point.
Avatar billede sjh Nybegynder
26. februar 2005 - 16:48 #26
:P
Avatar billede sukos Juniormester
26. februar 2005 - 16:51 #27
404?
Og det jeg nåede at se, var et link til 1 hver gang?

Kunne da godt tænke mig at vide hvordan det virker???? :O)
Avatar billede sukos Juniormester
26. februar 2005 - 16:51 #28
Og forresten, løsninger skal jo være tilgængelige her fra eksperten!
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:52 #29
http://www.savefile.com/hosting/moderators/validate.php
det virker nu. Skal dog igang med at slette, da mange af domænerne ikke er aktive mere.

- Er der en måde hvor man automatisk, kan vise urlen i den nederste frame, uden at klikke på linket?
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:53 #30
sure,

her er kode:

validate_top:
<?
include($_SERVER["DOCUMENT_ROOT"]."/hosting/db.php");

$intStart = $_GET["next"];
  if (!isset($intStart)) $intStart = 0;

  $strSQL = "SELECT * FROM domains ORDER BY id LIMIT ".$intStart.", 1;";
  $sqlResult = mysql_query($strSQL);

  while($Row = mysql_fetch_array($sqlResult)) {
    $strDomain = $Row["domain"];
  }

  $intStart++;

  echo '<a href="validate.php?next='.$intStart.'" target="_parent">Next domain</a><br>';
  echo '<a href="http://www.'.$strDomain.'" target="mainFrame">'.$strDomain.'</a>';

?>


---------------------
validate.php:

<?php
  $intStart = $_GET["next"];
  if (!isset($intStart)) $intStart = 0;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>:P</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<frameset rows="80,*" frameborder="NO" border="0" framespacing="0">
  <frame src="validate_top.php?next=<? echo $intStart; ?>" name="topFrame" scrolling="NO" noresize >
  <frame src="#" name="mainFrame">
</frameset>
<noframes><body>

</body></noframes>
</html>
Avatar billede sjh Nybegynder
26. februar 2005 - 16:54 #31
Avatar billede kgp43 Nybegynder
26. februar 2005 - 16:56 #32
Er der en måde, hvor man automatisk kan vise urlen i den nederste frame, uden at klikke på linket?
Avatar billede sjh Nybegynder
26. februar 2005 - 17:16 #33
ja så er det noget i den stil..

----------- validate.php -----------
<?php
  $intStart = $_GET["next"];
  if (!isset($intStart)) $intStart = 0;
  echo '<a href="validate.php?next='.$intStart.'" target="_parent">Next domain</a><br>';
?>

----------- validate.php -----------
<?php
  $intStart = $_GET["next"];
  if (!isset($intStart)) $intStart = 0;

  $strSQL = "SELECT * FROM domains ORDER BY ID LIMIT ".$intStart.", 1;";
  $sqlResult = mysql_query($strSQL);

  while($Row = mysql_fetch_array($sqlResult)) {
    $strDomain = "http://www.".$Row["domain"];
  }

  $intStart++;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>:P</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<frameset rows="80,*" frameborder="NO" border="0" framespacing="0">
  <frame src="validate_top.php?next=<? echo $intStart; ?>" name="topFrame" scrolling="NO" noresize >
  <frame src="<? echo $strDomain; ?>" name="mainFrame">
</frameset>
<noframes><body>

</body></noframes>
</html>
Avatar billede kgp43 Nybegynder
27. februar 2005 - 20:10 #34
Det ser ud til at løsningen har et problem i Firefox:
http://www.savefile.com/hosting/moderators/validate.php
Avatar billede sjh Nybegynder
27. februar 2005 - 20:33 #35
ja da er noget med det frameset du har.. men der er ikke noget galt med php-koden ;)
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