Jooakim Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 (endret) Hei, jeg er nybegynner med PHP, så jeg har stjålet litt fra et script som jeg har modifisert en del på. Jeg vil nemlig lage et oppgaveskjema, der en kan legge til oppgaver, redigere oppgavestatus og prioritering. Slik ser det ut nå. Feilmeldingen som kommer er <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>TEST</title> <style type="text/css"> { margin: 0px; padding: 0px; } a { outline: none; } body { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: #FFF; background-color: #212121; } table { background-color: #124800; margin: 5px; padding: 2px; width: auto; } td { border: 1px solid #66805D; margin: 2px; padding: 2px; width: auto; } tr { border: 1px solid #66805D; margin: 2px; padding: 2px; width: auto; } #Ny { width: 400px; height: auto; text-align: center; color: #FFF; margin-left: 200px; } #Ny form { margin: 0px; padding: 0px; } #Ny input { margin-top: 3px; margin-bottom: 3px; } </style> </head> <body> <table cellpadding="0" cellspacing="0" width="auto"> <tr> <td><strong><u>Oppgave</u></strong></td> <td><strong><u>Oppgavestatus</u></strong></td> <td><strong><u>Prioritering</u></strong></td> </tr> <tr> <td><?php echo htmlspecialchars($_POST['add']); ?>.</td> <td><?php echo (int)$_POST['Oppgave']; ?></td> </tr> <?php mysql_connect('localhost','halovasj_main','XXX'); @mysql_select_db('halovasj_main') or die("Unable to select database"); if ($_GET['edit']) { mysql_query("UPDATE `Oppgave` SET `Oppgave` = '". $_POST['Oppgave'] ."' WHERE `Oppgave` = '". $_GET['edit'] ."'"); mysql_query("UPDATE `Oppgave` SET `Oppgavestatus` = '". $_POST['Oppgavestatus'] ."' WHERE `Oppgavestatus` = '". $_GET['edit'] ."'"); mysql_query("UPDATE `Oppgave` SET `Prioritering` = '". $_POST['Prioritering'] ."' WHERE `Prioritering` = '". $_GET['edit'] ."'"); } else if ($_POST['add']) { mysql_query("INSERT INTO `Oppgave` VALUES ('". $_POST['Oppgave'] ."','". $_POST['Oppgavestatus'] ."','". $_POST['Prioritering'] ."')"); print "OK"; } $result = mysql_query("SELECT * FROM `Oppgave` ORDER BY Prioritering"); while ($Oppgave = mysql_fetch_array($result)) { switch ($Oppgave['Oppgave']) { case 0: $color = "004400"; $options = "<option value=\"0\" selected=\"selected\">Ikke på saken</option><option value=\"1\">På saken</option><option value=\"2\">Fikset</option><option value=\"0\">Ikke fikset</option>"; break; case 1: $options = "<option value=\"0\">Ikke på saken</option><option value=\"1\" selected=\"selected\">På saken</option><option value=\"2\">Fikset</option><option value=\"0\">Ikke fikset</option>"; $color = "000000"; break; case 2: $options = "<option value=\"0\">Ikke på saken</option><option value=\"1\">På saken</option><option value=\"2\" selected=\"selected\">Fikset</option><option value=\"0\">Ikke fikset</option>"; $color = "aaaaaa"; break; } $Oppgave = mysql_query("SELECT * WHERE `worldid` = '". $Oppgave['Oppgave'] ."'"); $Oppgave = mysql_fetch_array($Oppgave); print "<form action=\"index.php?edit=". $Oppgave['Oppgave'] ."\" method=\"POST\">n"; print "<tr>n"; print "<td><select name=\"status\">". $options ."</select></td>"; print "<td><input style=\"border: 0; color: #". $color ."; font-size: 11px; font-family: verdana; width: 180px;\" type=\"text\" name=\"Oppgave\" value=\"\"". $Oppgave['Oppgave'] ."\"></td>"; print "<td><input style=\"border: 0; color: #". $color ."; font-size: 11px; font-family: verdana; width: 180px;\" type=\"text\" name=\"Oppgavestatus\" value=\"\"". $Oppgave['Oppgavestatus'] ."\"></td>"; print "<td><input style=\"border: 0; color: #". $color ."; font-size: 11px; font-family: verdana; width: 380px;\" type=\"text\" name=\"Prioritering\" value=\"\"". $Oppgave['Prioritering'] ."\"></td>"; print "<td style=\"color: #". $color .";\">". $Oppgave['plrlastdate'] ."</td>"; print "<td><input type=\"submit\" value=\"Lagre\" style=\"font-size: 9px; width: 37px;\"></td>"; print "</tr>\n"; print "</form>\n"; } ?> </table> <br /> <br /> <div id="Ny"> <h2>Legg til ny oppgave:</h2> <form action="index.php" method="post"> <strong>Oppgave</strong> (<em>Makslengde er 2000 tegn</em>)<strong>:</strong><br /> <input type="text" name="add" style="width: 400px; height: 200px;" maxlength="2000" /> <br /> <select name="Oppgave"> <option value="0">Ikke på saken</option> <option value="1">På saken</option> <option value="2">Fikset</option> <option value="3">Ikke fikset</option> </select> <select name="Prioritering"> <option value="4">Høy</option> <option value="5">Middels</option> <option value="6">Lav</option> </select> <input type="submit" value="Lagre" /> </form> </div> </body> </html> Her er et skjermskudd fra phpMyAdmin - merk dere at det er også lagt inn "Prioritering". Dette skjermskuddet er før jeg kom på at jeg kunne ha med prioritering. EDIT: Pastebin. Endret 29. desember 2007 av Jooakim Lenke til kommentar
Jonas Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 To feilmeldingene kommer av feil i SQL-spørringen på linje 91. Du skriver følgende .. SELECT * WHERE worldid=oppgave .. men det er feil, siden du ikke spesifiserer hvilken tabell du vil hente fra. select syntax Lenke til kommentar
Jooakim Skrevet 29. desember 2007 Forfatter Del Skrevet 29. desember 2007 (endret) Ok, takk. Men jeg skjønner fortsatt ikke hva jeg skal skrive i WHERE. $Oppgave = mysql_query("SELECT * FROM Oppgave WHERE `worldid` = '". $Oppgave['Oppgave'] ."'"); Edit merkelig at ikke det er en php-bbtag. Endret 29. desember 2007 av Jooakim Lenke til kommentar
Danny92 Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 Også burde du bruke isset($_POST['edit']) i stede bare får $_POST['edit'] ? Lenke til kommentar
fiskfisk Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 Hei, Jeg har ikke tid til å begynne å gå i stort med detaljer her nå, men et par nyttige pekere; Den tomme kolonna kommer fra: print "<td style=\"color: #". $color .";\">". $Oppgave['plrlastdate'] ."</td>"; Ettersom jeg ikke tror du har noen 'plrlastdate' i tabellen din, så mistenker jeg at copy'n'pastinga di har gått litt unna i svingene. Det samme når det gjelder: $Oppgave = mysql_query("SELECT * FROM Oppgave WHERE `worldid` = '". $Oppgave['Oppgave'] ."'"); For det første så har du jo allerede _hentet_ ut alle dataene om oppgaven (de er jo i $Oppgave allerede...), så det burde ikke være nødvendig å kjøre enda en SQL-spørring her. Punkt to i så måte er at kolonnenavnet "worldid" ikke er nevnt noe som helst annet sted, så også her er det nok copy'n'paste som er den skyldige. Et annet triks det kan være verdt å få med seg er at HTML-attributter kan begrenses med ', sånn at du kan bruke ting som print("<td style='...'>") og slippe å sjonglere med \" overalt. Senere vil du uansett gå videre til å bruke en eller annen form for templating. Når det gjelder hva dannyboy_1992_ skriver, så er det god skikk å bruke enten isset() eller empty() for å sjekke om en verdi er satt / har en reell verdi, i stedet for å bare teste om den er true/false. Det er også en god vane å ha en error_reporting(E_ALL); på toppen av koden, sånn at du får alle feilmeldinger om udefinerte variable og andre ulumskheter. Lenke til kommentar
Jooakim Skrevet 29. desember 2007 Forfatter Del Skrevet 29. desember 2007 (endret) Jeg slettet den linjen nå print "<td style=\"color: #". $color .";\">". $Oppgave['plrlastdate'] ."</td>"; Hva bør jeg skrive i linjen med worldid da? Mener du at jeg bare skal fjerne "WHERE `worldid`"? Om jeg forstår det med HTML-attributtene rett. Skal jeg da skrive for eksempel print "<td><input type='submit' value='Lagre' style='font-size: 9px; width: 37px;'></td>"; istedet for print "<td><input type=\"submit\" value=\"Lagre\" style=\"font-size: 9px; width: 37px;\"></td>"; Jeg har nå oppdatert Pastebin. Og når jeg la inn "error_reporting(E_ALL)", kom Notice: Undefined index: edit in /home/halovasj/public_html/testphp/index.php on line 67 Linje 67: if ($_GET['edit']) { og Notice: Undefined index: Oppgavestatus in /home/halovasj/public_html/testphp/index.php on line 73 OK Linje 73: mysql_query("INSERT INTO `Oppgave` VALUES ('". $_POST['Oppgave'] ."','". $_POST['Oppgavestatus'] ."','". $_POST['Prioritering'] ."')"); I tillegg kom en ny feilmelding Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/halovasj/public_html/testphp/index.php on line 93 nn Linje 93: $Oppgave = mysql_fetch_array($Oppgave); Til det dannyboy skrev - skal jeg skrive isset($_X['X']) Alle steder der det står $_POST/EDIT? Takk for hjelpen, folkens! Endret 29. desember 2007 av Jooakim Lenke til kommentar
Danny92 Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 (endret) if(isset($_POST['blah'])) { Sånn Edit: Når det gjelder denne erroren: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/halovasj/public_html/testphp/index.php on line 93 nn Så har jeg erfaring med når den kommer at enten så finnes ikke tabbelen eller felte. Endret 29. desember 2007 av dannyboy_1992_ Lenke til kommentar
grimjoey Skrevet 29. desember 2007 Del Skrevet 29. desember 2007 (endret) ut i fra screenshottet å dømme mangler du feltet prioritering som du bruker i koden. en annen ting verdt å si er at du bruker get til å oppdatere databasen. get bør kun brukes til å vise informasjon. post bør brukes når verdier i databasen skal endres. edit: du bør forøverig også ha et id felt i databasen som fungerer som primary key auto_increment. du kan ha oppgave tekst som PK, men det er god skikk å ha et id felt. tilfelle du skal utvide med en brukerdatabase og tilordninger mellom brukere og oppgaver for eksempel. Endret 29. desember 2007 av grimjoey Lenke til kommentar
Jooakim Skrevet 1. januar 2008 Forfatter Del Skrevet 1. januar 2008 Siden følgende tydligvis ikke var så lett å forstå, legger jeg opp et oppdatert bilde her: Her er et skjermskudd fra phpMyAdmin - merk dere at det er også lagt inn "Prioritering". Dette skjermskuddet er før jeg kom på at jeg kunne ha med prioritering. Her er oppdatert Pastebin. Et lite spørsmål: Hvordan får jeg slik at </table> kommer med når jeg ser på kildekoden til http://www.halovasjera.net/testphp/? Lenke til kommentar
grimjoey Skrevet 1. januar 2008 Del Skrevet 1. januar 2008 (endret) la ikke merke til den teksten. på linje 92 mangler du tabellnavn i query'n. <table/> er synlig i kildevisning av siden. forstår ikke helt hva du mener? Endret 1. januar 2008 av grimjoey Lenke til kommentar
Jooakim Skrevet 1. januar 2008 Forfatter Del Skrevet 1. januar 2008 Hmm, hvilket tabellnavn skal stå der da? Jeg mistenker Oppgave. Lenke til kommentar
Jooakim Skrevet 6. januar 2008 Forfatter Del Skrevet 6. januar 2008 Fikset det. Og når jeg la til if(isset( før $_GET/$_POST i mysql-queriene, kom det feilmeldinger, så jeg fjernet det. Pastebin. Lenke til kommentar
grimjoey Skrevet 6. januar 2008 Del Skrevet 6. januar 2008 ikke: $res = mysql_query('select something from someplace where '.if(isset($_POST['something'])).' = something;'); men: if(isset($_POST['something'])) $res = mysql_query('select something from someplace where '.$_POST['something'].' = something;'); Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå