Avatar billede TumseMM Nybegynder
16. august 2011 - 16:58 Der er 31 kommentarer og
1 løsning

Kan man ikke hive det hele ud af databasen?

Hej Eksperten.dk

Kunne godt tænke mig at lave en historik over de forrige dages sætninger og svar.
Problemet er at min query kun hiver den første ud.

Kan man ikke gøre, så den hiver alle dagene ud, som den gør med den første?

Her er koden:


<?php

include("connect.php");

    $res = mysql_query ("SELECT * FROM q ORDER by id");
    $row = mysql_fetch_array($res);
    $date = $row['date'];   
    $text = $row['text'];
    $q_id = $row['id'];   
   
    echo '<form method="POST">
          <input type="submit" value='.$date.' name='.$date.'>';



if($_POST[$date])
{
    echo $text;
}

?>


Tak på forhånd!
Avatar billede lad Nybegynder
16. august 2011 - 17:06 #1
Din SQL sætning er rigtig nok. Den henter en masse data.

Denne data gemmes i et array. Et array er på en måde en variabel, men der er flere pladser i. Derfor vil din sætning "$date = $row['date']" kun give det første resultat i array'et da hentningen af dataen skal tage højde for at der er data på flere pladser. Prøv følgende i stedet:


<?php

include("connect.php");

    $res = mysql_query ("SELECT * FROM q ORDER by id");
    $row = mysql_fetch_array($res);
    $date = $row['date'];   
    $text = $row['text'];
    $q_id = $row['id'];   
   
    echo '<form method="POST">
          <input type="submit" value='.$date.' name='.$date.'>';



while($row = mysql_fetch_array($result))
{
    echo $row['date'];
//andre ting...
}

?>
Avatar billede lad Nybegynder
16. august 2011 - 17:08 #2
Det var noget skidt jeg fik skrevet der...

<?php

include("connect.php");

    $res = mysql_query ("SELECT * FROM q ORDER by id");
 
    echo '<form method="POST">
          <input type="submit" value='.$date.' name='.$date.'>';



while($row = mysql_fetch_array($res))
{
    echo $row['date'];
//andre ting...
}

?>
Avatar billede jetobi Juniormester
16. august 2011 - 17:29 #3
Eller den nemme løsning
  <?
 
$urlid = $_GET['id'];
mysql_connect("xxxxl", "xxx", "xxx")
or die(mysql_error());
mysql_select_db("xxxx") or die(mysql_error());
$result = mysql_query("SELECT * FROM dindatabase ")

or die(mysql_error()); 

while($row = mysql_fetch_array( $result )) {
    $date = $row['date'];   
    $text = $row['text'];
    $q_id = $row['id'];   
if($_POST[$date])
{
    echo $text;
} }
   
        ?>
Avatar billede olebole Juniormester
16. august 2011 - 18:00 #4
<ole>

TumseMM >> Jeg siger ikke, der ikke eksisterer gode grunde til at hjælpe dig. Jeg kan bare ikke få øje på dem, når du ikke gider forholde dig til den hjælp, du har fået i adskillige tråde.

Kan du stave til "Dårlig stil"?

/mvh
</bole>
Avatar billede TumseMM Nybegynder
16. august 2011 - 21:36 #5
Hej olebole. Ja, det kan jeg godt :) Hvorfor giver du ikke folk en chance til at svare, før du får blod på tanden? :) Det er nok dig der har dårlig stil.

@jesperkaae95 og @lad.
Begge ting virker! Der er bare et lille problem.. Det er stadig kun den første der virker (de vises allesammen nu!). Men hvis man trykker på andre datoer end den første sker der intet.

Tror det er noget med:
if($_POST[$date] && if ($_POST($row['date'])))

Hvordan får man den til at virke?

i    $res = mysql_query ("SELECT * FROM q");
    $row = mysql_fetch_array($res);
    $date = $row['date'];   
    $text = $row['text'];
    $q_id = $row['id'];   
   
    echo '<form method="POST">
          <input type="submit" value='.$date.' name='.$date.'>';

    while($row = mysql_fetch_array($res))
    {
        echo '<form method="POST">
        <input type="submit" value='.$row['date'].' name='.$row['date'].'>';
   
    }

?>

<div id="blueborder" style="width:600px;border:3px solid blue;margin: 0 auto;" />   
<?php
if($_POST[$date] && if ($_POST ($row['date'])))
{
    echo "<h2><center>$date</center></h2>";
    echo "<text><i><center>$text...</center></i></text>";
}
Avatar billede ggxdg Nybegynder
17. august 2011 - 13:13 #6
Du sagde du vil have alle dagane ud. Det får du så nu.
Du er nød til at uddybe, hvad der skal ske når du trykker på andre datoer. Lige nu kontrollerer dit script jo bare om der er data i dine posts.

Er det meningen at du vil hive data ud for bestemte datoer?
Avatar billede TumseMM Nybegynder
18. august 2011 - 06:52 #7
Ja præcis ! :) Den første virker, men den har også bundet sig til
echo '<form method="POST">
          <input type="submit" value='.$date.' name='.$date.'>';

Mens de andre datoer har denne:
  while($row = mysql_fetch_array($res))
    {
        echo '<form method="POST">
        <input type="submit" value='.$row['date'].' name='.$row['date'].'>';
   
    }

Den første virker .

Please help
Avatar billede ggxdg Nybegynder
18. august 2011 - 09:34 #8
Well... som jeg ser det, kan det gøres på 2 måder, enten ved at lave en query som sammenligner med den valgte dato, eller ved at gemme outputtet som et array, og fiske data ud af den.

Det med PHP-arrayet vil jeg tro er lidt langsommere og lidt mere upålideligt end en ny query:

<?php
    echo '<form method="POST">';
    $res = mysql_query ("SELECT date FROM q ORDER by id");
    while($row = mysql_fetch_array($res))
    {
        echo '<input type="submit" value='.$row['date'].' name='.$row['date'].'>';
    }
    echo '</form>
?>

<div id="blueborder" style="width:600px;border:3px solid blue;margin: 0 auto;" />   
<?php
if($_POST[$row['date']])
{
    $ares = mysql_query("SELECT DISTINCT * FROM q WHERE date = $_POST[$row['date']] ORDER by id");
    while($arow = mysql_fetch_array($ares))
    {
        echo "<h2><center>$arow['date']</center></h2>";
        echo "<text><i><center>$arow['text']...</center></i></text>";
    }
}


Koden her er utestet, så jeg kan ikke garantere for at den lige fungerer første gang, men meningen med den er:

Find alle datoer; opret en 'knap' for hver unik dato
Ved tryk på dato-'knap'; find alle poster fra den dato
Avatar billede ggxdg Nybegynder
18. august 2011 - 11:05 #9
Tidligere kode vil ikke fungere, den vil vil nok kun give et output, ved sidst outputtede dato, flg. burde virke:
<?php
    echo '<form method="POST">';
    $res = mysql_query ("SELECT date FROM q ORDER by id");
    while($row = mysql_fetch_array($res))
    {
        echo '<input type="submit" value='.$row['date'].' name="dato">';
    }
    echo '</form>
?>

<div id="blueborder" style="width:600px;border:3px solid blue;margin: 0 auto;" />   
<?php
if($_POST['dato'])
{
    $ares = mysql_query("SELECT DISTINCT * FROM q WHERE date = $_POST['dato'] ORDER by id");
    while($arow = mysql_fetch_array($ares))
    {
        echo "<h2><center>$arow['date']</center></h2>";
        echo "<text><i><center>$arow['text']...</center></i></text>";
    }
}
Avatar billede olebole Juniormester
18. august 2011 - 16:28 #10
TumseMM >> Jeg har selvfølgelig ingen anelse om, hvad der regnes for god eller dårlig stil de steder, du plejer at færdes.

Derfor tillader jeg mig - som ekspertenbruger gennem 12 år - at forklare dig, at det her ikke regnes for god stil at oprette nye tråde, når man i forvejen har åbne tråde, man endnu ikke har forholdt sig til. Specielt, når der i de tråde har ligget kommentarer i over et døgn.

Har man tid og overskud til at åbne en ny tråd, er der nok ikke mange, der køber påstanden, at man ikke har haft 'en chance for at svare'.
Avatar billede ggxdg Nybegynder
18. august 2011 - 22:15 #11
Krikey hvor jeg failer ofte når jeg koder uden at teste - "DISTICT" skal jo op under dato queryen, hvis du skal være sikker på ikke at få en masse ens datoer.
<?php
    echo '<form method="POST">';
    $res = mysql_query ("SELECT DISTINCT date FROM q ORDER by id");
    while($row = mysql_fetch_array($res))
    {
        echo '<input type="submit" value='.$row['date'].' name="dato">';
    }
    echo '</form>
?>

<div id="blueborder" style="width:600px;border:3px solid blue;margin: 0 auto;" />   
<?php
if($_POST['dato'])
{
    $ares = mysql_query("SELECT * FROM q WHERE date = $_POST['dato'] ORDER by id");
    while($arow = mysql_fetch_array($ares))
    {
        echo "<h2><center>$arow['date']</center></h2>";
        echo "<text><i><center>$arow['text']...</center></i></text>";
    }
}
Avatar billede TumseMM Nybegynder
20. august 2011 - 09:13 #12
Den giver bare den her error:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /Applications/XAMPP/xamppfiles/htdocs/webalizer/historik.php on line 42

Hvor linje 42 er den her:

    $ares = mysql_query("SELECT * FROM q WHERE date = $_POST['dato'] ORDER by id");

Men der mangler altså også en snuf og et semikolon her:
echo '</form> - som skulle være echo '</form>';

Hvad er der galt med mit script?
Avatar billede ggxdg Nybegynder
21. august 2011 - 00:57 #13
<?php
    echo '<form method="POST">';
    $res = mysql_query ("SELECT DISTINCT date FROM q ORDER by id");
    while($row = mysql_fetch_array($res))
    {
        echo '<input type="submit" value='.$row['date'].' name="dato">';
    }
    echo '</form>';
?>

<div id="blueborder" style="width:600px;border:3px solid blue;margin: 0 auto;" />   

<?php
    if($_POST['dato'])
    {
        echo $_POST['dato'];
        //$ares = mysql_query("SELECT * FROM q WHERE date = $_POST['dato'] ORDER by id");
        //while($arow = mysql_fetch_array($ares))
        //{
        //    echo "<h2><center>$arow['date']</center></h2>";
        //    echo "<text><i><center>$arow['text']...</center></i></text>";
        //}
    }
?>


Se om den echoer datoen som den bør være, hvis den gør, så prøv at fjerne "//"'erne
Avatar billede ggxdg Nybegynder
21. august 2011 - 00:58 #14
prøv evt.
if(isset($_POST['dato']))
i stedet for
if($_POST['dato'])
Avatar billede olebole Juniormester
21. august 2011 - 01:39 #15
- text og center tags - og XML-lukning af et div tag? Hvilken standard skrives der til?
Avatar billede TumseMM Nybegynder
21. august 2011 - 18:52 #16
Olebole. Gider du ikke godt fjerne dig fra mine indlæg.. Jeg er en 15 årig dreng der prøver at lære php, og du sidder bare som gammel slesk mand og nedvurderer andre. :)
Avatar billede olebole Juniormester
21. august 2011 - 19:06 #17
Hvis du generelt opfatter folk, der prøver at lære dig noget, som værende sleske, nedvurderende og/eller gamle, er der helt andre ting, du desparat har brug for at lære!

Hvis ikke man må gøre dig opmærksom på, at den kode, du skriver, er dårlig, kan du jo aldrig lære at skrive god kode. Du har i den grad behov for at lære at lære - og at modtage kritik.

Sålænge vi ikke kalder dig for "en lille snotunge, der lugter fælt af gylp og uskiftet ble", skulle du måske også overveje at lære at tale ordentligt til dine omgivelser.

Du er ikke hjemme i SFO'en. Opfør dig i overensstemmelse hermed!
Avatar billede olebole Juniormester
21. august 2011 - 19:08 #18
- og så er du i øvrigt slet ikke i en position, hvor du kan gøre et offentligt forum til dit personlige. Hvis du ikke ønsker bestemte brugere kommenterer på dine tråde, så lad være med at oprette dem
Avatar billede TumseMM Nybegynder
21. august 2011 - 19:09 #19
Hej ggxdg. Det virker næsten!!

Altså hvis jeg putter 2x skråstreg før :
//$ares = mysql_query("SELECT * FROM q WHERE date = $_POST['dato'] ORDER by id");
        //while($arow = mysql_fetch_array($ares))
        //{
        //    echo "<h2><center>$arow['date']</center></h2>";
        //    echo "<text><i><center>$arow['text']...</center></i></text>";
        //}

Så når jeg trykker på de forskellige datoer bliver de postet ud, men hvis jeg fjerner skråstregerne fra det ovenstående kommer der en error. Når jeg trykker på de forskellige datoer bliver selve datoen executet ud.

Hvad er der galt med det ovenstående script?
Avatar billede olebole Juniormester
21. august 2011 - 19:18 #20
Er fejlen den samme, som du beskrev i #12 - eller har den ændret sig?

Udover HTML'en i koden som sagt ikke hænger sammen, så kunne du med fordel prøve:


$ares = mysql_query("SELECT * FROM q WHERE date = '$_POST['dato']' ORDER by id") or die (mysql_error());

Avatar billede TumseMM Nybegynder
23. august 2011 - 07:28 #21
Virker ikke. Desværre :(
Avatar billede olebole Juniormester
23. august 2011 - 11:25 #22
Prøv at være en smule informativ. hvad betyder "virker ikke"? Hvad sker - og hvad sker ikke? Får du fejl - og hvis du gør, hvad siger de så?

Derudover er jeg efterhånden i tvivl om, hvordan den aktuelle kode ser ud
Avatar billede TumseMM Nybegynder
23. august 2011 - 20:59 #23
Hej olebole.

Koden er:

<?php

include("connect.php");

    echo '<form method="POST">';
    $res = mysql_query ("SELECT DISTINCT date FROM q WHERE date < DATE(NOW()) ORDER by id");
    while($row = mysql_fetch_array($res))
    {
        echo '<input type="submit" value='.$row['date'].' name="dato">';
    }
    echo '</form>';
?>

<div id="blueborder" style="width:600px;border:3px solid blue;margin: 0 auto;" />   

<?php
    if($_POST['dato'])
    {
        echo '<center><h2>'.$_POST['dato'].'</h2></center>';


        $eres = mysql_query ("SELECT * FROM q WHERE date = $_POST['dato'] ");
        $erow = mysql_fetch_array($eres);
        $text = $row['text'];
       
            echo $text;
    }
?>

Linje 45 som er denne:
$eres = mysql_query ("SELECT * FROM q WHERE date = $_POST['dato'] ");

Kommer denne error:


Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /Applications/XAMPP/xamppfiles/htdocs/webalizer/historik.php on line 45
Avatar billede olebole Juniormester
23. august 2011 - 22:00 #24
Hvorfor har du ikke lavet den ændring, jeg foreslog i #20?
Avatar billede olebole Juniormester
23. august 2011 - 22:04 #25
Det her holder stafig heller ikke:

<div id="blueborder" style="width:600px;border:3px solid blue;margin: 0 auto;" />

Det skal enten være:

<div id="blueborder" style="width:600px;border:3px solid blue;margin: 0 auto;">

- eller:

<div id="blueborder" style="width:600px;border:3px solid blue;margin: 0 auto;"></div>
Avatar billede TumseMM Nybegynder
25. august 2011 - 11:32 #26
Fordi det ikke gør nogen forskel. Bare fordi du har puttet mysql_error på skulle det da ikke gøre en forskel. Og de to ' gør heller ingen forskel. Ellers tak for hjælpen!! :)
Avatar billede olebole Juniormester
25. august 2011 - 15:37 #27
Uden de to apostroffer skal der udløses en fejl, så der er ikke noget "bare" i det - tværtimod!

Prøv at vise hele din kode. Jeg tvivler stærkt på, det er i noget af det, du viser, som udløser en parse error
Avatar billede TumseMM Nybegynder
27. august 2011 - 12:01 #28
<head>
<title></title>

<style type="text/css">
h1 {font-size: 35px; font-family: calibri; color:black}
h2 {font-size: 20px; font-family: courier; color:white}
text {font-size: 17px; font-family: calibri; color:black;}
p {font-size: 15px; font-family: century gothic}
#blueborder {
-moz-border-radius: 30px;
border-radius: 30px;
}
</style>
</head>
<body style="background: #b8e1fc; /* Old browsers */
background: -moz-linear-gradient(top, #b8e1fc 0%, #a9d2f3 10%, #90bae4 25%, #90bcea 37%, #90bff0 50%, #bdf3fd 95%, #6ba8e5 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#b8e1fc), color-stop(10%,#a9d2f3), color-stop(25%,#90bae4), color-stop(37%,#90bcea), color-stop(50%,#90bff0), color-stop(95%,#bdf3fd), color-stop(100%,#6ba8e5)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #b8e1fc 0%,#a9d2f3 10%,#90bae4 25%,#90bcea 37%,#90bff0 50%,#bdf3fd 95%,#6ba8e5 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #b8e1fc 0%,#a9d2f3 10%,#90bae4 25%,#90bcea 37%,#90bff0 50%,#bdf3fd 95%,#6ba8e5 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #b8e1fc 0%,#a9d2f3 10%,#90bae4 25%,#90bcea 37%,#90bff0 50%,#bdf3fd 95%,#6ba8e5 100%); /* IE10+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#b8e1fc', endColorstr='#6ba8e5',GradientType=0 ); /* IE6-9 */
background: linear-gradient(top, #b8e1fc 0%,#a9d2f3 10%,#90bae4 25%,#90bcea 37%,#90bff0 50%,#bdf3fd 95%,#6ba8e5 100%); /* W3C */"</body>




<?php

include("connect.php");

    echo '<form method="POST">';
    $res = mysql_query ("SELECT DISTINCT date FROM q WHERE date < DATE(NOW()) ORDER by id");
    while($row = mysql_fetch_array($res))
    {
        echo '<input type="submit" value='.$row['date'].' name="dato">';
    }
    echo '</form>';
?>

<div id="blueborder" style="width:600px;border:3px solid blue;margin: 0 auto;" />   

<?php
    if($_POST['dato'])
    {
        echo '<center><h2>'.$_POST['dato'].'</h2></center>';


        $eres = mysql_query ("SELECT * FROM q WHERE date = $_POST['dato'] ");
        $erow = mysql_fetch_array($eres);
        $text = $row['text'];
       
            echo $text;
    }
?>

Avatar billede TumseMM Nybegynder
27. august 2011 - 12:02 #29
Hov glemte lige apostrofferne og mysql erroren på:

        $eres = mysql_query ("SELECT * FROM q WHERE date = $_POST['dato'] ");

Tak på forhånd!!
Avatar billede olebole Juniormester
27. august 2011 - 17:51 #30
Som jeg skrev til dig i en tidligere tråd, bør du få styr på grundlæggende HTML og CSS. Få dog nu al det CSS-snask væk fra dit body-tag og lagt det op i dit stylesheet. Så kunne det være, du f.eks. ville kunne overskue, at dit body-tag stadig ikke afsluttes.

Derudover forstår jeg ikke, hvorfor du viser to koder, der øjensynlig intet har med hinanden at gøre. Hvordan hænger din HTML-kode sammen med din PHP-kode? Hvad er hvad og hvorfor?
Avatar billede TumseMM Nybegynder
13. oktober 2011 - 21:59 #31
lukker tråden
Avatar billede olebole Juniormester
13. oktober 2011 - 22:19 #32
Når nu du ikke selv gider forholde dig til de spørgsmål, du stiller - mener du så, andre har grund til at spilde tid på dig?
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