Avatar billede Frederik Nybegynder
08. september 2011 - 22:17 Der er 18 kommentarer og
1 løsning

Vis data fra MySQL database baseret på checkbox-input.

Hej.

Jeg har en side, hvor der bliver præsenteret nogle data fra en MySQL database. fx feltet fornavn og efternavn.

Jeg skal have lavet en postform indeholdende en checkbox ved hvert udtræt fra databasen, som skal indeholde id på indholdet fra databasen.

Postformen skal sende videre til en ny side, hvor der så skal laves et opslag i en MySQL database baseret på id, og det udvalgte data skal så præsenteres.


Er det noget I kan vejlede i og evt. give eksempler på?


På forhånd tak!


Mvh. Frederik
Avatar billede vagnk Juniormester
09. september 2011 - 12:07 #1
Du har ikke afsluttet din sidste sag om samme emne. Du har end ikke gidet svare på det spørgsmål jeg slutter med at stille dig.

I det hele taget må jeg sige at dit niveau kræver en del undervisning, og det har vi ikke tid til herinde. Der er masser af tutorials out there og Google er opfundet for at man kan søge.

Der er ingen nemme veje i dette fag.
Avatar billede Frederik Nybegynder
09. september 2011 - 18:17 #2
Der er nu postet et svar under det andet åbne spørgsmål - det sene svar pga. tidsmangel.

Grunden til, at jeg poster dette spørgsmål er, at lære mere angående PHP og MySQL funktioner.
Jeg vil dog ikke mene, at det er det samme problem, der er i de to spørgsmål, selvom der tages udgangspunkt i, at man ønsker at få præsenteret et udvalgt indhold fra en database i form af fornavn og efternavn (samt i det andet spørgsmål også e-mail).  Det er to forskellige metoder jeg efterspørger!

I mit andet spørgsmål er problemstillingen, at indholdet fra en checkbox, lavet som array, skal "videresende" oplysninger om navn og email hvis boksen er valgt (UDENOM MySQL).


I DETTE spørgsmål er problemstillingen nærliggende den samme, dog adskiller det sig ved at tage udgangspunkt i et ID hentet fra MySQL, der videresendes via en checkbox. Herefter skal der så igen, i modsætningen til tidligere spørgsmål, oprettes forbindelse til MySQL databasen og via noget a la :
mysql_query("SELECT * from database WHERE id='id......'")

Jeg søger altid efter løsninger på internettet inden, jeg indsender indlæg, men når jeg ikke mener, at kunne finde svar på problemstillingen mener jeg, at det er i orden at oprette spørgsmål angående de forskellige problemstillinger.

Det er også min opfattelse af Eksperten.dk, at det er en side, hvor folk kan få hjælp, hvis der er behov for det.

Hvis du ikke har nogle konkrete forslag til, hvordan jeg løser opgaverne, beder jeg dig holder dine kommentarer for dig selv og gemme spaltepladsen til andre, der muligvis kan hjælpe på vej til en løsningen af problemet - tak! :)
Avatar billede majbom Novice
09. september 2011 - 18:57 #3
som jeg læser dit spørgsmål virker det som en knap så brugervenlig løsning du har gang i - jeg kan selvfølgelig misforstå :)

hvorfor ikke bare en linje pr række i udtrækket, men en knap (på hver linje) - der sender brugeren videre til den ønskede side...
Avatar billede Frederik Nybegynder
09. september 2011 - 20:35 #4
--> Splazz

Jeg søger selvfølgelig den mest effektive og enkle løsning på opgaven.

Altså selve ideen er, at kunne hive alle data ud fra en database og med checkbokse udvælge hvilke data der skal sendes videre. Og her tænker jeg, at ID på hver række fra databasen vil være et godt bud, at bruge som sortering, da de er unikke. Derved vil jeg være helt sikker på, at det jeg ønsker at videresende bliver vist.

Som jeg læser dit indlæg, så er det du foreslår en knap ud for hver linje, der hver har en enkelt funktion? Eller misforstår jeg?
Avatar billede majbom Novice
10. september 2011 - 09:16 #5
vil du kunne vælge flere rækker der skal hentes frem på næste side, eller hvad er det du vil opnå?

og hvis der er navne eller anden tekst i udtrækket, vil jeg da helt sikkert sortere efter dette, det gør det nemmere for en bruger at finde det han/hun leder efter...
Avatar billede Frederik Nybegynder
10. september 2011 - 11:03 #6
Ja, hvis der fx er 10 resultater fra første side, så skal man kunne vælge fx 5 og få dem præsenteret på næste side. Det med at det skal være navne, er bare et tænkt eksempel for at få forståelsen.

Når jeg har fået forståelsen for funktionen, er det meningen, at den skal udbygges. Derfor mener jeg, at det vil være mest hensigtsmæssigt, hvis muligt, at videresende id fra hvert resultat, så det på ny kan hentes fra databasen valgt ud fra id.
Avatar billede majbom Novice
10. september 2011 - 11:22 #7
du laver én form, med alle rækker i og for hver række har du en checkbox:

<input type="checkbox" name="id[]" value"<?php echo $id_på_række; ?>">


når du så har submittet formen, vil du have et array:

$_POST['id']


som indeholder alle de id'er der er valgt på den første side.
det kan du så løbe igennem og generere en SQL-query, som henter de valgte rækker...


gav det mening?
Avatar billede Frederik Nybegynder
11. september 2011 - 18:48 #8
Nu har jeg forsøgt at stykke noget sammen:

index.php:

<?

require("config.php");

$query = mysql_query("SELECT * FROM test ORDER BY id") or die(mysql_error());

echo <<<_END
<form action="selected.php" method="post">
_END;

      while($row = mysql_fetch_assoc($query))
        {
            $navn = $row['fornavn'] . " " . $row['efternavn'];
            $id = $row['id'];
           
echo <<<_END
      <input type="checkbox" name="$id[]" value="$id"> $id, $navn <br/>
_END;
        }
echo <<<_END
      <input type="submit" value="Select"/>
      </form>
  </div>
_END;

?>




og i selected.php:

<?php

require("config.php");
$nyid = $_POST['id'];
{
  echo "Disse id er valgt: $nyid";
}
   
?>



Jeg får dog fejlen:
Parse error: syntax error, unexpected ']', expecting T_STRING or T_VARIABLE or T_NUM_STRING in .... on line 17. dvs.:
<input type="checkbox" name="$id[]" value="$id"> $id, $navn <br/>



Hvis jeg erstatter name="$id[]" med name="$id" giver den resultater, men så giver den fejl i selected.php:
Notice: Undefined index: id in .... on line 4, dvs:
$nyid = $_POST['id'];


Nogen forslag til hvordan jeg løser dette?
Avatar billede majbom Novice
11. september 2011 - 19:41 #9
name skal bare være "id[]" og value skal selvfølgelig være $id, som du rigtig nok har skrevet...
Avatar billede Frederik Nybegynder
11. september 2011 - 21:35 #10
Nu bliver jeg godt nok sendt videre til selected.php, men får resultatet:

Disse id er valgt: Array
Avatar billede majbom Novice
12. september 2011 - 08:40 #11
ja, som jeg skrev tidligere får du nu et array, som du skal løbe igennem og generere en sql-streng ud fra

prøv at skriv:

<?php
print_r($_POST['id']);
?>
Avatar billede Frederik Nybegynder
12. september 2011 - 14:26 #12
Så får jeg resultatet:
Array ( [0] => 1 [1] => 2 )

Så den sender godt nok id med. Jeg er ikke helt sikker på, hvordan koden skal se ud for at hente de valgte id fra databasen..

Hvis  du har mulighed for at give et eksempel, ville det være super!  :)
Avatar billede majbom Novice
12. september 2011 - 16:03 #13
prøv med:

<?php
$ids = join(',',$_POST['id']); 
$sql = "SELECT * FROM test WHERE id IN (" . $ids . ")";
?>


så henter den alle posterne du valgte på forrige side...
Avatar billede Frederik Nybegynder
12. september 2011 - 17:40 #14
Fedt fedt fedt!! Nu får jeg sendt id videre til selected.php og får vist alle data!

Der er lige et sidste ting. Hvis der ikke vælges noget, så får jeg fejlen: Notice: Undefined index: id in ....  on line 3 Fejl

Jeg har nu følgende kode:
<?php
require("config.php");

$ids = ($_POST['id']); 

if(empty($ids)) {
echo "Fejl";

} else {

$ids = join(',',$_POST['id']);
mysql_connect($mysql_host, $mysql_user, $mysql_pw);
mysql_select_db($mysql_db);
$sql = "SELECT * FROM test WHERE id IN (" . $ids . ")";
$query = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($query) == 0){
    echo ("Ingen elementer er valgt.");
exit;

  } else {

while($row = mysql_fetch_assoc($query)) {
$visid = $row['id'];
$visfornavn = $row['fornavn'];
$visefternavn = $row['efternavn'];
echo"<div id='testdiv'>$visid: $visfornavn $visefternavn</div>";
}

exit;

}

exit;
}
?>



Er der en måde hvorpå, jeg kan rette dette?
Avatar billede majbom Novice
12. september 2011 - 18:10 #15
ret:

$ids = ($_POST['id']); 

if(empty($ids)) {


til:

if(isset($_POST['id'])){
Avatar billede Frederik Nybegynder
12. september 2011 - 19:07 #16
Perfekt! Det virker! Tusind tak for hjælpen :) Smid et svar..
Avatar billede Frederik Nybegynder
12. september 2011 - 19:09 #17
Eller dvs., at jeg indtastede:

if(!isset($_POST['id'])){
Avatar billede majbom Novice
12. september 2011 - 20:11 #18
ja selvfølgelig - sorry :)
Avatar billede majbom Novice
12. september 2011 - 21:36 #19
tfp :)
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