Avatar billede avminarm Juniormester
15. november 2005 - 23:14 Der er 2 kommentarer og
1 løsning

funktion til insert i Mysql ændring driller

Hej

Jeg har denne funktion til at indsætte lidt ikke kompliceret data dynamisk ind i en DB, men jeg har fundet ud af at jeg til tider er nødt til at indsætte anderledes end kun via post, get mv.

Funktionen:

function insert($table, $fields, $datestamp = "no"){
        while (list($key, $value) = each($fields)) {
                $tmp[] = "'".addslashes($_REQUEST[$value])."'";
            }
            if($datestamp != "no"){
                $sql = "INSERT INTO $table (".implode(", ", $fields).", ".$datestamp.") VALUES(".implode(", ", $tmp).", now())";
            } else {
                $sql = "INSERT INTO $table (".implode(", ", $fields).") VALUES(".implode(", ", $tmp).")";
            }
            return mysql_query($sql);
    }

Den benyttes på denne måde:
Her bliver alle værdierne "indhold", "slutdato", "kommentar" og "opdateret" alle sendt via POST i en formular - ingen problemer i det.

insert("tabel", array("id", "overskrift", "indhold", "slutdato", "kommentar"), "opdateret");

Mit problem hvis noget data IKKE kan sendes via en formular - altså har man ingen REQUEST værdi - men jeg skal alligevel indsætte f.eks. "slutdato".

Jeg har prøvet at få funktionen til at virke med følgende (ville gerne have det til at virke på denne måde):
insert("tabel", array("id", "overskrift", "indhold", "slutdato" => "12-11-2006", "kommentar"), "opdateret");

Men kan ikke helt få det til at spille?? - nogen forslag?
Avatar billede inctor Nybegynder
15. november 2005 - 23:35 #1
UPDATE tabel SET slutdato=12-11-2006 WHERE id=('$id');

vil jeg da tro kunne virke...
Avatar billede inctor Nybegynder
15. november 2005 - 23:44 #2
Mener du noed Ala det her:

<? include("inc/sql.php");

if($action=="update") {
$select_info = mysql_query("SELECT * FROM tabel WHERE(id='id')");
$rows = mysql_fetch_array($select_info);

mysql_query("UPDATE tabel SET slutdato='12-11-2006', overskrift='$_POST[overskrift]', overskrift='$_POST[indhold]', kommentar='$_POST[kommentar]' WHERE(id='id')");

print " HVAD DEN NU SKAL OPDATERE !<br><br>";
}
?>
<table width="100%">
<form action="update.php?action=update" method="post">
<tr>
<td>Overskriften</td>
<td><input name="overskrift"></td>
</tr>
<tr>
<td width=1>Indholdet</td>
<td><input name="indhold"></td>
</tr>
<tr>
<td width=1>Kommentar</td>
<td><input name="kommentar"></td>
</tr>
<td colspan=2><input type="submit" value="Opret Nyhed"></td>
</tr>
</form>
</table>





??? i så fald værsesågod at brygge videre på den ..
Avatar billede avminarm Juniormester
16. november 2005 - 18:30 #3
inctor>> jeg tror ikke du har læst spørgsmålet helt - det jeg søger en udvidelse til min funktion - men jag her selv fundet løsningen:

function insert($table, $fields, $datestamp = "no"){
    foreach($fields as $key => $value){
        if(is_numeric($key)){
                    $tmp[] = "'".addslashes($_REQUEST[$value])."'";
            $use_fields[] = $value;
        } else {
            $tmp[] = "'".addslashes($value)."'";
            $use_fields[] = $key;
        }
            }
            if($datestamp != "no"){
                $sql = "INSERT INTO $table (".implode(", ", $use_fields).", ".$datestamp.") VALUES(".implode(", ", $tmp).", now())";
            } else {
                $sql = "INSERT INTO $table (".implode(", ", $use_fields).") VALUES(".implode(", ", $tmp).")";
            }
            return mysql_query($sql);
    }
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