Avatar billede nicklasb Nybegynder
16. juli 2002 - 10:37 Der er 12 kommentarer og
1 løsning

PHP/MySQL-problem

Hej

Jeg har et problem med en PHP side. Jeg er igang med at lave et admin-system til en stor side.
Fra den skal man kunne oprette, slette og rette noget tekst fra en MySQL-database.
Det går godt nok med at lave en form og så oprette og en side hvor fra man kan slette.. Men der er nogle problemer med updatesiden..

<?
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$query = "UPDATE databasenavn SET data2='$data2' , data3='$data3' , data4='$data4' , data5='$data5' WHERE data1='$data1'";

Kollonenavnene fra databasen har jeg af sikkerhedsmedsige årsagder udskiftet med $dataX og databasens navn med databasenavn.
Men du kan vel se ideen i det.

Det der så er problemet er at den man kører den og viser at den er blevet gennemført.. Men der sker ikke en skid.. Den loader ikke særlig langt tid.. Ikke længere end det vil tage at loade Godkend-siden..
Så det er som om den ikke forstår komandoen ordentligt..

data4 er det der står i databasen, og '$data4' er det der kommer fra formen på den foregående side.. Det er rigtigt ikke??

Hvordan kommer min updateform til at virke ordentligt??

Jeg har en C30 webhotel fra Cliche.dk hvis det har nogen indflydelse.. Kan man evt bruge en anden komando til at update??

Håber i kon hjælpe, og på forhånd tak..
/Nicklas B.
Avatar billede aslan Nybegynder
16. juli 2002 - 10:44 #1
$query = "UPDATE databasenavn SET data2='$data2' , data3='$data3' , data4='$data4' , data5='$data5' WHERE data1='$data1'";
mysql_query($query);
Avatar billede finn34 Nybegynder
16. juli 2002 - 10:45 #2
Jeg gør det på denne måde.
mysql_query("update julekalender set beskrivelse='".$tekst."', aar='".$aar."', kanal='".$kanal."' where id='".$id."'");
Avatar billede aslan Nybegynder
16. juli 2002 - 10:45 #3
Du har glemt den sidste del af din query...
Avatar billede limemedia Nybegynder
16. juli 2002 - 10:46 #4
prøv at lave en
echo "UPDATE databasenavn SET data2='$data2' , data3='$data3' , data4='$data4' , data5='$data5' WHERE data1='$data1'";

og se om specielt data1='$data1' indeholder hvad du forventer og specielt om der findes en post med netop den kombination (case sensitive und alles - de skal være 110% ens)
Avatar billede nicklasb Nybegynder
16. juli 2002 - 11:21 #5
I kan da få den hele hvis i vil.. Jeg stoppede bare Copy/Paste der da det sidste vel giver sig selv..

<?
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$query = "UPDATE databasenavn SET data2='$data2', data3='$data3' , data4='$data4' , data5='$data5' WHERE data1='$data1'";

$data1 = $r["data1"];
$data2 = $r["data2"];
$data3 = $r["data3"];
$data4 = $r["data4"];
$data5 = $r["data5"];

echo "Nyheden er tilføjet databasen";
?>

ljweb-> Jeg har prøvet at tilføje det du skriver til min echo-sætning.. Og den skriver bare:

UPDATE databasenavn SET data2='', data3='' , data4='' , data5='' WHERE data1=''

Så fejlen må åbenbart ligge et andet sted..

Er der en der vil kigge på formen før og forklare mig hvad der er galt.. Jeg er ikke meget for at skrive den hele ind her, da der står data fra databasen..

Så hvis en af jeg gidder hjælpe over mail..

Jeg skal nok skrive formen ind her, men andre navne ved de forskellige variabler, hvis det er den der er noget galt med..

(Coadmins-> Det er lovligt ikke?? Nu da alle har fået tilbudet, og jeg ligger svaret ud efter jeg har fået det til at virke.. ikk'??)

Håber der er en god PHP-haj der lige kan hjælpe mig..

/Nicklas B.
Avatar billede nicklasb Nybegynder
16. juli 2002 - 11:23 #6
Jeg har også skrevet mysql_query($query); men ind på.. Det gør ikke den store forskel.. Så jeg ved ikke.. Tror ikke lige (KUN) det er det..
Avatar billede nicklasb Nybegynder
16. juli 2002 - 11:28 #7
jeg har også lige prøvet at gøre som du skriver finn34.. Men der sker stadig intet.. Det må være overførelsen fra formen der ikke kører ordentligt...

Men det er bare lidt mærkeligt.. For den er faktisk bare en kopi af opret-siden.. Og den virker som den skal...
Avatar billede limemedia Nybegynder
16. juli 2002 - 11:30 #8
niklas >> hvis min echo udskriver
UPDATE databasenavn SET data2='', data3='' , data4='' , data5='' WHERE data1=''

hvor der ikke er noget mellem '', beder du reelt databasen om at nulstille data2-data5 hvor data1 feltet er tomt ?

Men du skriver ... (mine kommentarer med # foran)
<?
mysql_connect($host,$user,$pass);
mysql_select_db($db);
# okay connectionen er vi enige om

$query = "UPDATE databasenavn SET data2='$data2', data3='$data3' , data4='$data4' , data5='$data5' WHERE data1='$data1'";
# her skriver du din query til en streng, uden at udføre det

$data1 = $r["data1"];
$data2 = $r["data2"];
$data3 = $r["data3"];
$data4 = $r["data4"];
$data5 = $r["data5"];
# her sætter du de variable, du reelt vil have i databasen ? skulle de ikke sættes foran $query ?

echo "Nyheden er tilføjet databasen";
?>

så mit forslag er - burde det ikke se sådan ud
<?
mysql_connect($host,$user,$pass);
mysql_select_db($db);

$data1 = $r["data1"];
$data2 = $r["data2"];
$data3 = $r["data3"];
$data4 = $r["data4"];
$data5 = $r["data5"];

$query = "UPDATE databasenavn SET data2='$data2', data3='$data3' , data4='$data4' , data5='$data5' WHERE data1='$data1'";
mysql_query($query);

echo "Nyheden er tilføjet databasen";
?>

?!?
Avatar billede varny Nybegynder
16. juli 2002 - 11:32 #9
$result = mysql_query("UPDATE `databasenavn` SET `data2` = '".$data2."', `data3` = '".$data3."', `data4` = '".$data4."', `data5` = '".$data5."' WHERE `data1` = '".$data1pageid."'");

$result vil indeholde værdien 1 hvis forespørgslen gik godt.

Læg i øvrigt mærke til at der er forskel på at bruge ` og '

\Varny
Avatar billede nicklasb Nybegynder
16. juli 2002 - 11:57 #10
ljweb-> Jeg tror bestemt ikke den skal ind før.. Den får jo variablerne med over i filen og skal rette dem til disse..

$data1 = $r["data1"];
$data2 = $r["data2"];
$data3 = $r["data3"];
$data4 = $r["data4"];
$data5 = $r["data5"];

står der efter for at jeg kan bruge de nye resultater videre på siden. Fx at skrive:

Nyheden $data1 er nu opdateret.

i en echosætning..

Hvis jeg gør som du skriver laver jeg jo først variablerne om til det de er i forvejen.. Og så opdatatere dem med det..
Det andet virker også godt nok ved oprettelse..

varny-> Jeg har prøvet at gøre som du skriver.. Lidt lige som finn34's.. Det virker vist heller ikke...

Men jeg er ikke sikker.. Er der ikke en der vil kigge på koderne.. Jeg kan sende dem via mail... Og jeg skal nok skrive resultatet her inde..

Hvad er forskellen på ` og '??

Kan det være fordi Cliches server ikke forstår Udate?? og kan man i så fald bruge en anden komando..

Jeg takker mange gange for hjælpen ind til videre.. Og håber da det kommer til at virke.. (men det gør det jo, så gode som i er.. :)
Avatar billede nicklasb Nybegynder
16. juli 2002 - 13:11 #11
er der ingen der lige har lyst til at kigge på mine koder?? Jeg vil ikke tro det er en særlig stor opgave.. De er meget simple.. Men jeg ved simpelthen ikke hvad jeg skulle skrive i stedet..
Avatar billede varny Nybegynder
17. juli 2002 - 11:09 #12
Prøv at lave nogle forsøg med databasen. Lav en mysql_query hvor du ikke bruger nogle $dataX. Eks.:
$result = mysql_query("UPDATE `databasenavn` SET `data2` = 'test2', `data3` = 'test3', `data4` = 'test4', `data5` = 'test5' WHERE `data1` = 'test'");  <- test udskiftes med et eller andet der står i databasen.
På den måde kan du sikre dig at database fordindelsen virker. Derefter kan du undersøge om variablerne bliver korrekt sendt til forespørgslen ved hjælp af ljweb's indslag. Det er næsten umuligt at overskue en kode hvis den indeholder flere småfejl. Så opdel koden i små stykker og få dem ale til at virke, og vupti så virker det hele til sidst.!!  :)
\Varny
Avatar billede nicklasb Nybegynder
24. juli 2002 - 20:55 #13
jeg lukker igen.. kan ikke finde fejlen..
Nu har jeg sat den til først at slette dataene for så derefter at skrive dem ind igen.. Hmm.. jeg ved ikke hvordan jeg ellers skal få det til at virke.. Men det kommer nok en dag..
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