Avatar billede andeershansen Nybegynder
29. januar 2009 - 20:09 Der er 18 kommentarer og
1 løsning

mysqli_query update?

Hejsa.
er der nogen der kan fortælle mig hvorfor scriptet herunder ikke opdaterer det jeg har i min DB når jeg trykker ret artikel?
 
<?php
    IF(!empty($_GET['id'])){
    $conn = mysqli_connect ("localhost","root","1234","webdes");
    $getid = $_GET['id'];
    $getData = mysqli_query($conn, "SELECT * FROM artikeldb WHERE id = '$getid' ORDER BY id DESC LIMIT 1");
    while($row = mysqli_fetch_array($getData)){
 
     
        IF(empty($row['overskrift'])){
            $overskrift = "Indtast Overskrift";
        } ELSE {
            $overskrift = $row['overskrift'];
        }
     
     
        IF(empty($row['navn'])){
            $navn = "Indtast Navn";
        } ELSE {
            $navn = $row['navn'];
        }
     
       
        IF(empty($row['artikel'])){
            $artikel = "Indtast artikel";
        } ELSE {
            $artikel = $row['artikel'];
        }
     
        IF($_POST['editNews'] == "yes"){
            $newoverskrift = addslashes($_POST['overskrift']);
            $newnavn = addslashes($_POST['overskrift']);
            $newartikel = addslashes($_POST['artikel']);
              $conn = mysqli_connect ("localhost","root","1234","webdes");
           
            mysqli_query($conn, "UPDATE artikeldb SET overskrift = '$newoverskrift', navn = '$newnavn', artikel = 'newartikel' WHERE id = '".$_GET['id']."' LIMIT 1");
           
         
         
        }
     
   
        echo '
        <form action="index.php" method="post">
        <input type="hidden" name="editNews" value="yes">
        <input name="overskrift" type="text" value="'.$overskrift.'"/><br /><br />
        <input name="navn" type="text" value="'.$navn.'" /><br /><br />
        <textarea name="artikel" cols="60" rows="10">'.$artikel.'
        </textarea><br /><br />
        <input name="addartikel" type="submit" value="Ret Artikel" />
        </form>
        ';
 
    }

            echo "<hr>";
 
}
    $conn = mysqli_connect ("localhost","root","1234","webdes");
    $query = mysqli_query($conn,"select * from artikeldb");
    while($result = mysqli_fetch_array($query)){
            echo "<table border='0' style='border: #000 solid 1px'; width='750px' cellspacing='0px' bgcolor='#ffffff'>";
            echo "<tr>";
            echo "<td style='background-color: #808080; width: 50%; border-right: #000 solid 1px';><strong>".$result['overskrift'] ."</strong> (".$result['dato'].")</td>";
            echo "<td style='background-color: #808080; width: 20%; border-bottom: #000 none 1px;'>".$result['navn'] ."</td>";
            echo "</tr>";
            echo "<tr>";
            echo "<td colspan='2'>".$result['artikel']."<br>";
            echo "<span style='float:right;'>";
            echo '<a href="index.php?id='.$result['id'].'">Ret</a>';
            echo "&nbsp;&nbsp;";
            echo '<a href="{indsaet link}">Slet</a>';
            echo "</td>";
            echo "</tr><br>"; 
              }
   
echo "</table>";
?>
Avatar billede tobias_louv Nybegynder
29. januar 2009 - 20:52 #1
Får du nogen fejlmeddelelse?
Prøv at skrive mysql_error(), så kan vi måske se, hvad fejlen er.
Avatar billede jakobdo Ekspert
29. januar 2009 - 22:08 #2
Er det bevidst du bruger mysqli og ikke bare mysql ?
Udskriver den ellers info korrekt ?
Avatar billede arne_v Ekspert
29. januar 2009 - 22:11 #3
mysqli er da helt fint, men man skal jo nok bruge prepared statement saa.
Avatar billede andeershansen Nybegynder
29. januar 2009 - 22:43 #4
Når jeg skriver mysql_error(); får jår jeg følgende
Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\wamp\www\Nyhed\index.php on line 12

ja den skriver ellers alt korrekt...

hvad mener du med prepared statement?
Avatar billede andeershansen Nybegynder
29. januar 2009 - 22:44 #5
ahh det er lige gået op for mig at line 12 var den linje jeg skrev mysql_error(); på
Avatar billede arne_v Ekspert
29. januar 2009 - 22:49 #6
Avatar billede andeershansen Nybegynder
29. januar 2009 - 22:52 #7
Jeg er rimelig ny til php og for at være ærlig så gav det der ingen mening overhovedet
Avatar billede arne_v Ekspert
29. januar 2009 - 22:55 #8
Det har heller ikke betydning for dit problem.

Men den dag du skal lave en PHP som ikke kan hackes paa 5 minutter saa skal du iganbg med det.

Jeg naevnte det kun fordi jakobdo bragte brugen af mysqli paa banen.
Avatar billede andeershansen Nybegynder
29. januar 2009 - 22:56 #9
okay :)

Er der overhovedet ingen der kan hjælpe med mit problem? :)
Avatar billede arne_v Ekspert
29. januar 2009 - 22:58 #10
Proev og lav dine:

$query = mysqli_query($conn, "...");

som:

$query = mysqli_query($conn, "...") or die(mysqli_error($conn));
Avatar billede arne_v Ekspert
29. januar 2009 - 22:59 #11
Det loeser ikke problemet men kan muligvis fortaelle hvad problemet er.
Avatar billede andeershansen Nybegynder
29. januar 2009 - 23:02 #12
Sker der ingenting ved :(
Avatar billede andeershansen Nybegynder
29. januar 2009 - 23:02 #13
Hvad tror du problemet er arne?
Avatar billede tobias_louv Nybegynder
29. januar 2009 - 23:27 #14
Dette løser ikke problemet, tror jeg. Men her er der da en fejl:
  mysqli_query($conn, "UPDATE artikeldb SET overskrift = '$newoverskrift', navn = '$newnavn', artikel = 'newartikel' WHERE id = '".$_GET['id']."' LIMIT 1");

burde vist være
  mysqli_query($conn, "UPDATE artikeldb SET overskrift = '$newoverskrift', navn = '$newnavn', artikel = '$newartikel' WHERE id = '".$_GET['id']."' LIMIT 1");


Og ville det ikke være smart at rykke dette stykke:
        IF($_POST['editNews'] == "yes"){
            $newoverskrift = addslashes($_POST['overskrift']);
            $newnavn = addslashes($_POST['overskrift']);
            $newartikel = addslashes($_POST['artikel']);
              $conn = mysqli_connect ("localhost","root","1234","webdes");
           
            mysqli_query($conn, "UPDATE artikeldb SET overskrift = '$newoverskrift', navn = '$newnavn', artikel = 'newartikel' WHERE id = '".$_GET['id']."' LIMIT 1");
           
         
         
        }

op oven over, hvor du udskriver det?
dvs. op efter
    IF(!empty($_GET['id'])){
    $conn = mysqli_connect ("localhost","root","1234","webdes");

og så kan du i det stykke udelade der hvor du connecter, så skriv i stedet

        IF($_POST['editNews'] == "yes"){
            $newoverskrift = addslashes($_POST['overskrift']);
            $newnavn = addslashes($_POST['overskrift']);
            $newartikel = addslashes($_POST['artikel']);
           
            mysqli_query($conn, "UPDATE artikeldb SET overskrift = '$newoverskrift', navn = '$newnavn', artikel = 'newartikel' WHERE id = '".$_GET['id']."' LIMIT 1");
           
         
         
        }
Avatar billede tobias_louv Nybegynder
29. januar 2009 - 23:27 #15
Jeg ved ikke, om det hjælper noget, men det er i hvert fald lidt oprydning :-)
Avatar billede tobias_louv Nybegynder
29. januar 2009 - 23:28 #16
Btw, du laver flere af disse linjer:
    $conn = mysqli_connect ("localhost","root","1234","webdes");
én er vel nok, skulle jeg mene (og den skal stå øverst)

Nå, godnat herfra :-)
Avatar billede arne_v Ekspert
31. januar 2009 - 03:12 #17
Hvis:

or die(mysqli_error($conn));

ikke giver fejl, så er SQL'en OK.

Så skal du have checket logikken, så prøv og udskriv den resulterende SQL streng.
Avatar billede tobias_louv Nybegynder
31. januar 2009 - 10:06 #18
I alle dine sql-kald, skriver du sql uden ``-anførselstegn. Jeg ved ikke, om det har nogen indflydelse, men jeg plejer altid at bruge ``-anførselstegn om tabelnavne og tabel-værdier (eller hvad man kalder dem)
Din sql ser sådan ud
mysqli_query($conn, "UPDATE artikeldb SET overskrift = '$newoverskrift', navn = '$newnavn', artikel = '$newartikel' WHERE id = '".$_GET['id']."' LIMIT 1");
Jeg ville rette det til:
mysqli_query($conn, "UPDATE `artikeldb` SET `overskrift` = '$newoverskrift', `navn` = '$newnavn', `artikel` = '$newartikel' WHERE `id` = '".$_GET['id']."' LIMIT 1");

Nu er jeg da kommet med nogle forslag. Prøv lige at se, om noget af det hjælper - det kunne være, da der egentlig er ret meget rod i din side.
Forreste, kan jeg anbefale, at man har en side for sig, der opdaterer SQL'en, så det ikke sker på samme side, som man udskriver den, eller hvad man gør. PHP kan nemt sende én retur til den side, man vil se efterfølgende. (bare et lille tip).
Avatar billede andeershansen Nybegynder
16. februar 2009 - 23:31 #19
Problemet var linket i form action :)
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