Avatar billede jacobs1 Nybegynder
31. januar 2008 - 15:29 Der er 4 kommentarer og
1 løsning

string ind i array

HEj Eksperten.

JEg har et lille problem med At jeg skal lægge en GET querystring variabel ind i et array.
Querystringen ser sådan her ud: tagarray=hans,peter,borge,svend. Er der nogle der kan se hvorfor det ikke virker?

Mit forsøg ser sådan her ud.:
$tagarray = array($_GET['tagarray']);


Jeg skal nemlig bruget arrayet i SQL stringen.

$getPoint = mysql_query("SELECT * FROM news WHERE tag1 IN (" . implode(",", $tagarray) . ") ORDER BY dato DESC") or die (mysql_error());
Avatar billede zurekk Nybegynder
31. januar 2008 - 17:45 #1
Prøv med $tagarray = explode( ',', $_GET['tagarray'] );
Avatar billede rosvall Nybegynder
31. januar 2008 - 21:13 #2
jacobs1 >> Du fucker to ting op i din kode. Dels bruger du array() http://dk2.php.net/manual/en/function.array.php som explode()/split(), dog uden at specificere hvilken delimiter du vil bruger, og dels misbruger du SQL IN-operatoren http://dev.mysql.com/doc/refman/4.1/en/any-in-some-subqueries.html.

Hvis du har
$tagarray = "hans,peter,borge,svend";
og ønsker dig en SQL-sætning i stil med
SELECT * FROM news WHERE tag1 = 'hans' OR tag1 = 'peter' OR tag1 = 'borge' OR tag1 = 'svend' ...
Så er du nødt til at bruge php til at sammensætte SQL-sætningen.
Det gør du lettest ved at starte med at hakke $tagarray op, som zurekk siger, og så gøre noget i stil med:
$sql = "SELECT * FROM news WHERE 0";
foreach($dit_array as $tag) $sql .= " OR tag1 = '$tag'"
$sql .= " ORDER BY ...";
Avatar billede zurekk Nybegynder
02. februar 2008 - 15:05 #3
rosvall >
Eller sådan her:
$tag_array = 'hans,peter,borge,svend';
$tags = explode( ',', $tag_array );
$sql = 'SELECT * FROM news WHERE tag1 IN (' . implode( ',', $tags ) . ')';

Endnu bedre hvis man er sikker på at $tag_array er delt med komma'er:
$tag = 'hans,peter,borge,svend';
$sql = 'SELECT * FROM news WHERE tag1 IN (' . $tags . ')';

Et foreach-loop er måske lige i overkanten.
Avatar billede jacobs1 Nybegynder
05. februar 2008 - 11:21 #4
Det lykkes aldrig at få det til at virke. Så nu laver jeg det bare på denne måde selvom det nok er totalt dumt :)

$tag1= $_REQUEST['tag1'];
$tag2= $_REQUEST['tag2'];
$tag3= $_REQUEST['tag3'];
$tag4= $_REQUEST['tag4'];

$tag_array = '"'.$tag1.'","'.$tag2.'","'.$tag3.'","'.$tag4.'"';
$tags = explode( ',', $tag_array );

$getPoint = mysql_query("SELECT * FROM news WHERE tag1 IN (" . implode(",", $tags) . ") OR tag2 IN (" . implode(",", $tags) . ") OR tag3 IN (" . implode(",", $tags) . ")OR tag4 IN (" . implode(",", $tags) . ") ORDER BY dato DESC") or die (mysql_error());
Avatar billede zurekk Nybegynder
07. februar 2008 - 18:14 #5
Ja det er lidt overkill vil jeg mene. Fuldstændig udnødvendig brug af implode og explode.

Du laver jo allerede din implode her: $tag_array = '"'.$tag1.'","'.$tag2.'","'.$tag3.'","'.$tag4.'"';

Det her er jo nok så:

$tag1= $_REQUEST['tag1'];
$tag2= $_REQUEST['tag2'];
$tag3= $_REQUEST['tag3'];
$tag4= $_REQUEST['tag4'];

$tag_array = '"'.$tag1.'","'.$tag2.'","'.$tag3.'","'.$tag4.'"';

$getPoint = mysql_query("SELECT * FROM news WHERE tag1 IN (" . $tags . ") OR tag2 IN (" . $tags . ") OR tag3 IN (" . $tags . ")OR tag4 IN (" . $tags . ") ORDER BY dato DESC") or die (mysql_error());
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