Avatar billede superb Nybegynder
07. februar 2008 - 20:43 Der er 16 kommentarer og
1 løsning

godt og blandet, men mest: if file exist problem

jeg ville gerne lave så hvis bogen findes, så gemmer den informationen i arrayet, og ellers så stopper et navn i et andet array.Bagefter skal der så komme en ny boghandler hvor den ser, og det sker en masse gange. Hvad er det der er forkert i nedenstående kode? Derudover ville jeg høre hvordan man evt skulle gøre hvis man ville gøre det mere overskueligt, kan man stoppe arrayet $shop ind i en funktion, da det ens for alle? eller kan man lave en incl med de forskellige hvor $lines og explode osv så er, eller hvad ville være bedst, da man jo ellers ender med hundredevis liner kode? der er 200 point til deling mellem de forskellige spørgsmål

$lines    = file('http://search.blackwell.co.uk/servlet/search?type=isbn&term=1583911030&curr=GBP');
foreach ($lines as $line_num => $line)
if (file_exists($line)) {
$pieces = explode("|", $line);
$forfatter = $pieces[1];
$titel = $pieces[2];
}
else
{
$navne = array("Blackwell");
}
$shop = array( array( 'Forfatter' => "$forfatter",
                      'Titel' => "$titel",
Avatar billede superb Nybegynder
07. februar 2008 - 20:47 #1
nå ja selvfølgelig ikke nogen , efter titel og så  ) );til slut
Avatar billede jakobdo Ekspert
07. februar 2008 - 21:07 #2
Hvad er det præcist du prøver at lave?
Kan du forklare det igen?
Avatar billede superb Nybegynder
07. februar 2008 - 21:17 #3
sorry var måske ikke helt klart, jeg har en masse links ala det der er deroppe fra forskellige boghandler, jeg vil så gerne have det til at tjekke om der er data på adressen (hvis isbn nummeret eksisterer, ellers dukker der nemlig bare en blank side op) hvis den eksisterer skal den sættes ind i arrayet shop, det kan jeg godt få til at virke, men hvis det ikke eksisterer så ville jeg gerne  have den til at skrive butiksnavnet (i dette tilfælde blackwell) ind i et andet array, og det kan jeg ikke få til at virke med min file_exist, og jeg ved ikke hvad jeg gør forkert.

Derudover vil jeg meget gerne hvis der var en måde at gøre det lidt mere overskueligt på, fx om $shop kunne laves til en form for funktion så man ikke skulle skrive det hele hver gang.
Avatar billede jakobdo Ekspert
07. februar 2008 - 21:21 #4
Du kan ikke bruge file_exists() til at tjekke en remote side.
Du kunne overveje at bruge get_headers().
Den har jeg brugt i en tråd for et par dage siden, kigger lige i gemmeren.
Avatar billede jakobdo Ekspert
07. februar 2008 - 21:22 #5
Avatar billede superb Nybegynder
07. februar 2008 - 21:33 #6
det en smart funktion, men problemet er at fx. http://search.blackwell.co.uk/servlet/search?type=isbn&term=1583911030&curr=GBP ikke vil give 404 fejl hvis isbn ikke findes, så får man bare en tom side. Kan man evt bede den om at tjekke om selve arrayet $lines eksisterer?
Avatar billede jakobdo Ekspert
07. februar 2008 - 21:35 #7
Så kunne du bruge:

$indhold = file_get_contents($link);

Og så tjekke på hvor meget indhold du får retur, f.eks. med:

if(strlen($indhold) > 100) //100 tegn eller mere
Avatar billede superb Nybegynder
07. februar 2008 - 21:47 #8
uh den var smart.. var lige den funktion jeg ledte efter, tusind tak, ved du så også om man kan smide arrayet navne i en funktion? eller evt kan stoppe hele molevitten i en masse incl filer, eller gøre noget andet smart for ikke at have for meget tekst?
Avatar billede jakobdo Ekspert
07. februar 2008 - 21:50 #9
Jeg forstår desværre ikke helt hvad du mener med det sidste?
Avatar billede superb Nybegynder
07. februar 2008 - 21:59 #10
jeg har jo nedenstående, og jeg har en hel del af dem, fra forskellige steder, abebooks, english book service ect, hvilket er ret uoverskueligt i koden, og så tænkte jeg om der var en eller anden måde hvorpå man fx kunne genbruge noget af koden så det ikke fyldte så meget, forsøgte selv at stoppe $shop ind i en funktion, og så bare kalde den hver gang der skulle sættes ind, men det virkede ikke, kan overhoved det? Håber du forstår.
$lines    = file('http://search.blackwell.co.uk/servlet/search?type=isbn&term=1583911030&curr=GBP');
foreach ($lines as $line_num => $line)
if (file_exists($line)) {
$pieces = explode("|", $line);
$forfatter = $pieces[1];
$titel = $pieces[2];
}
else
{
$navne = array("Blackwell");
}
$shop = array( array( 'Forfatter' => "$forfatter",
                      'Titel' => "$titel",
Avatar billede jakobdo Ekspert
07. februar 2008 - 22:01 #11
$shop kan du godt smide på senere.
Er det det du mener?
Avatar billede superb Nybegynder
07. februar 2008 - 22:09 #12
ja det tror jeg, jeg forsøgte engang at skrive
function shop($titel, $forfatter)
{
$shop = array( array( 'Forfatter' => "$forfatter",
                      'Titel' => "$titel" ) );
}
Så jeg bare kunne kalde den hver gang der skulle sættes ind i arrayet, men det virkede ikke.
Avatar billede jakobdo Ekspert
08. februar 2008 - 05:58 #13
Du kunne rette din funktion til:

function add2shop($titel,$forfatter,$shop){
if(is_array($shop)){
  $shop[] = array('Forfatter' => $forfatter, 'Titel' => $titel);
}else{
  return false;
}
return $shop;
}
Avatar billede superb Nybegynder
11. februar 2008 - 09:16 #14
kan ik helt få det til at virke, men ska nok bare prøve lidt mere, men smid et svar så får du dine point
Avatar billede jakobdo Ekspert
11. februar 2008 - 09:21 #15
Svar!
Avatar billede jakobdo Ekspert
11. februar 2008 - 19:06 #16
Takker for point.
Avatar billede superb Nybegynder
11. februar 2008 - 20:40 #17
og jeg takker for hjælpen..
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