Avatar billede floetti Nybegynder
21. juli 2004 - 17:30 Der er 20 kommentarer og
1 løsning

hive udfra database og splitte op

Hej...

Kan nogen fortælle mig hvordan dette skal laves?!?

jeg har en tabell med colonnen (points) med værdierne 18,23,26,29 og vil gerne have værdierne splittet op og sætte dem ind en mysql_query, som helst skulle se således ud:

select * from tabel where points = '18' || points = '23' || points = '26' || points = '29' ...

På forhånd tak

//floetti
Avatar billede terrak Nybegynder
21. juli 2004 - 17:37 #1
Har du ikke en eksisterende kode vi må se? Jeg forstår nemlig ikke helt hvor du vil hen.
Avatar billede detox Nybegynder
21. juli 2004 - 17:39 #2
Du kunne osse bruge:

SELECT * FROM tabel WHERE points IN (18,23,26,29)
Avatar billede floetti Nybegynder
21. juli 2004 - 17:43 #3
Jeg har lavet en multiple select boks, som så lægger alle værdierne sammen som man har valgt:

<?
  if($HTTP_POST_VARS['action'] == 'submitted') {
    $a = ($_POST['to']);
    foreach($a as $k => $v) {
        echo "$v,";
    }
}
?>
<form action="" method="post">
<select name="to[]" multiple>
<option value="18">18</option>
<option value="23">23</option>
<option value="26">26</option>
<option value="29">29</option>
</select>
<input type="hidden" name="action" value="submitted">
<input name="Roynd" type="submit" value="send">
</form>

det som $v er, bliver lagt i en database, og så skal man kunne hive det ud af databasen og sætte set sammen med en mysql_query("");
Avatar billede floetti Nybegynder
21. juli 2004 - 17:45 #4
=> detox

Er det det samme som || ??
Avatar billede detox Nybegynder
21. juli 2004 - 17:46 #5
Ja, det vil give samme resultat
Avatar billede detox Nybegynder
21. juli 2004 - 17:48 #6
Ellers skal du ud i så noget:

$str = '18,23,26,29';
$arr = split(',', $str);
$sql = "SELECT * FROM tabel WHERE points = " . join(' OR points = ', $arr);
Avatar billede detox Nybegynder
21. juli 2004 - 17:51 #7
Så jeg vil foretrække:

$str = '18,23,26,29';
$sql = "SELECT * FROM tabel WHERE points IN ($str)";
Avatar billede floetti Nybegynder
21. juli 2004 - 17:56 #8
ok... det ser lovende ud;)

Men nu er det lige det at når array'en sættes sammen i den kode stump som jeg skrev foroven, så kommer der et ekstra "," (komma)... kommer det til at lave fejl når stringen sættes ind i $sql???
Avatar billede detox Nybegynder
21. juli 2004 - 18:05 #9
Ja, men det kan du fjerne med:

$str = substr($str, 0, -1);
Avatar billede floetti Nybegynder
21. juli 2004 - 18:36 #10
Hej igen... nu har eg lille problem med at indsætte værdierne ind i db'en... ved du hvad jeg kan lave??
Jeg bruger foreach til at sætte arrayet sammen til tal,tal,tal osv. og så er det en variabel som skal indsætte værdierne i databasen, men problemet er jo at variablen bliver overskrevet hele tiden om der er mere end en værdi valgt??!!!!
Avatar billede detox Nybegynder
21. juli 2004 - 18:41 #11
Måske:

<?
  if($HTTP_POST_VARS['action'] == 'submitted') {
    $a = ($_POST['to']);
    $v = join(',', $a);
}
?>

så slipper du osse for det ekstra komma.
Avatar billede detox Nybegynder
21. juli 2004 - 18:44 #12
I øvrigt er: $HTTP_POST_VARS['action'] forældet,
brug: $_POST['action']
Avatar billede floetti Nybegynder
21. juli 2004 - 22:43 #13
hej igen...

det ser ud til at virke om jeg har et værdi i kollonnen, men om jeg har flere 1,2,3 og så skal tjekke om 2 er i med:

$str = 2;
select * tabel where points IN ($str) - så virker det ikke

gør jeg det forkert eller...??

P.S. tusind tak for hjælpen indtil videre;)
Avatar billede detox Nybegynder
21. juli 2004 - 22:50 #14
select * tabel where points IN ($str)

Du mangler FROM:

select * from tabel where points IN ($str)
Avatar billede detox Nybegynder
21. juli 2004 - 22:54 #15
Hvis du har flere værdier i hver række, virker det ikke. Det er en rigtig dårlig idé at have flere værdier i et felt. Kan du ikke nøjes med en værdi i hver?
Avatar billede detox Nybegynder
21. juli 2004 - 23:12 #16
Du kunne fx gøre det sådan, hvis du vil have en værdi pr. række:

if(isset($_POST['action']) && $_POST['action'] == 'submitted') {
    $str = "('" . join("'),('", $_POST['to']) . "')";
    $sql = "INSERT INTO tabel (points) VALUES $str";
    echo $sql; // mysql_query($sql) or die(mysql_error());
}
Avatar billede floetti Nybegynder
21. juli 2004 - 23:27 #17
Meningen var at jeg kunne gøre det sådan at man kann have uendelige værdier tilknyttet til en bestemt kollonne, f.eks:

jeg har en opgradering som skal passe til forskellige varer i en gruppe, men så skal den kunne skilles ud fra andre varer i gruppen...

Nu ved jeg ikke om jeg skriver lidt uklart, men det er nogenlunde det jeg havde i tanken...
Avatar billede floetti Nybegynder
21. juli 2004 - 23:29 #18
om en gruppe men tre varer med værdierne 50,51 og 52

så skal opgraderingen passe til 50 og 52, men ikke 51...
Avatar billede floetti Nybegynder
21. juli 2004 - 23:44 #19
ok... jeg tror at jeg prøver at lave det med LIKE, så må jeg bare håbe at det ikke bliver er tre cifret tal med så det matcher;)
Avatar billede floetti Nybegynder
23. juli 2004 - 18:49 #20
Nå... men nu er det vist tid til at lukke spørgsmålet. Har fakt. fået brukt det eksempel til at sætte POST sammen og indsætte det i db'en, så om du vil have points, så læg bare et svar.
Avatar billede detox Nybegynder
23. juli 2004 - 22:27 #21
Jamen, ok så.
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