Avatar billede kodak Mester
17. februar 2011 - 18:56 Der er 19 kommentarer og
1 løsning

Fyld textarea med checkbox

Jeg har en liste med en masse checkbox'e

Jeg vil gerne kunne check en masse af dem og så skal de smide sig op i en textarea

Eksempelvis hvis jeg har tjekket følgendene:
<input name="tjek" type="checkbox" value="7">
<input name="tjek" type="checkbox" value="93">
<input name="tjek" type="checkbox" value="102">
<input name="tjek" type="checkbox" value="209">
<input name="tjek" type="checkbox" value="223">
<input name="tjek" type="checkbox" value="401">
<input name="tjek" type="checkbox" value="7046">

Skal den i et textarea udfylde som følgendene:
<textarea name="tjekket">7 93 102 209 223 401 7046</textarea>


Så jeg kan sende textarea'et til en anden database

Iden er at jeg har en liste med telefon numre hvor i man skal krydse af hvilke nummer man har.

Så brugeren får en liste af hvilke kontakter han har af de mange.

Formål at hver bruger ikke behøver at have en kæmpe liste over hver kontakt det er.

Men tænk ikke over formålet.
Avatar billede DePlex Nybegynder
17. februar 2011 - 20:19 #1
Hvorfor ikke bare smide alle tallene i et array som så sendes videre?
Avatar billede kodak Mester
17. februar 2011 - 20:22 #2
Hvordan mener du?
Eksempel!
Avatar billede DePlex Nybegynder
17. februar 2011 - 22:05 #3
Altså...
Du har din form:

<input name="tjek" type="checkbox" name = "telefon1" value="7">
<input name="tjek" type="checkbox" name = "telefon2" value="93">
<input name="tjek" type="checkbox" name = "telefon3" value="102">
<input name="tjek" type="checkbox" name = "telefon4" value="209">
<input name="tjek" type="checkbox" name = "telefon5" value="223">
<input name="tjek" type="checkbox" name = "telefon6" value="401">
<input name="tjek" type="checkbox" name = "telefon7" value="7046">

$telefon = array($_POST['telefon1'], $_POST['telefon2'], $_POST['telefon3'], $_POST['telefon4'], $_POST['telefon5'], $_POST['telefon6'], $_POST['telefon7'])

Når du så vil have numrene frem skriver du bare $telefon[0](er lig med det første nummer) $telefon[1] (lig med det andet nummer) osv.
Og hvis du skal sætte det i en database laver du jo bare en insert.

mysql_query("INSERT INTO numre (nummer 1, nummer 2, nummer 3, nummer 4, nummer 5, nummer 6, nummer 7) VALUES ('$telefon[0]', '$telefon[1]', '$telefon[2]', '$telefon[3]', '$telefon[4]', '$telefon[5]', '$telefon[6]')")
Avatar billede kodak Mester
17. februar 2011 - 22:08 #4
Jamen jeg har over 10.000 kontakter
og der kommer flere til.

Jeg kan da ikke lave en array der er så lang.
Avatar billede moddi100 Seniormester
18. februar 2011 - 01:58 #5
Du kunne også bare lave det hele til et array med det samme:

// Html
<input name="tjek" type="checkbox" name = "telefon[]" value="7">
<input name="tjek" type="checkbox" name = "telefon[]" value="93">

// PHP
<?php
$array = $_POST['telefon'];


/*
* I tilfælde af at du har designet din
* database 'numre' ordentligt, med en række pr nummer.
*
* Følgende vil indsætte alle numre som en række for
* sig selv i databasen
*/

$sql = '"INSERT INTO numre (nummer) VALUES ';

foreach($array as $nummer){
  $sql .= '(' . $nummer . '),';
}

mysql_query(substr($sql,0,-1));

?>
Avatar billede moddi100 Seniormester
18. februar 2011 - 01:59 #6
Hov min fejl, skulle have været:
// Html
<input type="checkbox" name="telefon[]" value="7">
<input type="checkbox" name="telefon[]" value="93">
Avatar billede kodak Mester
18. februar 2011 - 13:15 #7
Databasen har 1 felt for hver bruger til numrene.

database:
| id | navn | mail | numre | beskrivelse |

Eksempen:
| 5 | Kodak | mail@domain.dk | 7 93 102 209 223 401 7046 | Kodak er en flink fyr |


Som sagt et felt tilalle talne.
Avatar billede kodak Mester
18. februar 2011 - 13:41 #8
Det vil sige at du vil have at der ser så ledes ud:

<?php
echo'<form name="telefon[]" action="film.php" method="post">';
        while($row = mysql_fetch_array($result)) {
  echo'<tr>
            <td style="background-color:#6a6a6a;"><p>' . $row['nr'] . '</p></td>
            <td style="background-color:#6a6a6a;"><p>' . $row['titel'] . '</a></p></td>
            <td style="background-color:#6a6a6a;"><p><input type="checkbox" name="telefon[]" value="' . $row['id'] . '"></p></td>
        </tr>';
        }
        echo'</form>';
?>
Avatar billede kodak Mester
18. februar 2011 - 13:55 #9
Avatar billede kodak Mester
18. februar 2011 - 15:28 #10
Jeg prøver at få den ind i databasen:

mysql_connect($mysql['host'],$mysql['user'],$mysql['password']) or die (mysql_error());
    mysql_select_db($mysql['db']) or die (mysql_error());
   
    $result = mysql_query("SELECT * FROM `contact_module` ORDER BY `time` DESC");
    $edit_news = mysql_query("SELECT * FROM `contact_module` WHERE `id`=" . $_REQUEST['edit']) or die (mysql_error() . ' in select from `contact_module` in edit mode');
    $edit_news = mysql_fetch_array($edit_news);
        mysql_query("UPDATE `contact_module` SET `title`='" . $edit_news['title'] . "', `url`='" . $edit_news['url'] . "', `time`='" . time() . "', `numre`='" . $edit_news['numre'] . "" . foreach($_POST["ejer"] as $eje)
    {
        echo $eje . " ";
    } . "', `content`='" . $edit_news['content'] . "' WHERE `id`=" . $_REQUEST['id']) or die (mysql_error());


Input:
?id=2
og post'en ($_POST["ejer"])

Skulle dette script gerne tjekke hvad der står i databasen ud for bruger id 2 sætte det ind (så ingen ting bliver ændret) og udfylde numre men den vil ikke smide dem ind hvad er forkert?
Avatar billede kodak Mester
18. februar 2011 - 15:29 #11
Jeg har testet med:

<?php
foreach($_POST["ejer"] as $eje)
    {
        echo $eje . " ";
    }
    echo'<br>';
    echo $_GET['action'];
    echo'<br>';
    echo $_GET['id'];
    echo'<br>';
    echo $_GET['return'];
?>

og den udskriver det hele korrekt.
Avatar billede moddi100 Seniormester
18. februar 2011 - 15:49 #12
med mysql 'UPDATE' funktion, behøver du kun opdatere det ene felt, resten forbliver som før:

mysql_connect($mysql['host'],$mysql['user'],$mysql['password']) or die (mysql_error());

mysql_select_db($mysql['db']) or die (mysql_error());

$sql = "UPDATE `contact_module` SET `numre`=concat(`numre`,' ', '" . mysql_real_escape_string(implode(" ", $_POST["ejer"])) . "') WHERE `id`='" . mysql_real_escape_string($_REQUEST['id']) . "'") or die (mysql_error());

Jeg har her brugt funktionen implode(), der samler et array til en streng, (her) adskilt af et mellemrum. Desuden bør du tjekke at det rent faktisk er numeriske værdier du modtager. Hvis du ikke tjekker indhold, eller i det mindste escaper det (brug mysql_real_escape_string()) har du et stort sikkerhedsproblem.
Avatar billede kodak Mester
22. februar 2011 - 20:07 #13
Nu har jeg med:

if($_REQUEST['action'] == 'own') {
        mysql_query("UPDATE `contact_module` SET `film`='" . $_POST['ejer'] . "' WHERE `id`=" . $_REQUEST['id']) or die (mysql_error());
    }


Fået den til at skrive Array men den skal jo skrive verdien af array.
Avatar billede moddi100 Seniormester
23. februar 2011 - 09:55 #14
Kopier det jeg skrev før, hvad får du af resultat hvis du bruger det?
Avatar billede moddi100 Seniormester
23. februar 2011 - 10:00 #15
Prøv følgende (kopier det hele direkte ind!):

mysql_connect($mysql['host'],$mysql['user'],$mysql['password']) or die (mysql_error());

mysql_select_db($mysql['db']) or die (mysql_error());

$sql = "UPDATE `contact_module` SET `numre`=concat(`numre`,' ', '" . mysql_real_escape_string(implode(" ", $_POST["ejer"])) . "') WHERE `id`='" . mysql_real_escape_string($_REQUEST['id']) . "'");

mysql_query($sql) or die (mysql_error());
Avatar billede kodak Mester
23. februar 2011 - 18:07 #16
Nix svaret er:

if($_REQUEST['action'] == 'own') {
        mysql_query("UPDATE `contact_module` SET `telefon`='" . $_POST['ejer'] . "' WHERE `id`=" . $_REQUEST['id']) or die (mysql_error());
    }

Hvade åbenbart bare glemt at trykke GEM mig store torsk.
Avatar billede moddi100 Seniormester
24. februar 2011 - 11:24 #17
Så er det fordi du ikke har ændret din formular som tidligere foreslået. Men har du slet ikke læst hvad jeg skrev nederst i #12?

Det er meget vigtigt at du escaper dit input! Og det gælder alle steder, ikke bare i denne forespørgsel.
Avatar billede kodak Mester
25. februar 2011 - 08:51 #18
Jo har læst det men forstår ikke hvorfor.
Avatar billede moddi100 Seniormester
25. februar 2011 - 09:13 #19
Svaret er sikkerhed, hvis jeg havde adgang til din formular, kunne jeg i princippet udfører alle de databaseforespørgsler jeg ville. Se f.eks. eksempel 2 på følgende link:

http://php.net/manual/en/function.mysql-real-escape-string.php
Avatar billede kodak Mester
25. februar 2011 - 16:03 #20
det med sikkerheden har jeg tænkt mig at tage senere,
Nu vil jeg bare have det hele til at køre.

Men takker for jeres deltagelse.
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