Avatar billede t-b-f Nybegynder
29. oktober 2003 - 16:37 Der er 7 kommentarer og
1 løsning

PHP & checkboxe & vise udvalgte

Hej...

Jeg har to sider; records.php og result.php. Den ene (records.php) trækker data ud af en database og viser en liste med resultatet i en formular, hvor hver post har en checkbox. Meningen er at det skal være muligt at afkrydse en eller flere checkboxe, trykke på en knap, og på en ny side (result.php) få vist de poster man udvalgte.

Som det ser ud nu viser siden result.php kun en post (den der blev afkrydset til sidst på siden records.php).

Er ikke god til PHP; jeg bruger Dreamweaver som genererer det meste af koden for mig, så jeg håber der er nogle derude der kan hjælpe :-)

Her er mine to filer:

************
records.php
************


<?php require_once('Connections/db.php'); ?>
<?php
mysql_select_db($database_db, $db);
$query_records = "SELECT * FROM artist, record, label, country, artist_record WHERE artist.ArtistID = artist_record.ArtistID AND record.RecordID = artist_record.RecordID AND record.CountryID = country.CountryID AND record.LabelID = label.LabelID AND record.recordID < 100 ORDER BY artist.ArtistName, record.Year";
$records = mysql_query($query_records, $db) or die(mysql_error());
$row_records = mysql_fetch_assoc($records);
$totalRows_records = mysql_num_rows($records);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Vælg fra liste</title>
<link rel="stylesheet" href="style/style.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="form" method="post" action="result.php">
<table border="0" cellpadding="0" cellspacing="0">
  <?php do { ?>
  <tr>
      <td>
        <input type="checkbox" name="udvalgt" value="<?php echo $row_records['RecordID']; ?>">
      </td>
      <td>&nbsp;</td>
      <td><?php echo $row_records['ArtistName']; ?></td>
      <td>&nbsp;</td>
      <td><?php echo $row_records['Title']; ?></td>
      <td>&nbsp;</td>
      <td><?php echo $row_records['Year']; ?></td>
      <td>&nbsp;</td>
      <td><?php echo $row_records['Label']; ?></td>
      <td>&nbsp;</td>
      <td><?php echo $row_records['RecordNumber']; ?></td>
      <td>&nbsp;</td>
      <td><?php echo $row_records['Condition']; ?></td>
      <td>&nbsp;</td>
      <td><?php echo $row_records['Price']; ?></td>
  </tr>
  <?php } while ($row_records = mysql_fetch_assoc($records)); ?>
  <tr>
    <td colspan="15"><br>
      <input type="submit" name="Submit" value="Vis udvalgte">
      <br>
      <br></td>
    </tr>
</table>
</form>
</body>
</html>
<?php
mysql_free_result($records);
?>



***********
result.php
***********

<?php require_once('Connections/db.php'); ?>
<?php
$udvalgt = $_REQUEST["udvalgt"];
?>
<?php
mysql_select_db($database_db, $db);
$query_resultat = "SELECT * FROM artist, record, label, country, artist_record WHERE artist.ArtistID = artist_record.ArtistID AND record.RecordID = artist_record.RecordID AND record.CountryID = country.CountryID AND record.LabelID = label.LabelID AND record.RecordID = '$udvalgt'";
$resultat = mysql_query($query_resultat, $db) or die(mysql_error());
$row_resultat = mysql_fetch_assoc($resultat);
$totalRows_resultat = mysql_num_rows($resultat);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Resultat</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="style/style.css" type="text/css">
</head>

<body>
<table border="0" cellpadding="0" cellspacing="0">
  <?php do { ?>
  <tr>
    <td>&nbsp;</td>
    <td><?php echo $row_resultat['ArtistName']; ?></td>
    <td>&nbsp;</td>
    <td><?php echo $row_resultat['Title']; ?></td>
    <td>&nbsp;</td>
    <td><?php echo $row_resultat['Year']; ?></td>
    <td>&nbsp;</td>
    <td><?php echo $row_resultat['Label']; ?></td>
    <td>&nbsp;</td>
    <td><?php echo $row_resultat['RecordNumber']; ?></td>
    <td>&nbsp;</td>
    <td><?php echo $row_resultat['Condition']; ?></td>
    <td>&nbsp;</td>
    <td><?php echo $row_resultat['Price']; ?></td>
    <td>&nbsp;</td>
  </tr>
  <?php } while ($row_resultat = mysql_fetch_assoc($resultat)); ?>
</table>
</body>
</html>
<?php
mysql_free_result($resultat);
?>
Avatar billede likeaprayer Nybegynder
30. oktober 2003 - 21:48 #1
du kan ikke have flere checkboxes med samme navn....
det er derfor den overskriver værdien og du får kun sendt den sidste værdi der bliver tilføjet (altså den sidste box man krydser af);

giv dine checkboxes forskellige navne... altså name="checkbox1" name="checkbox2" osv osv osv!":
Avatar billede t-b-f Nybegynder
31. oktober 2003 - 09:53 #2
>likeaprayer

Tak for svar!

Jeg har nu skiftet dette:
<input type="checkbox" name="udvalgt" value="<?php echo $row_records['RecordID']; ?>">

Med dette:
<input name="checkbox<?php echo $row_records['RecordID']; ?>" type="checkbox" id="checkbox<?php echo $row_records['RecordID']; ?>" value="<?php echo $row_records['RecordID']; ?>">

Nu får hver checkbox et unikt navn udfra RecordID feks. checkbox509 og checkbox 756.

Desværre er min resultatside (result.php) med denne løsning helt blank ??
Avatar billede t-b-f Nybegynder
31. oktober 2003 - 10:05 #3
Jeg skal på en eller anden måde samle alle de RecordID'er der blev krydset af på records.php, og overføre dem til result.php hvor de så bliver sammenlignet med et nyt udtræk af databasen, der herefter viser de udvalgte poster
Avatar billede likeaprayer Nybegynder
31. oktober 2003 - 13:42 #4
lav i din result.php

if($_POST)
{
foreach ($_POST as $key => $value) {
  if(strstr($key,"checkbox")){
    echo "afkrydset: ".$key ."<br>";
  }
}
}
Avatar billede t-b-f Nybegynder
31. oktober 2003 - 14:10 #5
>likeaprayer

Endnu en gang Tak for svar!

Jeg tror du er inde på noget af det rigtige...nu viser min result.php en liste med de poster jeg krydsede af på records.php. Problemet er at de kun bliver vist som "afkrydset: checkbox+idnummer" feks checkbox567. Det jeg ønsker at vise på result.php er en ny liste svarende til den jeg får på records.php blot med de poster jeg udvalgte -dvs. en liste ikke kun med id-numre, men med en del flere felter feks Title, Year, Label, Price mv.

Jeg skal bruge det til at få en liste kun med de udvalgte poster, som jeg kan printe.

Venlig hilsen Thomas
Avatar billede likeaprayer Nybegynder
01. november 2003 - 08:11 #6
så lav på din  result.php

at den henter din checkbox liste frem igen

og med en if sætning checker om den er blevet afkrydset i records.php
når du udskriver den på result.php

$_POST er en array af elementer der bliver sendt fra en form.
prøv at rod med den..
Avatar billede t-b-f Nybegynder
01. november 2003 - 12:10 #7
>likeaprayer

Hej igen...

Som jeg nævner, er jeg ikke god til PHP, så det med at hente checkboxlisten frem igen og checke med en if-sætning er lidt som kinesisk for mig. Kan du give mig et lille eksempel på hvordan jeg kan gøre det?

Venlig hilsen Thomas
Avatar billede t-b-f Nybegynder
09. november 2003 - 13:20 #8
Lukker spørgsmålet og dropper funktionen på min hjemmeside
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