Avatar billede far_mand Nybegynder
09. april 2004 - 11:46 Der er 30 kommentarer og
1 løsning

problemer med mysql og php

Hejsa..
Jeg har webhotel hos b-one, hvis nogen kender det..
Og jeg har fundet et "jokesystem" hvor folk har mulighed for at tilføje jokes!
Se her: http://www.freeak.dk/jokesys1/index.php

Men når jeg klikker på jokekategorier, og vælger en kategori siger den en eller anden fejl..

Jeg har oprettet dette på min mysql: (på: phpmyadmin.freeak.dk)
CREATE TABLE joke_jokes (
  id int(6) NOT NULL auto_increment,
  joker varchar(50) NOT NULL,
  titel varchar(200) NOT NULL,
  kategori varchar(50) NOT NULL,
  joken text NOT NULL,
  dato varchar(40) DEFAULT '0' NOT NULL,
  PRIMARY KEY (id)
);

Og min kategori side ser sådan ud:
<? include("header.php"); ?>

<center>Vælg kategori</center><br><br>

<center>
<a href="katelist.php?kategori=Alle børnene">Alle børnene</a><br>
<a href="katelist.php?kategori=Århusianere">Århusianere</a><br>
<a href="katelist.php?kategori=Advokater">Advokater</a><br>
<a href="katelist.php?kategori=Blondiner">Blondiner</a><br>
<a href="katelist.php?kategori=Scoretricks">Scoretricks</a><br>
<a href="katelist.php?kategori=Sport og fritid">Sport og fritid</a><br>
<a href="katelist.php?kategori=De frække">De frække</a><br>
<a href="katelist.php?kategori=Arbejde">Arbejde</a><br>
<a href="katelist.php?kategori=Dyr">Dyr</a><br>
<a href="katelist.php?kategori=Blandet">Blandet</a><br>

<? include("footer.php"); ?>

connect side ser sådan ud:
<?
mysql_connect("localhost","freeak_dk","PASSWORD") OR DIE(  "Kunne ikke etabler en forbindelse til MySQLen.!");
mysql_select_db("freeak_dk") OR DIE(  "Kunne ikke finde databasen!");
?>

Mine mysql oplysninger ser sådan ud:(dem jeg fik tilsendt af min domæne/webhotel udbyder)
MYSQL:
Host: Localhost
Database: freeak_dk
Username: freeak_dk
Password: tjah, skal i jo ikk bruge :D
jeg logger ind på min mysql via phpmyadmin.freeak.dk

Er der nogen som kan se hvad jeg gør galt??! ( Er totalt ny inden for php/mysql :D )
Avatar billede far_mand Nybegynder
09. april 2004 - 11:46 #1
Katelist ser sådane ud:

<? include("header.php"); ?>
<? include("connect.php"); ?>

        <div align="center">
          <table border="0" cellpadding="2" cellspacing="0" width="100%" height="100%">
            <tr>
              <td height="100%">
                <p align="center"><? echo"$kategori"; ?><p>
                Tryk på jokens titel for at læse joken.<br>
                <br>
                <center>
  <table border="0" cellpadding="0" cellspacing="0" width="98%">
    <tr>
      <td width="20%"><b>Nr:</b></td>
      <td width="80%"><b>Joke titel:</b></td>
      </tr>
<?


$query = mysql_query("SELECT * FROM jokes WHERE kategori = '$kategori' ORDER BY id DESC");
while($r = mysql_fetch_array($query)) {
$titel = $r["titel"];
$id = $r["id"];
$joker = $r["joker"];
$count++;

echo"
      <tr>
        <td width=\"10%\">$count.</td>
        <td width=\"60%\"><a href=\"vis.php?id=$id\">$titel</a></td>
      </tr>
";
}
?>
    </table>
  </center>
              </td>
            </tr>
          </table>
        </div>

<? include("footer.php"); ?>
Avatar billede far_mand Nybegynder
09. april 2004 - 12:16 #2
? ingen der kan hjælpe ? :(
Avatar billede htm Nybegynder
09. april 2004 - 12:21 #3
Prøv tjek hvilken fejl der kommer:

$query = mysql_query("SELECT * FROM jokes WHERE kategori = '$kategori' ORDER BY id DESC") or die(mysql_error());
Avatar billede far_mand Nybegynder
09. april 2004 - 12:26 #4
Somsagt, jeg er helt ny inden for mysql/php..

Hvad skal jeg med den sætning?:
$query = mysql_query("SELECT * FROM jokes WHERE kategori = '$kategori' ORDER BY id DESC") or die(mysql_error());
Avatar billede htm Nybegynder
09. april 2004 - 12:27 #5
Smid den ind i din kattelist.php i stedet for

$query = mysql_query("SELECT * FROM jokes WHERE kategori = '$kategori' ORDER BY id DESC");
Avatar billede htm Nybegynder
09. april 2004 - 12:29 #6
Prøv og smid denne ind i toppen:

$kategori = $_GET['kategori'];

lige efter:
<? include("header.php"); ?>
<? include("connect.php"); ?>
Avatar billede far_mand Nybegynder
09. april 2004 - 12:29 #7
Så jeg sletter linie 20 som ser sådan ud:
$query = mysql_query("SELECT * FROM jokes WHERE kategori = '$kategori' ORDER BY id DESC");

og indsætter:
$query = mysql_query("SELECT * FROM jokes WHERE kategori = '$kategori' ORDER BY id DESC") or die(mysql_error());
Avatar billede far_mand Nybegynder
09. april 2004 - 12:30 #8
ok prøver lige, men har det nogen betydning hvad tabellen hedder som jeg oprettet i mysqlen??
Avatar billede htm Nybegynder
09. april 2004 - 12:31 #9
Ja de gør det samme, med undtagelse af at der er tilføjet or die(mysql_error()) på min. Det gør at den skriver den fejl ud som din wuery returnerer.
Avatar billede htm Nybegynder
09. april 2004 - 12:32 #10
Ja det har det da... Det har jeg ikke lige set.

Du har oprettet en tabel der hedder joke_jokes og du henter fra jokes...

Sådan skal den se ud med den tabel du har oprettet...

$query = mysql_query("SELECT * FROM joke_jokes WHERE kategori = '$kategori' ORDER BY id DESC") or die(mysql_error());
Avatar billede far_mand Nybegynder
09. april 2004 - 12:34 #11
Og jeg skal stadig smide det her i toppen??

$kategori = $_GET['kategori'];

efter:
<? include("header.php"); ?>
<? include("connect.php"); ?>
Avatar billede htm Nybegynder
09. april 2004 - 12:34 #12
ja !
Avatar billede far_mand Nybegynder
09. april 2004 - 12:35 #13
Skal jeg sætte det ind som du skrev eller sådan:

<? $kategori = $_GET['kategori']; ?>
Avatar billede far_mand Nybegynder
09. april 2004 - 12:47 #14
satte det ind sådan, <? $kategori = $_GET['kategori']; ?> og nu står der ikke det underlige noget mere..
Men når jeg prøver at tilføje en joke sker der nada.. :(
Avatar billede far_mand Nybegynder
09. april 2004 - 13:12 #15
Heeelp :D
Avatar billede jammerlab Nybegynder
09. april 2004 - 13:21 #16
Kan vi ikke lige få afvide hvad det er for en fejl den kommer med?

"Men når jeg klikker på jokekategorier, og vælger en kategori siger den en eller anden fejl.." << ikke særlig uddybende :)
Avatar billede htm Nybegynder
09. april 2004 - 13:26 #17
Nu kender vi ikke koden til din tilføj joke..

Men det er samme fejl du skal kigge efter.
i din query skal det vare joke_jokes som tabel.

Du skal fange variablerne fra et $_POST array

dvs. i starten skriver du
$kategori = $_POST['kategori'];

og det gør du for alle felterne...
Avatar billede far_mand Nybegynder
09. april 2004 - 13:34 #18
Du får den lige senre..
Avatar billede jammerlab Nybegynder
09. april 2004 - 13:58 #19
Fatter heller ikke lige htm kan hjælpe dig uden du har sagt hvad pokker fejlen er :) eller er det bare mig der er lost, og du har sagt den? :/
Avatar billede htm Nybegynder
09. april 2004 - 14:03 #20
talker>> Fejlen var "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource" det kunne man se på hans link før det blev rettet... Nu har han problemer med opret joke, hvilket er samme, (register_global = off)
Avatar billede jammerlab Nybegynder
09. april 2004 - 14:05 #21
Ah selvf. har det :)
Avatar billede far_mand Nybegynder
09. april 2004 - 15:27 #22
Så er jeg tilbage.. finder lige koden til at oprette at oprette jokes..
Avatar billede far_mand Nybegynder
09. april 2004 - 15:28 #23
<?
if (!$mode) {
?>

<? include("header.php"); ?>

<center>
  <table border="0" cellpadding="2" cellspacing="0" width="100%">
    <tr>
      <td>
        <p align="center">Tilføj en joke !</p>
      </center>
Her kan du tilføje en joke !
      <form action="<? echo"$PHP_SELF"; ?>?mode=tilfoj" method="post"><br><br>
      <div align="center">
        <center>
        <table border="0" cellpadding="3" cellspacing="0">
          <tr>
            <td>Dit navn :</td>
            <td><INPUT TYPE="text" name="joker" class="tekstboks" size="36"></td>
          </tr>
          <tr>
            <td>Overskrift :</td>
            <td><INPUT TYPE="text" name="titel" class="tekstboks" size="36"></td>
          </tr>
          <tr>
            <td>Joke :</td>
            <td><TEXTAREA WRAP="physical" ROWS="10" COLS="30" name="joke" class="tekstboks"></TEXTAREA></td>
          </tr>
          <tr>
            <td>Kategori :</td>
            <td><select name="kategori" class="tekstboks" size="1">
            <option value="Blandet" selected>Blandet</option>
            <option value="Advokater">Advokater</option>
            <option value="Århusianere">Århusianere</option>
            <option value="Alle børnene">Alle børnene</option>
            <option value="Arbejde">Arbejde</option>
            <option value="Blondiner">Blondiner</option>
            <option value="Dyr">Dyr</option>
            <option value="Sport og fritid">Sport og fritid</option>
            <option value="Scoretricks">Scoretricks</option>
            <option value="De frække">De frække</option>
</select></td>
          </tr>
          <tr>
            <td></td>
            <td><input type="submit" value=" Tilføj joke " class="knap"></td>
          </tr>
        </table>
        </center>
      </div>
      </form>
    </td>
  </tr>
  </table>

<?
include("footer.php");
?>
<?
}
if ($mode == "tilfoj") {
?>

<?
include("header.php");
include ("connect.php");
             
// Tjekker om felterne er udfyldte
    function tilbage($meddelelse) {
        echo  "$meddelelse";
        include("footer.php");
        exit;       
    }

    if (!$titel) tilbage( "<b>Du har ikke udfyldt feltet Joke titel, gå tilbage og gør det, tak!<br></b>");
    if (!$joke) tilbage( "<b>Du har ikke udfyldt feltet Din Joke, gå tilbage og gør det, tak!<br></b>");
   
// Fjerne HTML muligheder i Joken

    if (ereg ("<",$joke) || ereg (">",$joke) ) {
echo "<b>Felterne må ikke indeholde HTML! Det gør det da du har < eller > i feltet!";
include("footer.php");
exit;
}

    if (ereg ("<",$titel) || ereg (">",$titel) ) {
echo "<b>Felterne må ikke indeholde HTML! Det gør det da du har < eller > i feltet!";
include("footer.php");
exit;
}

// Smider informationerne ind i MySQLen
$joke = nl2br($joke);
$dato = date("d-m-Y H:i:s", time());
$query = mysql_query("INSERT INTO jokes (joker, titel, kategori, joken, dato)" . "VALUES ('$joker','$titel','$kategori','$joke','$dato')");

        print "
  <center>
  <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">
    <tr>
      <td>
        <p align=\"center\">Din joke er tilføjet !</p>
      </center>
Din joke er nu tilføjet til systemet !
<td>
  </tr>
  </table>
";
  include("footer.php");

?>
<?
}
?>
Avatar billede far_mand Nybegynder
09. april 2004 - 16:25 #24
Sover i :D
Avatar billede far_mand Nybegynder
09. april 2004 - 16:53 #25
Der var den ^
Avatar billede htm Nybegynder
09. april 2004 - 19:37 #26
Har du fået det til at virke?

"Der var den" ?
Avatar billede far_mand Nybegynder
10. april 2004 - 16:53 #27
Nej det var bare koden som den ser ud nu til at oprette jokes..

Forstå ikke hvor jeg skal skrive det du sagde henne :S

Du skal fange variablerne fra et $_POST array

dvs. i starten skriver du
$kategori = $_POST['kategori'];

:S
Avatar billede htm Nybegynder
12. april 2004 - 15:41 #28
Det er meget simpelt at lave hvis man kender en smule til php. Det ville klart være mest lærerigt får dig at forsøge at lave det selv.

Det det handler om er at register_globals er slået fra på dit webhotel, dette gør at data som man modtager via en form ikke kan tilgås med $navnetpåfeltet men man skal bruge $_POST['navnetpåfeltet'] .

$_POST[] er et array som indeholder de data der bliver postet til siden, eks. fra en form
$_GET[] er et array der indeholder hvad der er i adresselinien af variabler

så eks. denne if (!$mode) { skal være if (!$_GET['mode']) { fordi det er data du får fra adresselinien fil.php?mode=tilfoej
Det samme med denne: if ($mode == "tilfoj") {

denne
if (!$titel) tilbage( "<b>Du har ikke udfyldt feltet Joke titel, gå tilbage og gør det, tak!<br></b>");
skal så være:
if (!$_POST['titel']) tilbage( "<b>Du har ikke udfyldt feltet Joke titel, gå tilbage og gør det, tak!<br></b>");
Da det er data der postes til siden, via formen...

Som du kan se det er ret nemt, hvis man lige gider at sætte sig lidt ind i det.
Du kan læse mere her: http://www.php.net/manual/en/language.variables.predefined.php#language.variables.superglobals

Jeg giver dig ikke en færdig løsning, da jeg mener at man lærer mest med hjælp til selvhjælp. Så prøv dig frem, det er den eneste måde at lære det på. Så kan du vende tilbage hvis du har problemer eller yderligere spørgsmål.
Avatar billede far_mand Nybegynder
27. april 2004 - 18:45 #29
htm smid svar
Avatar billede htm Nybegynder
27. april 2004 - 18:46 #30
ok :o)
Avatar billede far_mand Nybegynder
27. april 2004 - 20:35 #31
htm > Smut lige forbi her også :)
http://www.eksperten.dk/spm/494109
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
Computerworld tilbyder specialiserede kurser i database-management

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