TheClown Skrevet 18. september 2007 Skrevet 18. september 2007 (endret) Heisann. Jeg lager et testscript på pure f. I scriptet skal man skrive inn Navn, URL, velge kategori og en beskrivelse. Hele scriptet fungerer i samkjør med en database og kategoriene hentes ut derfra. Når jeg har fylt ut feltene og valgt kateogri ble kategori-raden blank i databasen. Tror feilen ligger i denne delen av scriptet: if(!isset($_POST['add'])) { echo "<table width='29%' border='0' align='center' >"; echo "<tr>"; echo $text; echo "<td width='20%' height='25'>"; echo "<form action='".$_SERVER['self']."' method='post'>"; echo "Name: </td><td width='70%'><input type='text' size='45' name='name' value='" . $_SESSION['name'] . "'></td>"; echo "</tr>"; echo "<tr>"; echo "<td width='20%' height='25'>"; echo "URL: </td><td width='70%'><input type='text' size='45' name='url' value='" . $_SESSION['url'] . "'></td>"; echo "</tr>"; echo "<tr>"; echo "<td width='20%' height='25'>"; echo "Kategori: </td><td width='70%'>"; // Find all categoryeis $catf = "SELECT cat_name, cat_id FROM cat ORDER BY cat_id DESC"; $catfind = mysql_query($catf) or die(mysql_error()); echo "<select name='category'><br />"; while ($catrow=mysql_fetch_assoc($catfind)) { echo "<option value='".$catrow['cat_id']."'>".$catrow['cat_name']."</option>"; } mysql_free_result($catfind); echo "</select></td>"; echo "</tr>"; echo "<tr>"; echo "<td width='20%' height='100'>"; echo "Beskrivelse: </td><td width='70%'><textarea name='desc' rows='15' cols='45' >" . $_SESSION['desc'] . "</textarea></td>"; echo "</tr>"; echo "<tr> <td width='20%' height='25'>"; echo "</td><td width='70%'>"; echo "<input type='submit' name='add' value='Legg til'></td></form>"; echo "</tr>"; echo "</table>"; } ... // Getting the post info into normal vars for database use $_POST['name'] = $name; $_POST['url'] = $url; $_POST['category'] = $cat; $_POST['desc'] = $desc; // Insert all the info into the database $sql3 = "INSERT INTO link (link_id, link_title, link_url, link_desc, link_posted, user_id, cat_id) VALUES ('$iddd','$name','$url','$desc','$now','$userID','$cat')"; $result3 = mysql_query($sql3) or die(mysql_error()); Hele scriptet: http://pastebin.com (Har også problem med at // Add one to get a new ID $stupid = 1; $iddd = $idd + $stupid Ikke funker. Noen som veit hvorfor ikke iden blir økt med en? (Klipt ut av hele scriptet)) Endret 18. september 2007 av TheClown
BlueEAGLE Skrevet 18. september 2007 Skrevet 18. september 2007 Under den siste linjen du har postet: var_dump($sql3); Det er meget mulig at spørringen din ikke inneholder det du tror den vil gjøre. Dette på grunn av at $_POST['name'] = $name; $_POST['url'] = $url; $_POST['category'] = $cat; $_POST['desc'] = $desc; meget sansynlig skulle ha vært $name = mysql_real_escape_string($_POST['name']); $url = mysql_real_escape_string($_POST['url']); $cat = mysql_real_escape_string($_POST['category'] ); $desc = mysql_real_escape_string($_POST['desc']);
BlueEAGLE Skrevet 18. september 2007 Skrevet 18. september 2007 $iddd = $idd + $stupid Den første variabelen er: $iddd Den andre variabelen er: $idd I en løkke så vil alltid $iddd være $idd + 1 uansett hvor mange ganger løkken går.
BlueEAGLE Skrevet 18. september 2007 Skrevet 18. september 2007 Når det er sagt så er det et par grunnregler du bør lære deg: 1: Alltid feilsjekk informasjon som kommer fra eksterne kilder (også databaser) slik at du er sikker på at dette ikke er ting som kan ødelegge for deg 2: Bruk alltid beskrivende variabelnavn. Hvis du har flere spørringer så bruk gjerne tabellnavnet i variabelene som brukes til å behandle spørringen med. Variabler som $sql424 er veldig uheldige. 3: Når du skal feilsøke noe som mangler så legg til kall i skriptet som skriver ut verdiene underveis. På den måten så kan du finne ut hvor verdiene forsvinner.
TheClown Skrevet 18. september 2007 Forfatter Skrevet 18. september 2007 (endret) Nei, nei Jeg har skjekket databasene flere ganger, og jeg vet at den skriver riktig info. Problemet er det at jeg tror ikke at jeg har satt til $_POST ordentlig på kategori. And IDen; En loop heter ut den høyeste IDen som finnes i databasen og slutter loopen (altså bare en løkke), så fører jeg databaseinfoen vidre til en vanelig variable. Så skal jeg legge til 1 slik at variablen blir en høyere enn det den orginalt var. Problemet er bare det at loopen henter og skriver samme verdi, som akkurat nå er 10. Endret 18. september 2007 av TheClown
Crowly Skrevet 18. september 2007 Skrevet 18. september 2007 En loop heter ut den høyeste IDen som finnes i databasen og slutter loopen (altså bare en løkke) Bare til info. Da trenger du ingen løkke Bare å kjøre en mysql_fetch_row/assoc/array så vil verdien bli hentet ut en gang.
TheClown Skrevet 18. september 2007 Forfatter Skrevet 18. september 2007 // Get the highest ID from the database $idget = "SELECT link_id FROM link where link_id = (SELECT max(link_id) FROM link)"; $resultt=mysql_query($idget) or die(mysql_error()); while ($roww=mysql_fetch_assoc($resultt)) { $idd = $roww['link_id']; } mysql_free_result($resultt); // Add one to get a new ID $stupid = 1; $iddd = $idd + $stupid; Loopen er unødendig?
Runar0 Skrevet 18. september 2007 Skrevet 18. september 2007 (endret) PHP <?php // Get the highest ID from the database $idget = "SELECT link_id FROM link where link_id = (SELECT max(link_id) FROM link)"; $resultt=mysql_query($idget) or die(mysql_error()); $roww=mysql_fetch_assoc($resultt) $idd = $roww['link_id']; mysql_free_result($resultt); // Add one to get a new ID $stupid = 1; $iddd = $idd + $stupid; ?> Gir vel samme resultat Endret 18. september 2007 av Runar0
Crowly Skrevet 19. september 2007 Skrevet 19. september 2007 Jeg ville ha gjordt det slik, og sql ser unødvendig tungvint ut PHP <?php$idget = "SELECT max(link_id) id FROM link"; $idd=mysql_fetch_assoc(mysql_query($idget)); echo $idd['id']; // evt hvis man ønsker maks id + 1 $idget = "SELECT max(link_id)+1 id FROM link"; $idd=mysql_fetch_assoc(mysql_query($idget)); echo $idd['id']; ?>
v3g4rd Skrevet 19. september 2007 Skrevet 19. september 2007 if(!isset($_POST['add'])) { echo "<table width='29%' border='0' align='center' >"; echo "<tr>"; echo $text; echo "<td width='20%' height='25'>"; echo "<form action='".$_SERVER['self']."' method='post'>"; echo "Name: </td><td width='70%'><input type='text' size='45' name='name' value='" . $_SESSION['name'] . "'></td>"; echo "</tr>"; echo "<tr>"; echo "<td width='20%' height='25'>"; echo "URL: </td><td width='70%'><input type='text' size='45' name='url' value='" . $_SESSION['url'] . "'></td>"; echo "</tr>"; echo "<tr>"; echo "<td width='20%' height='25'>"; echo "Kategori: </td><td width='70%'>"; // Find all categoryeis $catf = "SELECT cat_name, cat_id FROM cat ORDER BY cat_id DESC"; $catfind = mysql_query($catf) or die(mysql_error()); echo "<select name='category'><br />"; while ($catrow=mysql_fetch_assoc($catfind)) { echo "<option value='".$catrow['cat_id']."'>".$catrow['cat_name']."</option>"; } mysql_free_result($catfind); echo "</select></td>"; echo "</tr>"; echo "<tr>"; echo "<td width='20%' height='100'>"; echo "Beskrivelse: </td><td width='70%'><textarea name='desc' rows='15' cols='45' >" . $_SESSION['desc'] . "</textarea></td>"; echo "</tr>"; echo "<tr> <td width='20%' height='25'>"; echo "</td><td width='70%'>"; echo "<input type='submit' name='add' value='Legg til'></td></form>"; echo "</tr>"; echo "</table>"; } Når du først skal skrive ut såpass mye HTML-kode, lønner det seg å benytte seg av EOF, eller heredoc. Lite eksempel: PHP <?php $minVariabel = "Hei på deg din sei!:)"; $output = <<<EOF <html> <head> <title>PHP-testside</title> </head> <body> <h1>$minVariabel</h1> <br> <h2>$minVariabel</h2> <br> <p>$minVariabel</p> </body> </html> EOF; echo $output; ?>
Crowly Skrevet 19. september 2007 Skrevet 19. september 2007 (endret) Kan være greit å legge ved en link til en eller flere sider om forklarer litt mer on hva EOF/Heredoc gjør for noe. Jeg fant denne: http://en.wikipedia.org/wiki/Here_document Men vil ikke <pre> tagen gjøre det samme ? Jeg pleier alltid å bruke \n (linjeskift) for å gjøre kildekoden mer lesbar, men dette ser ut til å være en enklere metode, lært noe i dag og Endret 19. september 2007 av crowly
TheClown Skrevet 19. september 2007 Forfatter Skrevet 19. september 2007 Men jeg lurer på en ting. Forenkler jeg script / alt en del hvis jeg setter sammen siden med mid PHP & Javascript? Har b.la tenkt til å legge inn popup @ empty felt.
Crowly Skrevet 20. september 2007 Skrevet 20. september 2007 Kan veldig lite javascript, så jeg vil si kanskje. En ting å huske på når man bruker javascript er at brukern kan skru av dette, og da er det ikke gitt at ting vil fungere som tiltenkt. Er vel mulig å legge inn sjekker for dette, og så kjøre scriptet deretter.
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å