Avatar billede sabumnim Novice
22. juli 2007 - 17:19 Der er 21 kommentarer og
1 løsning

Vis indhold, hvis checkbox checked

På en kommende side vil jeg gerne have at man i BACKEND kan gøre følgende:

Indtaste indhold i DB (lidt som en enkelt nyhedsvisning) hvilket foregår ved input felter.
// alt dette har jeg styr på //

Underneden skal der så være en CHECKBOX som skal CHECKES førend dette indhold vises på index.php.
Altså forstået på den måde at hvis denne CHECKBOX ikke er CHECKET vil indholdet ikke vises på forsiden, og resten af indholdet på forsiden skal se ud som normalt.

Mulig opsætning på Index.php:
- menu
- Checked content (det beskrevne herover)
- Velkomst
- Små nyheder
- Kalender
- osv.

Hvis der ikke er CHECKED ser Index.php sådan ud:
(der er således ikke noget empty space på forsiden)
- menu
- Velkomst
- Små nyheder
- Kalender
- osv.

Håber en eller anden kan hjælpe mig.
Har ikke noget kode jeg kan vise da jeg forventer lidt hjælp til dette her igennem :0)

//CArsten
Avatar billede jakobdo Ekspert
22. juli 2007 - 17:32 #1
Du kunne starte med at lave en tilføjelse til tabellen, f.eks.:

navn: checked
datatype: tinyint(1)
default: 0 eller 1.
0 = unchecked
1 = checked

$checked = 0;
if(isset($_POST['checked']))
{
$checked = 1;
}

Så smider du $checked ind i tabellen.
Avatar billede sabumnim Novice
22. juli 2007 - 17:48 #2
Hej Jakobdo

Lad mig lige forstå det her korrekt.

Jeg laver en nyhed som eks. kunne se sådan ud i INSERT:
(værdier)
- overskrift
- teksten
- date (timestamp så sker automatisk)
- checked

Ved submit i min indtastningsformular laver jeg så de forskellige input types og tilsidst laver jeg en checkbox som har smides ind i min tabel og er den sat til 0 vises intet men er den derimod sat til 1 (checked) smides indholdet i de øvrige input felter i min DB og publiseres på frontend?

//Carsten
Avatar billede jakobdo Ekspert
22. juli 2007 - 17:52 #3
Ahh, det er næsten rigtigt.
I din formular laver du:

<input type="checkbox" name="checked">

Og den side som så behandler data, der tilføjer du så:
$checked = 0;
if(isset($_POST['checked']))
{
$checked = 1;
}

Det vil så gemme 1 hvis checkboxen er checked eller 0 hvis den ikke er checked.

På din forside, skal du så lave:
SELECT * FROM TABEL WHERE checked = 1;

Så vil den kun vise data hvor checked er checked. :o)
Avatar billede sabumnim Novice
22. juli 2007 - 17:57 #4
øhhh ja....

Jeg forsøger lige at lave noget test halløj lokalt og så smider jeg lige koden herind, som du så gerne må kommentere på.

//Carsten
Avatar billede jakobdo Ekspert
22. juli 2007 - 18:36 #5
Øhhh okay! :o)
Det gør du bare, så kigger jeg eller andre på det.
Avatar billede sabumnim Novice
22. juli 2007 - 19:50 #6
Ok, her kommer en løsningsmodel som du/I gerne må komme med respons på.
Min INSERT fil putter rigtig nok INDHOLD i min DB men, når jeg tager et kig i min MySql står CHECKED = 0 trods det at jeg CHECKER den på selve INSERT FILEN.

Min INSERT fil:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Checkbox test</title>
</head>

<body>

    <form name="form1" id="form1" method="post" action="">
          <input type="hidden" name="Submit" value="1">
     
   
        <!--<p>Datoen: (eksempel: Mandag den 4. feb. 2006)<br />-->
        <input type="hidden" name="date" class="felt" value="<? echo $row['date'] ;?>" />
        </p>
        <p>Overskrift:<br />
        <input type="text" name="overskrift" class="felt" value="<? echo $row['overskrift'] ;?>" />
        </p>
        <p>Tekst:<br />
      <textarea name="tekst" cols="35" rows="6" class="felt2"><? echo $row['tekst'];?></textarea>
        </p>
        <p>Check hvis den skal vises:<br />
      <input type="checkbox" name="checked" value="<? echo $row['checked'] ;?>" />
        </p>
        <p>
          <input type="submit" name="opdater" value="Afsend" class="knap" />
        </p>
  </form>
<?
            require_once "../connectry.php";
        if(isset($_POST['Submit'])){
        $date = htmlentities ($_POST['date']);
        $overskrift = htmlentities ($_POST['overskrift']);
        $tekst = htmlentities ($_POST['tekst']);
        $checked = htmlentities ($_POST['checked']);
        if(!get_magic_quotes_gpc()){
        $date = addslashes($date);
        $overskrift= addslashes($overskrift);
        $tekst= addslashes($tekst);
        $checked = addslashes($checked);
        }
        $query="INSERT INTO nyheder (`date`,overskrift,tekst,checked) VALUES (NOW(),'$overskrift','$tekst','$checked')";
       
        mysql_query($query);
        echo "Nyheden er nu lagt i databasen!<br />";
        echo "<a href=\"nyhederne.php\">Tilbage til nyhederne</a>";
        }       
       
        ?>
</body>
</html>

///////////// INSERT FIL SLUTTER ////////////

DUMP fra MySql:
-- Struktur-dump for tabellen `nyheder`
--

CREATE TABLE `nyheder` (
  `id` int(11) NOT NULL auto_increment,
  `date` date NOT NULL default '0000-00-00',
  `overskrift` tinytext NOT NULL,
  `tekst` text NOT NULL,
  `checked` tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Data dump for tabellen `nyheder`
--

INSERT INTO `nyheder` VALUES (3, '2007-07-22', 'hejsa', 'Dette er en tester', 0);
INSERT INTO `nyheder` VALUES (4, '2007-07-22', 'Endnu en test', 'Hejsa vi tester', 0);
       
////////// DUMP slutter /////////////

Min visnyhed fil:
<?php


$foresp = mysql_query("SELECT * FROM nyheder WHERE checked = 1" );
while($data = mysql_fetch_array($foresp)){

$id = $data['id'];
$overskrift = $data['overskrift'];
$tekst = $data['tekst'];
$checked = $data['checked'];
$dato_array = getdate();
$date = $dato_array['mday'].'/'.$dato_array['mon']. '-'.$dato_array['year'];
$tegn = strlen($tekst); // Hvor mange tegn er der i teksten?


if($tegn >= 30){ // hvis der er mere end 150 tegn skal teksten besk?res
$tekst = substr($tekst, 0, 30)."..."; //substr() tager de f?rste 150 tegn og smider resten v?k.
}
echo "<span class=\"datestyle\">".date("d / m -'y", strtotime($data['date']))."</span><br />";
echo "<span class=\"calHeader\" title='$overskrift'>$tekst</span><br /><br />";
}
?>
Avatar billede jakobdo Ekspert
22. juli 2007 - 19:54 #7
Du skal ikke lave:

$checked = htmlentities ($_POST['checked']);

Du skal lave:
$checked = 0;
if(isset($_POST['checked']))
{
$checked = 1;
}
Avatar billede sabumnim Novice
22. juli 2007 - 19:55 #8
øhhh ja det prøver jeg så men hvad med det tjek jeg laver på SUBMIT...som så vil poste nyheden i min DB?
Avatar billede sabumnim Novice
22. juli 2007 - 20:15 #9
Hej Jakobdo

Har fået det til at virke men har lige et lille TILLÆGSSPØRGSMÅL som jeg håber du kan svare på....

Jeg vil jo gerne smide den tekst som jeg så ECHO´er ud ind i en div boks men den div boks skal jo så naturligvis heller ikke vises hvis Checked = 0...

Kan jeg gøre det i min visnyhed fil?

//Carsten
Avatar billede jakobdo Ekspert
22. juli 2007 - 20:25 #10
Ja.
Men snakker vi du kun skal vise nyheder hvor checked = 1?
Hvis ja, så kan du netop bruge sql: SELECT * FROM nyheder WHERE checked = 1

Hvis du vil vise alle nyheder, men vise mere info hvor checked = 1, så kunne du:

$query = mysql_query("SELECT * FROM nyheder");
if(mysql_num_rows($query)>0)
{
while($row = mysql_fetch_assoc($query))
{
if($row['checked'] == 1)
{
echo $row['ekstra_data'];
}
else
{
echo 'Ingenting...';
}
}
}
Avatar billede sabumnim Novice
22. juli 2007 - 20:31 #11
hej igen

Jeg skal kun benytte dette med at vise en "oneliner" én gang på index siden.

Men af denne årsag vil jeg jo naturligvis gerne have at jeg kunne flette det hele ind i en div box som er stylet i forhold til resten af indholdet på index siden.

Kan dette lade sig gøre med f.eks:
$query = mysql_query("SELECT * FROM nyheder");
if(mysql_num_rows($query)>0)
{
while($row = mysql_fetch_assoc($query))
{
if($row['checked'] == 1)
{
echo $row['ekstra_data'];
}
else
{
echo 'Ingenting...';
}
}
}
Avatar billede jakobdo Ekspert
22. juli 2007 - 20:47 #12
Det kommer helt an på hvordan du ønsker det vist til dine besøgende.
Men ja, det kan godt lade sig gøre.
Avatar billede sabumnim Novice
22. juli 2007 - 20:55 #13
Hej igen

Lad os sige at jeg ønsker at denne "box" hvor min enkelte nyhed skal ligge er stylet på den måde at den har en gradient baggrund med borders.

Bare et tænkt eksempel.

Når jeg så i min visnyhed foil koder noget op så giver jeg min tekst som jeg netop har add´ed og klikket i CHECKED så kommer denne div stylede box til synes på indexsiden, men klikker jeg istedet IKKE i CHECKED så vil der IKKE blive skabt noget unødvendig "tom rum" på selve index siden så der er noget tomt plads førend den egentlige hovedtekst som altid er på indexsiden.

Klikket i CHECKED:
- checked (indholdet som kun vises ved klik i CHECKED)
- Velkomst (standard indhold på siden)

IKKE klikket i CHECKED:
- TOM plads som er opstået da min DIV style stadig er aktiv (ønskes ikke)
- Velkomst (standard indhold på siden)

//Carsten
Avatar billede jakobdo Ekspert
22. juli 2007 - 21:19 #14
Jeg er stadig ikke helt 100% sikker på hvad du efterhånden prøver på.
Men du kunne jo forsøge med:

$query = mysql_query("SELECT * FROM nyheder WHERE checked = 1");
if(mysql_num_rows($query)>0)
{
//Vi har nyheder som skal vises...
echo '<div class="Smart_style">';
while($query = mysql_fetch_assoc($query))
{
echo $row['nyhed'] . '<br />';
}
echo '</div>';
}
Avatar billede sabumnim Novice
22. juli 2007 - 21:27 #15
Hej igen

Ok forklaret på en anden måde.

Min standard index side har en opbygning og på denne side er der noget VELKOMST tekst som står i CONTENT delen.

Nu har vi så fået lavet sådan at jeg kan smide en appetizer ind på siden som aktiveres via CHECKED.

Men er dette IKKE lagt ind står siden flot og der er ikke noget overflødig luft nogele steder, den er med andre ord TIGHT.

Når jeg så ligger indhold i min CHECKED skal denne del komme ind FØR min velkomst tekst.
Checked er så stylet på den måde at den ligger i en DIV box som IKKE ER TILSTEDE når CHECKED ikke er aktiveret.

Men når CHECKED er aktiveret fremkommer teksten i denne div box som er stylet.
Er CHECKED IKKE AKTIVERET står der bare en VELKOMST tekst som så rykker op på sin oprindelige plads hvor den er placeret som standard.

Håber du nu er med og kan sige om dette er muligt?

//Carsten
Avatar billede jakobdo Ekspert
22. juli 2007 - 21:49 #16
Jeg er med, og du skal så bare lave koden som mit sidste indlæg.
Avatar billede sabumnim Novice
22. juli 2007 - 21:58 #17
oki det prøver jeg så...

Vender tilbage

//Carsten
Avatar billede sabumnim Novice
22. juli 2007 - 22:19 #18
Hej Jakobdo

Det virker sgu ganske som det skal....

Så hvis du smider et svar skal du få sendt nogle point i din retning.

Tusinde tak for hjælpen

//Carsten
Avatar billede jakobdo Ekspert
23. juli 2007 - 09:02 #19
Svar!
Avatar billede jakobdo Ekspert
23. juli 2007 - 12:21 #20
Takker for point.
Avatar billede sabumnim Novice
23. juli 2007 - 12:38 #21
Hej Jakobdo

Det er helt sikkert mig der takker for dit veludførte arbejde.

Håber vi igen en gang kan krydse "stier"

//Carsten
Avatar billede jakobdo Ekspert
23. juli 2007 - 12:53 #22
:o)
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