AnaXyd Skrevet 8. januar 2008 Skrevet 8. januar 2008 (endret) Heisann! Jeg har akkurat satt opp en kundedatabase via PHP og MySQL ved å følge denne guiden: Linky Har gjort det som står i guiden, og tilpasset det selv, slik at det passer til mine behov. Knallbra guide forresten, og denne anbefales virkelig. Den viste til akkurat det jeg trengte. Siden jeg jobber med ligger her: Linky Det jeg ønsker å få til, er en enkel endre funksjon som man enkelt bare kan trykke på "endre" på en tabell, og det kommer opp en form hvor man kan endre de ulike kriteriene. Er også ute etter en slette funksjon, hvor man bare kan trykke på "slett" på en tabell, og man kan slette den ved en "ja/nei" godkjenning. Noen som veit hvordan jeg kan få til dette? Setter stor pris på hjelp! Endret 8. januar 2008 av AnaXyd
Merko Skrevet 8. januar 2008 Skrevet 8. januar 2008 Heisann! Jeg har akkurat satt opp en kundedatabase via PHP og MySQL ved å følge denne guiden: Linky Har gjort det som står i guiden, og tilpasset det selv, slik at det passer til mine behov. Knallbra guide forresten, og denne anbefales virkelig. Den viste til akkurat det jeg trengte. Siden jeg jobber med ligger her: Linky Det jeg ønsker å få til, er en enkel endre funksjon som man enkelt bare kan trykke på "endre" på en tabell, og det kommer opp en form hvor man kan endre de ulike kriteriene. Er også ute etter en slette funksjon, hvor man bare kan trykke på "slett" på en tabell, og man kan slette den ved en "ja/nei" godkjenning. Noen som veit hvordan jeg kan få til dette? Setter stor pris på hjelp! For å slette kan du vel bruke: $sql="DELETE FROM $tbl_name WHERE id = '$id'"; Og Endre kan du bruke: $sql=("UPDATE $tbl_name SET name = '$name', mail = '$mail' WHERE id = '$id'"); eller noe? - på update legger du til navnene osv du skan endre.. Trenger du ett 'bedre' eksempel?
Crowly Skrevet 8. januar 2008 Skrevet 8. januar 2008 (endret) Jeg bruker dette, sikkert rom for forbedringer både her og der if (isset($_GET['d']) AND $_GET['d']==1) { // bekreft slett echo "Sure you want to delete this ?<br /><br />\n"; echo "<form action=\"oppdat_profil.php\" method=\"post\">\n"; echo "No <input type=\"radio\" name=\"slett\" value=\"0\" checked=\"checked\" /> Yes <input type=\"radio\" name=\"slett\" value=\"1\" /><br /><br />\n"; echo "<input type=\"submit\" value=\"Ok\" />\n"; echo "<input type=\"hidden\" value=\"Ok\" name=\"slettnyh\" />\n"; echo "<input type=\"hidden\" value=\"nyheter\" name=\"skjema\" />\n"; echo "<input type=\"hidden\" value=\"".$_GET['i']."\" name=\"i\" />\n"; echo "</form>\n"; } else { //javascript for bilde bytte echo "<script language=\"javascript\" type=\"text/javascript\"> function bytt_bilde(menuform,id) { var baseurl = \"./images/avatar/\"; selecteditem = menuform.nyhbilde.selectedIndex; x = menuform.nyhbilde.options[ selecteditem ].value; document.getElementById(id).src=baseurl + x; } </script>\n"; // legg til/edit echo "<form action=\"oppdat_profil.php\" method=\"post\">\n"; echo "<table>\n"; echo "<tr>\n"; if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1) { $query="SELECT body,header,url,id,image FROM NHAP_news WHERE id=".mysql_real_escape_string($_GET['i']); $row=mysql_fetch_row(mysql_query($query)); } echo "<td>Heading:</td><td><input type=\"text\" size=\"".$size."\" name=\"overskrift\" "; if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1) { echo "value=\"".$row[1]."\""; } echo " /></td>\n"; echo "</tr>\n"; echo "<tr>\n<td>Url: http://</td><td><input type=\"text\" size=\"".$size."\" name=\"url\" "; if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1) { echo "value=\"".$row[2]."\""; } echo " /> (optional)</td>\n"; echo "</tr>\n"; // bilde - valg echo "<tr><td>Image:</td><td><select name=\"nyhbilde\" onchange=\"bytt_bilde(this.form,'nbilde')\">\n<option value\"\">No image</option>"; $bilder=glob("./images/avatar/*.jpg"); foreach ($bilder as $key) { echo $key."<br />"; $key=substr($key,strrpos($key,"/")+1); echo "<option value=\"".$key."\""; if (isset($row[4]) AND $row[4]==$key) echo " selected=\"selected\""; echo ">".$key."</option>\n"; } echo "</select>\n ( <a href=\"thumbs.php\" target=\"_blank\">Gallery</a> )</td></tr>\n"; // vis bilde echo "<tr><td> </td><td><img id=\"nbilde\" src=\""; if (strlen($row[4])>0) echo "./images/avatar/".$row[4]; echo "\" alt=\"\" border=\"0\" />\n"; echo "</td></tr>\n"; //tekst - innhold echo "<tr>\n"; echo "<td valign=\"top\">Text:</td><td>\n"; echo "<textarea rows=\"20\" cols=\"50\" name=\"tekst\">\n"; if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1 AND is_numeric($_GET['i'])) { echo $row[0]; } echo "</textarea>\n"; echo "</td>\n"; echo "</tr>\n"; echo "<tr>\n"; echo "<td colspan=\"2\"><input type=\"submit\" "; if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1) echo "value=\"Ok\" "; else echo "value=\"Publish\" "; echo "/></td>\n"; echo "</tr>\n"; echo "</table>\n"; if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1) { echo "<input type=\"hidden\" name=\"form\" value=\"edit\" />\n"; echo "<input type=\"hidden\" name=\"delutd\" value=\"".$row[3]."\" />\n"; } else echo "<input type=\"hidden\" name=\"form\" value=\"regny\" />\n"; echo "<input type=\"hidden\" name=\"skjema\" value=\"nyheter\" />\n"; echo "</form>\n"; } // slett osv if (!isset($_GET['ed']) AND !isset($_GET['i']) AND !isset($_GET['d'])) { echo "<table class=\"ptab\" cellspacing=\"0\">\n"; echo "<tr>\n<th colspan=\"4\">Previous news:</th>\n</tr>\n"; echo "<tr style=\"font-size: 12px;\">\n"; echo "<td> </td><td>Heading</td><td>Date</td><td> </td>\n"; echo "</tr>\n"; $query="SELECT header,id,DATE_FORMAT(date,'%d.%m.%Y') dato FROM NHAP_news WHERE user='".$_SESSION['user']."' ORDER BY DATE_FORMAT(date,'%Y.%m.%d') desc"; $result=mysql_query($query,$link); $i=1; while ($row=mysql_fetch_assoc($result)) { if ($i&1) $class='col2'; else $class='col1'; echo "<tr class=\"".$class."\">\n"; echo "<td><a href=\"index.php?p=pro&pp=7&ed=1&i=".$row['id']."\"><i>Edit</i></a></td>\n"; echo "<td>".$row['header']."</td>\n"; echo "<td>\n"; echo $row['dato']."\n"; echo "</td>\n"; echo "<td><a href=\"index.php?p=pro&pp=7&d=1&i=".$row['id']."\"><i>Delete</i></td>\n"; echo "</tr>\n"; $i++; } echo "</table>\n"; if (isset($result)) mysql_free_result($result); } og if (isset($_POST['slettnyh']) AND $_POST['slettnyh']=='Ok' AND isset($_POST['slett']) AND $_POST['slett']==1) { $sql=sprintf("DELETE FROM NHAP_news WHERE NHAP_news.id=%d AND user='%s' LIMIT 1",mysql_real_escape_string(strip_tags($_POST['i'])), $_SESSION['user']); } elseif (isset($_POST['form']) AND $_POST['form']=='edit') { $oversk=mysql_real_escape_string(stegn(strip_tags($_POST['overskrift']))); $url=mysql_real_escape_string(strip_tags($_POST['url'])); $tekst=mysql_real_escape_string(stegn(strip_tags($_POST['tekst']))); $sql=sprintf("UPDATE NHAP_news SET header='%s', url='%s', body='%s', image='%s' WHERE user='%s' AND id=%d", $oversk, $url, $tekst, mysql_real_escape_string(strip_tags($_POST['nyhbilde'])), $_SESSION['user'], mysql_real_escape_string(strip_tags($_POST['delutd']))); } elseif (isset($_POST['form']) AND $_POST['form']=='regny') { $sql=sprintf("INSERT INTO NHAP_news (header, url,body,date,user,image) VALUES( '%s','%s','%s','%s','%s','%s')", mysql_real_escape_string(stegn(strip_tags($_POST['overskrift']))), mysql_real_escape_string(strip_tags($_POST['url'])), mysql_real_escape_string(stegn(strip_tags($_POST['tekst']))), date("Y-m-d"), $_SESSION['user'], mysql_real_escape_string(strip_tags($_POST['nyhbilde']))); } if (isset($sql)) mysql_query($sql)||die("Feil (Nyheter): ".mysql_error()); unset($_POST); mysql_close($link); //header('Location: index.php?opt=profil&p=7'); echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php?p=pro&pp=7\" />"; break; I korte trekk så skrives det først ut ett tomt form/skjema hvis ikke parameter for sletting eller endring er satt, og i bunn å listes ut tidligere forekomster med en endre link og en slett link. Hvis sletting så vises slette skjema for å bekrefte sletting, eller skjemaet lastes på nytt med verdier fra databasen. Script nr 2 oppdatere basen etter gitte parameter for å finne ut av om det skal settes inn en ny rad, raden skal oppdateres eller slettes. Endret 8. januar 2008 av Crowly
AnaXyd Skrevet 9. januar 2008 Forfatter Skrevet 9. januar 2008 Takk for svar! Hmm, ble litt vanskelig å sammenlige ett nyhetssystem og det jeg driver med.. Driver å prøver meg fram, men hadde vært fint med litt hjelp til!
Crowly Skrevet 10. januar 2008 Skrevet 10. januar 2008 En nedstrippet versjon av scriptet over, så det kanskje blir litt enklere å se hvordan jeg har løst "problemet" Skjema: if (isset($_GET['d']) AND $_GET['d']==1) { // bekreft slett // Hvis d parameter er satt så skal slett skjema vises, for å få en bekreftelse // fra bruker om at man virkelig ønsker å slette forekomsten } else { // legg til/edit // Sjekk om endre funksjonen er valgt, ed parameter, og at hvilken forekomst som skal hentes if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1) { // Hent inn forekomsten fra databasen for å fylle inn verdier i skjemaet under } // skriv ut skjema her, og fyll inn verdier hvis nødvendig if (isset($_GET['ed']) AND isset($_GET['i']) AND $_GET['ed']==1) { // skulte felter som forteller hva som skal skje i behandlingsscriptet som oppdatere databasen // ved endring av forekomster } else // skjult felt som forteller at det er en ny forekomst som skal inn } // slett osv if (!isset($_GET['ed']) AND !isset($_GET['i']) AND !isset($_GET['d'])) { // List ut forekomstene fra databasen, med linker for endring og sletting. // Sett ed parameter i endre linken, og d i slett linken. // Slett og endre trenger begge en verdi for å finne forekomsten som skal behandles } Behandling // verifisering og andre nødvendig ting if (isset($_POST['slettnyh']) AND $_POST['slettnyh']=='Ok' AND isset($_POST['slett']) AND $_POST['slett']==1) { // slett forekomst fra databasen, bygger kun opp sql settningen } elseif (isset($_POST['form']) AND $_POST['form']=='edit') { // Oppdater databasen med endret informasjon, bygger kun opp sql settningen } elseif (isset($_POST['form']) AND $_POST['form']=='regny') { // Sett inn ny forekomst, bygger kun opp sql settningen } // utfører sql settningen if (isset($sql)) mysql_query($sql)||die("Feil (Nyheter): ".mysql_error()); // rydd opp og gå tilbake til skjema siden unset($_POST); mysql_close($link); echo "<meta http-equiv=\"refresh\" content=\"0;url=index.php\" />"; Håper dette gjorde det litt enklere å forstå, hvis ikke så spør i vei
AnaXyd Skrevet 10. januar 2008 Forfatter Skrevet 10. januar 2008 (endret) Burde kanskje nevnes at jeg har meget begrenset kompetanse innenfor PHP, så ting må inn med teskje.. Er kanskje litt for heavy for en nybegynner som meg, men jeg prøver alikevel.. Hvordan skal jeg sette opp skriptene slik at de fungerer? Er det bare å slenge begge inn i samme php fil, eller skal de være hver for seg? Og hvordan skal jeg gjøre det med "slett" og "endre" knappen? Skal disse være linket til en annen .php side som gjør jobben? Hvordan skal hver "slett" og "endre" være koblet til riktig tabell? Jeg hadde sett for meg noe slikt: Kildekoden til visning av tabellen er her: <?php include "konfigurasjon.php"; include "kobletil.php"; // hämtar information från den angivna tabellen $result = mysql_query("SELECT * FROM kundedatabase") or die(mysql_error()); ?> <table> <thead> <tr class="odd"> <th scope="col">Kundenr</th> <th scope="col">Fornavn</th> <th scope="col">Etternavn</th> <th scope="col">Postnr/sted</th> <th scope="col">Tlf</th> <th scope="col">Mail</th> <th scope="col">Ant. rosa</th> <th scope="col">Ant. svarte</th> <th scope="col">Ant. blå</th> <th scope="col">Total sum</th> <th scope="col">Sig.</th> <th scope="col">Betalt?</th> <th scope="col">Ringt?</th> </tr> </thead> <?php while($row = mysql_fetch_array( $result )) { ?> <tr> <td><?php echo $row['kundenr']; ?></td> <td><?php echo $row['fname']; ?></td> <td><?php echo $row['ename']; ?></td> <td><?php echo $row['postnr_sted']; ?></td> <td><?php echo $row['tlf']; ?></td> <td><?php echo $row['mail']; ?></td> <td><?php echo $row['antall_rosa']; ?></td> <td><?php echo $row['antall_svart']; ?></td> <td><?php echo $row['antall_blaa']; ?></td> <td><?php echo $row['pris_sum']; ?></td> <td><?php echo $row['signatur']; ?></td> <td><?php echo $row['betalt']; ?></td> <td><?php echo $row['ringt']; ?></td> </tr> <?php } ?> </table> <?php // stänger databasen mysql_close($opendb); ?> EDIT: Fant forresten en fiffig PHP modul som kan gjøre akkurat det jeg er ute etter. Men jeg får den ikke til å fungere. Den fungerer ihvertfall ikke "right out of the box". Felmld: Warning: require_once(Pager/Sliding.php) [function.require-once]: failed to open stream: No such file or directory in /home/tendoub/public_html/anaxyd/database/TableEditor.php on line 43 Fatal error: require_once() [function.require]: Failed opening required 'Pager/Sliding.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/tendoub/public_html/anaxyd/database/TableEditor.php on line 43 Link: http://www.phpguru.org/static/TableEditor.html Endret 10. januar 2008 av AnaXyd
trrunde Skrevet 10. januar 2008 Skrevet 10. januar 2008 Knallbra guide forresten, og denne anbefales virkelig. Den viste til akkurat det jeg trengte. Så litt på den guiden der og den er veldig utsatt på mysql injections, du bør sjekke en funksjon som heter mysql_real_escape_string på php.net
Crowly Skrevet 10. januar 2008 Skrevet 10. januar 2008 (endret) Hvordan skal jeg sette opp skriptene slik at de fungerer? Er det bare å slenge begge inn i samme php fil, eller skal de være hver for seg? Hver for seg. Selve skjemaet ligger i mitt tilfelle i profil.php og alle skjermaer som trenger å oppdatere databasen (insert, update og delete) ligger i oppdat_profil.php. oppdat_profil.php blir lagt inn i <form action="oppdat_profil.php" ...> Og hvordan skal jeg gjøre det med "slett" og "endre" knappen? Skal disse være linket til en annen .php side som gjør jobben? Hvordan skal hver "slett" og "endre" være koblet til riktig tabell? Slett linken peker til samme fil, med noen ekstra parameter. F.eks <a href="profil.php?valg=slett&postid=1">Slett</a> Da i profil.php så sjekker jeg om valg parameteret er satt og at verdien er = slett. Da vet jeg at bruker ha valgt å slette en post. if (isset($_GET['valg']) AND $_GET['valg']=='slett') Skriver så ut ett nytt skjema hvor bruker må bekrefte at posten skal slettes echo "Sure you want to delete this ?<br /><br />\n"; echo "<form action=\"oppdat_profil.php\" method=\"post\">\n"; echo "No <input type=\"radio\" name=\"slett\" value=\"0\" checked=\"checked\" /> Yes <input type=\"radio\" name=\"slett\" value=\"1\" /><br /><br />\n"; echo "<input type=\"submit\" value=\"Ok\" />\n"; echo "<input type=\"hidden\" value=\"Ok\" name=\"slettnyh\" />\n"; echo "<input type=\"hidden\" value=\"tabell\" name=\"skjema\" />\n"; echo "<input type=\"hidden\" value=\"".$_GET['i']."\" name=\"slettid\" />\n"; echo "</form>\n"; Jeg skriver ut id nummer på posten som skal slettes i ett skjult felt, slik at jeg kan fange opp det i oppdat_profil.php fila, sammen med en del andre felt som jeg kan sjekke i mot for å forsikre meg om at det er slette rutine som skal utføres. Se om du kan få slette funksjonen til å fungere, så kan du begi deg ut på editerings muligheten etterpå. Endret 10. januar 2008 av Crowly
grimjoey Skrevet 10. januar 2008 Skrevet 10. januar 2008 (endret) Jeg skal prøve å gi deg et enkelt eksempel på hvordan det kan gjøres: tabellen min ser slik ut CREATE TABLE tabellenmin (id INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, brukernavn VARCHAR(25) NOT NULL, passord VARCHAR(40) NOT NULL); PRIMARY KEY betyr at dette feltet må være unikt per rad. alle tabeller må ha en key. en key kan være et felt eller en kombinasjon av flere felt. feltet eller kombinasjonen må da være unik for hver rad. NOT NULL betyr at en rad kun kan legges inn dersom det finnes data i disse feltene. AUTO_INCREMENT betyr at mysql fyller ut feltet for deg med heltall fra 1 og oppover. sammen med not null betyr dette at dersom du legger inn null i feltet vil det automatisk få en verdi fra AUTO_INCREMENT funksjonen. PRIMARY KEY vil automatisk kreve at feltet ikke er tomt med for ordens skyld er det greit å ha med NOT NULL syns jeg feltene er altså id, brukernavn og passord <html><body> <?php // quote_smart() // en variant av en escape funksjon funnet her på forumet // hindrer sql injection function quote_smart($msg) { if ( !is_numeric($msg) ) { // hvis $msg ikke er et nummer: if ( get_magic_quotes_gpc() ) { // hvis magic quotes er aktivert (gjør så php legger til slashes automatisk på input) $msg = stripslashes( $msg ); // fjern slashes (ellers vil mysql_real_escape_string() dobbelslashe) } // legg til quote tegn og escape med mysql_real_escape_string() $msg = "'" . mysql_real_escape_string( $msg ) . "'"; } // returner $msg uansett om det er nummer eller escapa tekst return $msg; } // databasetilkobling mysql_connect( 'localhost', 'root', '******' ) or die( mysql_error() ); mysql_select_db( 'test' ) or die( mysql_error() ); // dersom post[submit_user] er satt (noen har lagt til en bruker), valider og skriv til database // (settes av form submit): if ( isset( $_POST['submit_user'] ) && !empty( $_POST['submit_user'] ) ) { // isset hindrer at du får en notice error dersom indexen ikke er satt // også sjekker jeg at den ikke er tom // nå forventer vi brukernavn og passord if ( !isset( $_POST['brukernavn'] ) || empty( $_POST['brukernavn'] ) ) die( 'Brukernavn ikke skrevet inn!' ); if ( !isset( $_POST['passord'] ) || empty( $_POST['passord'] ) ) die( 'Passord ikke skrevet inn!' ); // både passord og brukernavn er skrevet inn. nå kan vi legge inn i databasen mysql_query( 'INSERT INTO tabellenmin VALUES(null, ' . quote_smart( $_POST['brukernavn'] ) . ', ' . quote_smart( $_POST['passord'] ) . ');' ) or die( mysql_error() ); echo 'Bruker '.$_POST['brukernavn'].' er lagt inn!'; } // dersom post[submit_change_user] er satt (noen har lagret en endring) if ( isset( $_POST['submit_change_user'] ) && !empty( $_POST['submit_change_user'] ) ) { // nå forventer vi id, brukernavn og passord. if ( !isset( $_POST['id'] ) || empty( $_POST['id'] ) ) die( 'Id er ikke satt!' ); if ( !isset( $_POST['brukernavn'] ) || empty( $_POST['id'] ) ) die( 'Brukernavn er ikke skrevet inn!' ); if ( !isset( $_POST['passord'] ) || empty( $_POST['passord'] ) ) die( 'Passord er ikke skrevet inn!' ); // all forventet data er skrevet inn. utføre endringer i tabell mysql_query( 'UPDATE tabellenmin SET brukernavn = ' . quote_smart( $_POST['brukernavn'] ) . ', passord = ' . quote_smart( $_POST['passord'] ) . ' WHERE id = ' . (int)$_POST['id'] . ';' ) or die( mysql_error() ); } // dersom post[submit_delete_user] er satt (noen sletter en bruker) if ( isset( $_POST['submit_delete_user'] ) && !empty( $_POST['submit_delete_user'] ) ) { // forventer id if ( !isset( $_POST['id'] ) || empty( $_POST['id'] ) ) die( 'Id er ikke satt!' ); // slett bruker mysql_query( 'DELETE FROM tabellenmin WHERE id = ' . (int)$_POST['id'] . ';' ) or die( mysql_error() ); } // dersom noen ønsker å legge til data. // strcmp() returnere 0 dersom strengene er like. derfor bruker jeg !strcmp() som betyr (not)strcmp(). altså true dersom strengene er like. if ( isset( $_GET['action'] ) && !strcmp( $_GET['action'], 'adduser' ) ) { echo ' <form action="' . $_SERVER['PHP_SELF'] . '" method="post"> Brukernavn: <input type="text" name="brukernavn" /><br /> Passord: <input type="password" name="passord" /><br /> <input type="submit" name="submit_user" value="Legg til bruker" /> </form> '; } // dersom noen vil endre data if ( isset( $_GET['action'] ) && !strcmp( $_GET['action'], 'changeuser' ) ) { // sjekk om id er satt if ( !isset( $_GET['id'] ) || empty( $_GET['id'] ) ) die( 'Id er ikke satt!' ); // hent data fra tabell // (int)$var vil "kaste" $var til en integer. selv om var er en string blir det en integer. hindrer sql injection. kan kun brukes om du forventer heltall. $res = mysql_query( 'SELECT brukernavn, passord FROM tabellenmin WHERE id = ' . (int)$_GET['id'] . ';' ) or die( mysql_error() ); $row = mysql_fetch_row( $res ); // $row er nå en array med dataene fra querien ($row[0] = brukernavn, $row[1] = passord) echo ' <form action="' . $_SERVER['PHP_SELF'] . '" method="post"> <input type="hidden" name="id" value="' . (int)$_GET['id'] . '" /> Brukernavn: <input type="text" name="brukernavn" value="' . $row[0] . '" /><br /> Passord: <input type="password" name="passord" value="' . $row[1] . '" /><br /> <input type="submit" name="submit_change_user" value="Lagre endring" /> <input type="submit" name="submit_delete_user" value="Slett bruker" /> </form> '; } // skriv ut data og linker // hent beskrivelse av tabell $res = mysql_query( 'DESCRIBE tabellenmin;' ) or die( mysql_error() ); while ( $row = mysql_fetch_assoc( $res ) ) { $desc[] = $row['Field']; // Field er feltnavn i beskrivelsen av tabell } // nå er $desc et array med alle felt navnene i tabellen // hent data fra tabell $res = mysql_query( 'SELECT * FROM tabellenmin;' ) or die( mysql_error() ); while ( $row = mysql_fetch_row( $res ) ) { $data[] = $row; } // nå er $data et array med alle radene og alle feltene i tabellen // presentere data if ( isset( $data ) && isset( $desc ) ) { echo '<table><tr>'; foreach ( $desc as $field ) { echo '<th>' . $field . '</th>'; } echo '</tr>'; foreach ( $data as $row ) { echo '<tr onclick="location.href = \'' . $_SERVER['PHP_SELF'] . '?action=changeuser&id=' . $row[0] . '\';">'; foreach ( $row as $field ) { echo '<td>' . $field . '</td>'; } echo '</tr>'; } echo '</table>'; } echo '<a href="' . $_SERVER['PHP_SELF'] . '?action=adduser">Legg til bruker</a>'; ?> </body></html> thats it Endret 12. januar 2008 av grimjoey
AnaXyd Skrevet 12. januar 2008 Forfatter Skrevet 12. januar 2008 Hmm, testet koden din grimjoey, men får dette i error fra nettleser: Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /bane/til/fila/fil.php on line 121
grimjoey Skrevet 12. januar 2008 Skrevet 12. januar 2008 (endret) endret koden ovenfor. (tester og retter litt feil) edit: nå skal den fungere som en drøm (husk å spesifisere database info og lage tabell først) Endret 12. januar 2008 av grimjoey
AnaXyd Skrevet 12. januar 2008 Forfatter Skrevet 12. januar 2008 (endret) Se der ja.. Nå fungerer den ihvertfall bedre enn før..! Men hvordan får jeg slettet/endret noe nå da? Slik ser det ut: Bruker sugge er lagt inn!id brukernavn passord 2 per ole 3 ost per 4 sugge ræv Legg til bruker Og ikkenoe mer... EDIT: Aha! Når jeg klikker på de kommer det opp noe mer ja! Genialt! Nå får jeg se om jeg får implementert dette da... Endret 12. januar 2008 av AnaXyd
grimjoey Skrevet 12. januar 2008 Skrevet 12. januar 2008 (endret) la inn en onclick. du kan jo legge til css regler f.eks: tr:hover { background-color: blue; } ellernoe (tr:hover funker ikke i IE btw. det kan fikses med javascript. søk etter suckerfish i google.) Endret 12. januar 2008 av grimjoey
AnaXyd Skrevet 12. januar 2008 Forfatter Skrevet 12. januar 2008 Riktig.. Hva om man gjør hver rad til en link, slik at man kan bruke tr a:hover da?
grimjoey Skrevet 12. januar 2008 Skrevet 12. januar 2008 det kan du godt. (det blir 3 linker per rad, var derfor jeg ikke gadd å gjøre det.) eller du kan lage en knapp på slutten av hver rad. mange muligheter
AnaXyd Skrevet 12. januar 2008 Forfatter Skrevet 12. januar 2008 Jeg tenkte i første omgang en knapp på slutten av hver rad. Men siden jeg begynner å gå tom for plass på tabellen min, er det jo genialt om man bare trykker på hele raden. Gleder meg til jeg begynner å implementere dette... Tar sikkert flere uker å få det til..
grimjoey Skrevet 12. januar 2008 Skrevet 12. januar 2008 (endret) du trenger kun å legge til rader i tabellen og input i formene så skal koden gjøre resten av jobben. du må vel legge til input validering selv også red: du kan også bytte ut echo 'noe'; til $variabel .= 'noe'; og senere echo $variabel der du ønsker å skrive ut data. Endret 12. januar 2008 av grimjoey
AnaXyd Skrevet 13. januar 2008 Forfatter Skrevet 13. januar 2008 (endret) Først og fremst: Tusen takk for all hjelp så langt! Så: Jeg må vel omskrive hele greia om den skal passe til databasen min? For jeg har jo en haug med kolonner: Kundenr Fornavn Etternavn Postnr/sted Tlf Mail Ant. rosa Ant. svarte Ant. blå Total sum Signatur Betalt? Ringt? En bit av koden som viser frem databasen som jeg bruker nå: Klikk for å se/fjerne innholdet nedenfor <table> <thead> <tr class="odd"> <th scope="col" abbr="Home">Kundenr</th> <th scope="col">Fornavn</th> <th scope="col">Etternavn</th> <th scope="col">Postnr/sted</th> <th scope="col">Tlf</th> <th scope="col">Mail</th> <th scope="col">Ant. rosa</th> <th scope="col">Ant. svarte</th> <th scope="col">Ant. blå</th> <th scope="col">Total sum</th> <th scope="col">Sig.</th> <th scope="col">Betalt?</th> <th scope="col">Ringt?</th> </tr> </thead> <?php while($row = mysql_fetch_array( $result )) { ?> <tr> <td><?php echo $row['kundenr']; ?></td> <td><?php echo $row['fname']; ?></td> <td><?php echo $row['ename']; ?></td> <td><?php echo $row['postnr_sted']; ?></td> <td><?php echo $row['tlf']; ?></td> <td><?php echo $row['mail']; ?></td> <td><?php echo $row['antall_rosa']; ?></td> <td><?php echo $row['antall_svart']; ?></td> <td><?php echo $row['antall_blaa']; ?></td> <td><?php echo $row['pris_sum']; ?></td> <td><?php echo $row['signatur']; ?></td> <td><?php echo $row['betalt']; ?></td> <td><?php echo $row['ringt']; ?></td> </tr> <?php } ?> </table> <?php Blir helt svimmel av alt det her jeg.. Håper på hjelp! Endret 13. januar 2008 av AnaXyd
grimjoey Skrevet 13. januar 2008 Skrevet 13. januar 2008 scriptet mitt vil vise alle feltene (kolonnene) automatisk (og vise felt navn som table header for hver kolonne), men forms'a må du oppdatere til å ta hensyn til de nye feltene.
AnaXyd Skrevet 13. januar 2008 Forfatter Skrevet 13. januar 2008 Okay! Ja den tok inn alt fra tabellen min automatisk.. Men hva med f.eks: // nå forventer vi brukernavn og passord if ( !isset( $_POST['brukernavn'] ) || empty( $_POST['brukernavn'] ) ) die( 'Brukernavn ikke skrevet inn!' ); if ( !isset( $_POST['passord'] ) || empty( $_POST['passord'] ) ) die( 'Passord ikke skrevet inn!' ); Og: // nå forventer vi id, brukernavn og passord. if ( !isset( $_POST['id'] ) || empty( $_POST['id'] ) ) die( 'Id er ikke satt!' ); if ( !isset( $_POST['brukernavn'] ) || empty( $_POST['id'] ) ) die( 'Brukernavn er ikke skrevet inn!' ); if ( !isset( $_POST['passord'] ) || empty( $_POST['passord'] ) ) die( 'Passord er ikke skrevet inn!' ); // all forventet data er skrevet inn. utføre endringer i tabell mysql_query( 'UPDATE tabellenmin SET brukernavn = ' . quote_smart( $_POST['brukernavn'] ) . ', passord = ' . quote_smart( $_POST['passord'] ) . ' WHERE id = ' . (int)$_POST['id'] . ';' ) or die( mysql_error() ); } Skal dette stå slik som dette? For da får jeg vel ikke endret på alle verdiene i de forskjellige kolonnene, om det er satt slik?
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å