[php] in_array, variabelen uit db

Pagina: 1
Acties:

  • scubapro
  • Registratie: September 2000
  • Laatst online: 21-11-2022
Ik ben bezig met een redirect scriptje zodat ik meerdere sites op 1 hostpakket kan plaatsen. Nu wil ik dat db gestuurd doen maar zit met een probleem.

Eerst natuurlijk een select van beschikbare records. Daarna een while met de code
PHP:
1
<?if (in_array ("$HTTP_HOST", array ($host))){echo "$HTTP_HOST <BR> $host <BR> $redirect <P>\n";}?>

$host en $redirect komen natuurlijk uit db.
Iets bij array klopt niet. Als ik $host vervang door een record uit db in de vorm van "domein.nl","www.domein.nl","domein2.nl"
werkt het scriptje wel. :?

Je bent pas echt lui als je het gemak niet zoekt.


Verwijderd

PHP:
1
<?if (in_array ("$HTTP_HOST", $host)) {echo "$HTTP_HOST <BR> $host <BR> $redirect <P>\n";}?>

  • scubapro
  • Registratie: September 2000
  • Laatst online: 21-11-2022
Op zaterdag 20 juli 2002 12:40 schreef RobinVR het volgende:
PHP:
1
<?if (in_array ("$HTTP_HOST", $host)) {echo "$HTTP_HOST <BR> $host <BR> $redirect <P>\n";}?>
Nee, dat klopt niet. Krijg:

Warning: Wrong datatype for second argument in call to in_array

Misschien nog niet anders?

Je bent pas echt lui als je het gemak niet zoekt.


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Op zaterdag 20 juli 2002 18:02 schreef scubapro het volgende:

[..]

Nee, dat klopt niet. Krijg:

Warning: Wrong datatype for second argument in call to in_array

Misschien nog niet anders?
Ik denk dat uw probleem eenvoudig kan opgelost worden :) . Ik ken welliswaar geen fluit van PHP, maar uw Error zegt genoeg. Is het veld 'host' in uw databeest wel een String?
Is de variabele $host wel een string?
Ofwel moet je met een functie in PHP uw $host nog converteren naar een string.

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • TiG
  • Registratie: Maart 2001
  • Laatst online: 29-06 14:19

TiG

bool in_array ( mixed needle, array haystack [, bool strict])
Het 2e argument moet dus een array zijn. Is $host wel een array? Geef anders de output van print_r($host) is.

U gaat door voor de retorische vraag...


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09:31

Crazy D

I think we should take a look.

Op zaterdag 20 juli 2002 12:33 schreef scubapro het volgende:
Ik ben bezig met een redirect scriptje zodat ik meerdere sites op 1 hostpakket kan plaatsen. Nu wil ik dat db gestuurd doen maar zit met een probleem.

Eerst natuurlijk een select van beschikbare records. Daarna een while met de code
Waarom haal je alles op, en doe je niet een select met een "where domein = $HTTP_HOST" ?

Exact expert nodig?


  • scubapro
  • Registratie: September 2000
  • Laatst online: 21-11-2022
Ik ben eruit. Bedankt voor de tips. Mijn gedachte fout was dat ik dacht als ik de complete array uit de db haal php het nog steeds als een array zou zien. Dat ik natuurlijk niet zo. PHP ziet dat als een string. Ik heb nu het volgende gedaan. Een record in db ziet er nu als volgt uit: domein.nl,www.domein2.nl,sub.domein.nl

Bijbehorende code is geworden:
PHP:
1
<?$hostarray = explode(",",$host);if (in_array ("$HTTP_HOST", $hostarray)) {echo "$HTTP_HOST <BR> $host <BR> $redirect<P>\n";}?>

Nu nog even een location header toevoegen en klaar is mijn
db gestuurde redirect scriptje.

Je bent pas echt lui als je het gemak niet zoekt.


  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
Deze oplossing werkt wel, maar is niet erg flexibel.
Beter is het om hosts via een '1 op n relatie' aan domains te koppelen:

maak in je database twee tabellen: hosts en hosts_domains (b.t.w.: het gebruik van Engels en Nederlands door elkaar in je naamgeving werkt een beetje verwarrend, maar dat is een persoonlijke voorkeur).

hosts ziet er als volgt uit:
code:
1
2
3
4
hostid | hostname | otherhostinfo
---------------------------------
1   | 'blaat'  | 'iets'
2   | 'blech'  | 'anders'

en hosts_domains zo:
code:
1
2
3
4
5
6
7
hostid | domain
---------------------------------
1   | 'domain1.nl'
1   | 'domain1.com'
2   | 'domain2.nl'
2   | 'sub.domain2.nl'
2   | 'sub.sub.domain2.nl'

Deze methode lijkt in eerste instantie misschien onnodig complex, maar kan een hoop problemen voorkomen als je later meer functionaliteit toe wilt voegen. :)

Pas de replâtrage, la structure est pourrie.


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Eerlijk gezegd snap ik absoluut niet wat je nou wilt doen.

Je wilt controleren of een bepaalde host in je database voorkomt?
Waarom doe je er dan niet een directe select query op en controleer je of er een resultaat uit rolt (of een count en controleren op 0/1/etc).

Om nou eerst een array op te bouwen en daarin te kijken of de hostname erin zit is wat onhandig, dubbelop, sloom, lelijk, etc ;)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:27

.oisyn

Moderator Devschuur®

Demotivational Speaker

taal toegevoegd aan topictitel (denk daar voortaan zelf aan)

foei ACM, dat had jij moeten doen ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1