Wackamole Skrevet 2. september 2007 Del Skrevet 2. september 2007 Hei, jeg har et problem med en kode. Jeg driver og lager administrator system til et annonse script, men når jeg skal endre felter i tabelene i databasen vil den ikke gjøre det Feilmelding: Klikk for å se/fjerne innholdet nedenfor You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'adurl = 'http://www.anonnselink.no/', WHERE adID = 2' at line 11 Jeg bruker dette scriptet på bildegalleriet mitt også, og der er det ingen problemer. så jeg har ingen anelse om hva det kan være. Her er scriptet: Klikk for å se/fjerne innholdet nedenfor PHP <?php //Har tatt bort tilkoblingen til databasen, siden det ikke er feilen $id = $_GET['id']; // Hent produktID for bruk lenger ned. if($_POST['submit']){ // Hvis brukeren har trykt på submit knappen, legg til i databasen. $sql = "UPDATE ads SET adID = '".$_POST['adID']."', alt = '".$_POST['alt']."', url = '".$_POST['url']."', aktiv = '".$_POST['aktiv']."' adurl = '".$_POST['adurl']."', WHERE adID = ".$id; mysql_query($sql, $db) or die(mysql_error()); // Kjør spørringen som legger inn i databasen. echo "Bildet oppdatert!<br>"; } // Henter ut produktinfo og legger det inn i et recordset ($result) $sql = "select * from ads WHERE adID='".$id."' ORDER BY adID"; $result = mysql_query($sql,$db) or die(mysql_error()); echo "<table><tr><td>"; // Henter ut info fra recordsettet og leggerden inn i variabler. // Dette trenger du egentlig ikke å gjøre siden du kan referere til dem // direkte med $row['feltnavn']. // Du trenger heller ikke å bruke en løkke (while, i dette tilfellet) pga // at du alltid vil få kun 1 post. Kun når du får flere poster at du trenger // en løkke. F.eks. når du skal hente ut alle produktene å lage en liste av dem. $row = mysql_fetch_array($result); // Henter ut infoen å legger dem inn i en array (variabel) // Disse neste 4 linjene trenger du som sagt egentlig ikke. Hvis du tar dem bort må du // forandre koden lenger ned på siden til å referere direkte til $row variabelen. $adID = "".$row['adID'].""; $alt = "".$row['alt'].""; $url = "".$row['url'].""; $aktiv = "".$row['aktiv'].""; $adurl = "".$row['adurl'].""; ?> <!-- Viktig at alle kontrollene (tekstbokser, tekstfelt, avkrysningsboks etc. får et navn. name="feltnavn" --> <form action="<?php echo $_SERVER['PHP_SELF']."?id=".$id; ?>" method="post"> <fieldset> <legend>Endre annonse info. </legend> <dl> <dt>adID: <dd><input type="text" name="adID" value="<?php echo $adID; ?>"/> </dd> </dt> <dt>Alt: <dd> <textarea name="alt" cols="55" rows="8"><?php echo $alt; ?> </textarea> </dd> </dt> <dt>bilde URL: <dd><input type="text" name="url" value="<?php echo $url; ?>"/></dd> </dt> <dt>Aktiv*: <dd><input type="text" name="aktiv" size="" value="<?php echo $aktiv; ?>"/></dd> </dt> <dt>anonnsen skal peke til url: <dd><input type="text" name="adurl" size="" value="<?php echo $adurl; ?>"/></dd> </dt> <dt><br /><input type="hidden" name="adID" value="<?php echo $id; ?>"/><input type="submit" name="submit" value="Lagre" /> </dt> </dl> * = Vis aktiv la feltet vere blank, vis ikke aktiv skriv 'Nei' i feltet </fieldset> </form> Lenke til kommentar
JohndoeMAKT Skrevet 2. september 2007 Del Skrevet 2. september 2007 (endret) Hva med å heller printe SQL-en slik at det blir lettere å se hvor feilen er? EDIT: Er det et komma før WHERE ? Endret 2. september 2007 av JohndoeMAKT Lenke til kommentar
Wackamole Skrevet 2. september 2007 Forfatter Del Skrevet 2. september 2007 UPDATE ads SET adID = '2', alt = 'annonsetekst ', url = '/ad/tba.jpg', aktiv = '' adurl = 'http://www.annonselink.no/', WHERE adID = 2You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'adurl = 'http://www.annonselink.no/', WHERE adID = 2' at line 11 Lenke til kommentar
JohndoeMAKT Skrevet 2. september 2007 Del Skrevet 2. september 2007 (endret) Jeg regner med at det er kommaet her som lager problemer, selv om jeg er langt fra sikker. adurl = 'http://www.annonselink.no/', WHERE adID = 2 EDIT: Du kan fjerne "SET adID = 2" for det gjelder bare for rader hvor adID allerede er to. Endret 2. september 2007 av JohndoeMAKT Lenke til kommentar
Wackamole Skrevet 2. september 2007 Forfatter Del Skrevet 2. september 2007 (endret) Nei det er ikke kommaet... EDIT: tok bort "SET adID = 2" Endret 2. september 2007 av Microsoftbruker Lenke til kommentar
JohndoeMAKT Skrevet 2. september 2007 Del Skrevet 2. september 2007 (endret) Jeg fant feilen: aktiv = '".$_POST['aktiv']."' skal være : aktiv = '".$_POST['aktiv']."', (Dette i tillegg til at kommaet før WHERE skal bort) Endret 2. september 2007 av JohndoeMAKT Lenke til kommentar
Wackamole Skrevet 2. september 2007 Forfatter Del Skrevet 2. september 2007 (endret) Okei, tusen takk for hjelpen!! EDIT: Typo Endret 2. september 2007 av Microsoftbruker Lenke til kommentar
Peter Skrevet 3. september 2007 Del Skrevet 3. september 2007 Håper den som skal bruke dette skriptet er klar over at tegn som #,--,'," osv. kan føkke opp en del så han/hun unngår det. Ettersom du bruker mysql kan du i det minste bruke mysql_real_escape_string()? og hvorfor skriver du slik: $adID = "".$row['adID'].""; $alt = "".$row['alt'].""; $url = "".$row['url'].""; $aktiv = "".$row['aktiv'].""; $adurl = "".$row['adurl'].""; Når du kan skrive slik? $adID = $row['adID']; $alt = $row['alt']; osv.. Du starter en tabell som aldri blir avsluttet eller brukt, men antar du skal printe ut annonsene her etterhvert? Lenke til kommentar
Wackamole Skrevet 3. september 2007 Forfatter Del Skrevet 3. september 2007 Dette er et script som jeg har modifisert etter mitt bruk, så lenge det funker så er jeg fornøyd Dette scriptet blir brukt på den delen av siden som folk ikke kommer til og være (forhåpentligvis) så vis det blir problemer så skal jeg fikse eller lage et nytt script! Men er enig der, det er noen ting i scriptet som kunne vært gjort mye enklere.. 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å