form maken om content in database aan te passen

Status
Niet open voor verdere reacties.

Martijn31

Gebruiker
Lid geworden
6 sep 2009
Berichten
362
Hallo,

Ik ben bezig met een pagina om content in de database te veranderen via een admin pagina
Nu heb ik zoiets maar het werkt niet hoe ik het wil de code is
PHP:
<?php

define('DOIT',true);

require_once("../core/session.admin.include.php");
require_once(PATH."/admin/settings.include.php"); 




if ($_POST[bevestiging] == 1) {
    $sql = "INSERT INTO site_content_teksten SET ";
    $sql .= ", linknaam1 = '" . $_POST['linknaam1'] . "'";
    $sql .= ", link1 = '" . $_POST['link1'] . "'";
    $sql .= ", sitetitel = '" . $_POST['sitetitel'] . "'";
    $sql .= ", copyright = '" . $_POST['copyright'] . "'";
    $sql .= ", spotlighttitel = '" . $_POST['spotlighttitel'] . "'";
    $sql .= ", spotlighttekst = '" . $_POST['spotlighttekst'] . "'";    

    $res = mysql_query($sql);
    $_POST[bevestiging] = "";
} else {
    echo"
        <form action=\"nieuws_nieuw.php\" method=\"POST\">
            <input type=\"hidden\" value=\"1\" name=\"bevestiging\" 

/><br />


            <textarea name=\"linknaam1\">hier moet dus de tekst komen die in de tabel linknaam1 staat</textarea><br />
            <textarea name=\"link1\">hier moet dus de tekst komen die in de tabel link1 staat</textarea><br />
            <textarea name=\"sitetitel\">hier moet dus de tekst komen die in de tabel sitetitel staat enzo bij elke textarea</textarea><br />
            <textarea name=\"copyright\">Bericht</textarea><br />
            <textarea name=\"spotlighttitel\">Bericht</textarea><br />
            <textarea name=\"spotlighttekst\">Bericht</textarea><br />
            <textarea name=\"bericht\">Bericht</textarea><br />
            <input type=\"reset\" value=\"Reset\" />
            <input type=\"submit\" value=\"Submit\" />
        </form>
    ";
}
echo"<a href=\"admin.php\">Ga terug naar de admin</a>";
?>

Volgends mij is dit een form om tekst in de database te plaatsen maar niet om tekst te veranderen vanuit een admin page
heeft iemand enig idee hoe ik dit kan veranderen?
alvast bedankt mvg Martijn
 
Eigenlijk zou het wel moeten werken maar niet op de goede manier. Wat je doet is namelijk steeds een INSERT INTO of iets te wijzigen zal je UPDATE moeten gebruiken.

Ik zie nu ook waarom het opslaan niet goed gaat. Hierbij een stuk code wat je verder zou moeten helpen Dit zal ervoor zorgen dat het word opgeslagen:
PHP:
<?php
define('DOIT', true);

require_once("../core/session.admin.include.php");
require_once(PATH . "/admin/settings.include.php");

if (!empty($_POST['bevestiging'])) :
    $sql = "INSERT INTO site_content_teksten (linknaam1, link1,sitetitel, " .
            "copyright, spotlighttitel, spotlighttekst)VALUES(" .
            mysql_real_escape_string($_POST['linknaam1']) . ", " .
            mysql_real_escape_string($_POST['link1']) . ", " .
            mysql_real_escape_string($_POST['sitetitel']) . ", " .
            mysql_real_escape_string($_POST['copyright']) . ", " .
            mysql_real_escape_string($_POST['spotlighttitel']) . ", " .
            mysql_real_escape_string($_POST['spotlighttekst']) . ")";

    $res = mysql_query($sql);
    $_POST['bevestiging'] = "";
else :
    ?>
    <form action="nieuws_nieuw.php" method="post">

        <textarea name="linknaam1">hier moet dus de tekst komen die in de tabel linknaam1 staat</textarea><br />
        <textarea name="link1">hier moet dus de tekst komen die in de tabel link1 staat</textarea><br />
        <textarea name="sitetitel">hier moet dus de tekst komen die in de tabel sitetitel staat enzo bij elke textarea</textarea><br />
        <textarea name="copyright">Bericht</textarea><br />
        <textarea name="spotlighttitel">Bericht</textarea><br />
        <textarea name="spotlighttekst">Bericht</textarea><br />
        <textarea name="bericht">Bericht</textarea><br />
        <input type="reset" value="Reset" />
        <input type="submit" value="Submit" />
        <input type="hidden" value="1" name="bevestiging" /><br />
    </form>
<?php
endif;
echo'<a href="admin.php">Ga terug naar de admin</a>';
?>

De query die jij hebt in je stukje code is eigenlijk een UPDATE query. Veranderd INSERT INTO naar UPDATE en voeg er nog een WHERE statement bij

bijvoorbeeld: WHERE id=$id

Sowieso moet je script dan nog verder worden aangepast aangezien je niet de gegevens ophaalt en het is ook zo dat er dan nog een hidden input bij moet waarin het id staat.
 
Wat bedoel je met het laatste de hidden input en het id? snap het niet helemaal ik heb hier een bron: klikk deze codes voegen content toe aan de database en dat werkt maar ik wil juist via zoeen html forumulier content kunnen aanpassen dus dat ik het forumulier open en de text wat in de database staat daar word weergeven en dat ik het kan veranderen vanaf daar en daar kom ik niet uit
mvg
 
Laatst bewerkt door een moderator:
Dan moet het zoiets worden:

PHP:
<?php
define('DOIT', true);
 
require_once("../core/session.admin.include.php");
require_once(PATH . "/admin/settings.include.php");

//korte versie van if else
$id = !empty($_POST['id']) ? $_POST['id'] : $_GET['id']; 

if (!empty($_POST['bevestiging'])) :
   $sql = "UPDATE site_content_teksten SET ";
    $sql .= ", linknaam1 = '" . mysql_real_escape_string($_POST['linknaam1']) . "'";
    $sql .= ", link1 = '" . mysql_real_escape_string($_POST['lin1']) . "'";
    $sql .= ", sitetitel = '" . mysql_real_escape_string($_POST['sitetitel']) . "'";
    $sql .= ", copyright = '" . mysql_real_escape_string($_POST['copyright']) . "'";
    $sql .= ", spotlighttitel = '" . mysql_real_escape_string($_POST['spotlighttitel']) . "'";
    $sql .= ", spotlighttekst = '" . mysql_real_escape_string($_POST['spotlighttekst']) . "' "; 
    $sql .= "WHERE id='". $id . "'";
 
    $res = mysql_query($sql);
    $_POST['bevestiging'] = "";
else :
    
    $sql= "SELECT id, linknaam1, link1, sitetitel, copyright, spotlighttitel,".
          "spotlighttekst FROM site_content_teksten WHERE id='". $id . "'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
    ?>
    <form action="nieuws_nieuw.php" method="post">
 
        <textarea name="linknaam1"><?php echo $row['linknaam1']; ?></textarea><br />
        <textarea name="link1"><?php echo $row['link1']; ?></textarea><br />
        <textarea name="sitetitel"><?php echo $row['sitetitel']; ?></textarea><br />
        <textarea name="copyright"><?php echo $row['copyright']; ?></textarea><br />
        <textarea name="spotlighttitel"><?php echo $row['spotlighttitel']; ?></textarea><br />
        <textarea name="spotlighttekst"><?php echo $row['spotlighttekst']; ?></textarea><br />
        <textarea name="bericht"><?php echo $row['bericht']; ?></textarea><br />
        <input type="reset" value="Reset" />
        <input type="submit" value="Submit" />
        <br>
        <!-- hidden input fields -->
        <input type="hidden" value="<?php echo $row['id']; ?>" name="id" />
        <input type="hidden" value="1" name="bevestiging" />        
    </form>
<?php
endif;
echo'<a href="admin.php">Ga terug naar de admin</a>';
?>
 
de pagina doet het maar de teksten komen niet in het form te staan omdat ik deze melding krijg:


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/deb29369/domains/mijnsite.nl/public_html/add/admin/verandercontent.php on line 31
volgens mij heeft het te maken met dit stukje:
PHP:
$row = mysql_fetch_array($result);
 
Laatst bewerkt:
De select query is niet goed.

Ik heb hier id ingezet. maar ik weet niet of deze bestaat dat zou je even moeten controleren.
Als het goed is heeft bij jou elke regel in je tabel een id (want dat is wel zo makkelijk)

Op het moment dat id iets anders meot zijn moet je deze ook bij de update doorvoeren.
 
ik heb nu deze tabel: http://i48.tinypic.com/nqsrv8.jpg volgends mij is die niet goed kun jij mij een soort gelijke sql geven waarbij de id goed staat ingestelt want die database is mij geheel onduidelijk

Alvast bedankt voor je tijd
 
oke heb even gekeken naar je plaatje.

Hierbij mis ik een aantal velden, staan deze in een andere tabel?

om de query nu werkend te maken moet je deze gebruiken:
PHP:
$sql= "SELECT id, linknaam1, link1, copyright".
          " FROM site_content_teksten WHERE id='". $id . "'";

Alle veldingen die ik nu niet aanroep mis je in deze tabel.
 
Ik had alle velden in dezelfde tabel staan maar omdat ik zelf ook van alles probeer waren de velden die je mist weg gelaten. ik had een backup staan en die heb ik terug gezet. Nu werkt het wel. maar wanneer ik de tekst aanpas en op submit druk verandert er niks in de database
iets dat er over het hoofd word gezien?

PHP:
<?php

define('DOIT',true);

require_once("../core/session.admin.include.php");
require_once(PATH."/admin/settings.include.php"); 
include_once("connect.php");
 
//korte versie van if else
$id = !empty($_POST['id']) ? $_POST['id'] : $_GET['id']; 
 
if (!empty($_POST['bevestiging'])) :
   $sql = "UPDATE site_content_teksten SET ";
    $sql .= ", linknaam1 = '" . 

mysql_real_escape_string($_POST['linknaam1']) . "'";
    $sql .= ", link1 = '" . mysql_real_escape_string($_POST['lin1']) . 

"'";
    $sql .= ", sitetitel = '" . 

mysql_real_escape_string($_POST['sitetitel']) . "'";
    $sql .= ", copyright = '" . 

mysql_real_escape_string($_POST['copyright']) . "'";
    $sql .= ", spotlighttitel = '" . 

mysql_real_escape_string($_POST['spotlighttitel']) . "'";
    $sql .= ", spotlighttekst = '" . 

mysql_real_escape_string($_POST['spotlighttekst']) . "' "; 
    $sql .= "WHERE id='". $id . "'";
 
    $res = mysql_query($sql);
    $_POST['bevestiging'] = "";
else :

$sql= "SELECT id, linknaam1, link1, sitetitel, copyright, 

spotlighttitel, spotlighttekst".
          " FROM site_content_teksten WHERE id='". $id . "'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
    ?>
    <form action="verandercontent.php" method="post">
 
        <textarea name="linknaam1"><?php echo $row['linknaam1']; 

?></textarea><br />
        <textarea name="link1"><?php echo $row['link1']; 

?></textarea><br />
        <textarea name="sitetitel"><?php echo $row['sitetitel']; 

?></textarea><br />
        <textarea name="copyright"><?php echo $row['copyright']; 

?></textarea><br />
        <textarea name="spotlighttitel"><?php echo 

$row['spotlighttitel']; ?></textarea><br />
        <textarea name="spotlighttekst"><?php echo 

$row['spotlighttekst']; ?></textarea><br />
        <textarea name="bericht"><?php echo $row['bericht']; 

?></textarea><br />
        <input type="reset" value="Reset" />
        <input type="submit" value="Submit" />
        <br>
        <!-- hidden input fields -->
        <input type="hidden" value="<?php echo $row['id']; ?>" 

name="id" />
        <input type="hidden" value="1" name="bevestiging" />        
    </form>
<?php
endif;
echo'<a href="admin.php">Ga terug naar de admin</a>';
?>

Bovenstaande code is de code die nu wel werkt maar niks opslaat in de database
ik denk dat er iets is vergeten maar kom er niet uit mvg,
 
kijk eens in de broncode van de pagina of je deze kunt vinden:
HTML:
<input type="hidden" value="hier moet een id staan" 
name="id" />


als er geen waarde is bij hier moet een id staan. Dan ligt het daaraan.

Hoe roep jij deze pagina aan om te gaan bewerken?
 
ik bewerk de pagina gwn via kladblok upload het met filezilla en bekijk hem met mozilla firefox als je dat bedoelt?
 
Ik heb het niet duidelijk uitgelegd denk ik.

Je past de .php pagina aan via kladblok ga ik vanuit. Dat is allemaal prima, maar je zou ook een editor kunnen gebruiken zoals Netbeans of notepad++ of nog de vele andere die er zijn.

Wat ik bedoel is dat je naar de pagina gaat, inderdaad met Firefox. Ga je dan rechtstreeks naar de pagina om de tekst te bewerken of ga je via een andere pagina.

Indien je via een andere pagina gaat naar de bewerk pagina gaat dan wil ik graag weten hoe je dit doet. je zal dan een pagina moeten hebben waarop al je pagina's staan waarna je klikt op een regel waardoor je naar de bewerk pagina gaat. Zo weet ook het systeem welke pagina je wilt gaan bewerken.

Indien het zo is dat je rechtstreeks naar de pagina gaat dat weet de bewerk pagina niet welke regel je uit de tabel wilt aanroepen. zoals het nu is pakt die dan alle regels maar laat die alleen de eerste regel zien in de tabel.

wat je nog meer kan doen om te zien of het goed gaat is het volgende:

doe een echo op de sql

dus
PHP:
echo $sql;
Deze doe je voor de query uitvoert. Daarnaast kan je een echo maken direct na
PHP:
if (!empty($_POST['bevestiging'])) :
maak er dit van:
PHP:
if (!empty($_POST['bevestiging'] && $_SERVER['REQUEST_METHOD'] == 'POST')) :
echo 'POST WERKT HET LIGT AAN DE QUERY';

De echo van de sql kan je rechtstreeks op de database uitvoeren. via phpmyadim. Op het moment dat de de echo ziet van dat de post werkt ligt aan de query, dan verwijder je deze echo want het ligt dan wel degelijk aan de query.
 
Laatst bewerkt:
Als ik de
PHP:
echo $sql;
voor de query plak gebeurt er niks. plak ik het na de query echot hij dit: ( UPDATE site_content_teksten SET ) meer niet. wanneer ik
PHP:
if (!empty($_POST['bevestiging'] && $_SERVER['REQUEST_METHOD] == 'POST')) :
echo 'POST WERKT HET LIGT AAN DE QUERY';
plaats op de plek die jij aangaf krijg ik deze error: Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ')' in verandercontent.php on line 12 dus die code klopt niet. heb je mischien nog meer ideeen? de pagina bron heb ik weergeven daar zie ik geen fout in?
PHP:
<form action="verandercontent.php" method="post">
 
        <textarea name="linknaam1"></textarea><br />
        <textarea name="link1">/nieuws.php</textarea><br />
        <textarea name="sitetitel">sitenaam :: Home</textarea><br />
        <textarea name="copyright">Copyright © 2012 layout bij Etomite cms, CMS bij Chillycms aangepast en recoded bij Effectiviteit alle rechten voorbehouden.</textarea><br />
        <textarea name="spotlighttitel">Welkom op deze site!</textarea><br />
        <textarea name="spotlighttekst">Hier kun je tekst toevoegen dat in de "spotlight" moet komen te staan. het is aan te passen in de admin van deze site.</textarea><br />
        <textarea name="bericht"></textarea><br />
        <input type="reset" value="Reset" />
        <input type="submit" value="Submit" />
        <br>
        <!-- hidden input fields -->
        <input type="hidden" value="0" name="id" />
        <input type="hidden" value="1" name="bevestiging" />        
    </form>
<a href="admin.php">Ga terug naar de admin</a>
nogmaals erg bedankt voor je hulp
 
ik ben een qoute vergeten bij de RQUEST_METHOD er had nog een qoute op het eind moeten staan dan was die wel goed gegaan.

Maar het zit hem dus in de sql...

probeer dit eens er stond namelijk een , na SET maar dat mag niet

PHP:
if (!empty($_POST['bevestiging'] && $_SERVER['REQUEST_METHOD'] == 'POST')) :
$sql = "UPDATE site_content_teksten SET ";
    $sql .= "linknaam1 = '" . 
 
mysql_real_escape_string($_POST['linknaam1']) . "'";
    $sql .= ", link1 = '" . mysql_real_escape_string($_POST['link1']) . 
 
"'";
    $sql .= ", sitetitel = '" . 
 
mysql_real_escape_string($_POST['sitetitel']) . "'";
    $sql .= ", copyright = '" . 
 
mysql_real_escape_string($_POST['copyright']) . "'";
    $sql .= ", spotlighttitel = '" . 
 
mysql_real_escape_string($_POST['spotlighttitel']) . "'";
    $sql .= ", spotlighttekst = '" . 
 
mysql_real_escape_string($_POST['spotlighttekst']) . "' "; 
    $sql .= "WHERE id='". $id . "'";

en anders probeer het zo eens:

PHP:
if (!empty($_POST['bevestiging'] && $_SERVER['REQUEST_METHOD'] == 'POST')) :
$sql = "UPDATE site_content_teksten SET linknaam1 = '" . 
 
mysql_real_escape_string($_POST['linknaam1']) . "' , link1 = '" . mysql_real_escape_string($_POST['lin1']) . 
 
"', sitetitel = '" . 
 
mysql_real_escape_string($_POST['sitetitel']) . "' , copyright = '" . 
 
mysql_real_escape_string($_POST['copyright']) . "' , spotlighttitel = '" . 
 
mysql_real_escape_string($_POST['spotlighttitel']) . "' , spotlighttekst = '" . 
 
mysql_real_escape_string($_POST['spotlighttekst']) . "' WHERE id='". $id . "'";
 
Laatst bewerkt:
Nog steeds dezelfde fout: Parse error: syntax error, unexpected T_BOOLEAN_AND, expecting ')' in verandercontent.php on line 12

line 12 =
PHP:
if (!empty($_POST['bevestiging'] && $_SERVER['REQUEST_METHOD'] ==

dezelfde fout bij beide codes
 
Laatst bewerkt:
sorry haakje vergeten

PHP:
if (!empty($_POST['bevestiging']) && $_SERVER['REQUEST_METHOD'] == 'POST')) :
 
dan krijg ik dit: Parse error: syntax error, unexpected ')' in verandercontent.php on line 12

kei raar dat haakje had ik daar ook al neergezet en toen kreeg ik dezelfde error maar er blijven maar errors komen door die ene line 12
 
Laatst bewerkt:
klopt

op het eind staan 2 ) maar het moet er maar 1 staan ik heb toen straks perongeluk tussen de ) getypt mijn fout sorry
 
het werkt nu zonder errors maar hij slaat nog steeds niets op in de database ik klik op submit keer terug naar verandercontent.php en mijn aanpassingen zijn verdwenen best vervelend als iets niet wilt lukken maar het veld id in de database is een int11 en geen auto_increment kan het iets te maken hebben met het id?

gehele code:
PHP:
<?php
 
define('DOIT',true);
 
require_once("../core/session.admin.include.php");
require_once(PATH."/admin/settings.include.php"); 
include_once("connect.php");
 
//korte versie van if else
$id = !empty($_POST['id']) ? $_POST['id'] : $_GET['id']; 
 
if (!empty($_POST['bevestiging']) && $_SERVER['REQUEST_METHOD'] == 

'POST') :
$sql = "UPDATE site_content_teksten SET linknaam1 = '" . 
 
mysql_real_escape_string($_POST['linknaam1']) . "' , link1 = '" . 

mysql_real_escape_string($_POST['lin1']) . 
 
"', sitetitel = '" . 
 
mysql_real_escape_string($_POST['sitetitel']) . "' , copyright = '" . 
 
mysql_real_escape_string($_POST['copyright']) . "' , spotlighttitel = 

'" . 
 
mysql_real_escape_string($_POST['spotlighttitel']) . "' , 

spotlighttekst = '" . 
 
mysql_real_escape_string($_POST['spotlighttekst']) . "' WHERE id='". 

$id . "'";
    $sql .= "WHERE id='". $id . "'";
 
    $res = mysql_query($sql);
    $_POST['bevestiging'] = "";
else :
 
$sql= "SELECT id, linknaam1, link1, sitetitel, copyright, 
 
spotlighttitel, spotlighttekst".
          " FROM site_content_teksten WHERE id='". $id . "'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
    ?>
    <form action="verandercontent.php" method="post">
 
        <textarea name="linknaam1"><?php echo $row['linknaam1']; 
 
?></textarea><br />
        <textarea name="link1"><?php echo $row['link1']; 
 
?></textarea><br />
        <textarea name="sitetitel"><?php echo $row['sitetitel']; 
 
?></textarea><br />
        <textarea name="copyright"><?php echo $row['copyright']; 
 
?></textarea><br />
        <textarea name="spotlighttitel"><?php echo 
 
$row['spotlighttitel']; ?></textarea><br />
        <textarea name="spotlighttekst"><?php echo 
 
$row['spotlighttekst']; ?></textarea><br />
        <textarea name="bericht"><?php echo $row['bericht']; 
 
?></textarea><br />
        <input type="reset" value="Reset" />
        <input type="submit" value="Submit" />
        <br>
        <!-- hidden input fields -->
        <input type="hidden" value="<?php echo $row['id']; ?>" 
 
name="id" />
        <input type="hidden" value="1" name="bevestiging" />        
    </form>
<?php
endif;
echo'<a href="admin.php">Ga terug naar de admin</a>';
?>
Ik hoop dat jij of iemand anders de goude tip kan geven. de code werkt maar slaat alleen de aanpassingen nog niet op.
 
Laatst bewerkt:
doe eens een echo van de sql zoals ik straks had aangegeven.

En voer de sql eens rechtstreeks uit op de database via phpmyadmin.

Je krijgt dan waarschijnlijk een foutcode terug. Misschien zit er een spelfout in of een , te weinig/teveel

Dan moet het lukken!

Verder kijk of er een een id in de sql staat anders werkt het sowieso niet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan