Sätt ut
echo mysql_error();
så ser du vad mysql-databasen tycker går snett. Felmeddelanden brukar vara bra när man ska lösa fel.
6 svar · 394 visningar · startad av vic
Varför lyckas jag inte med detta?
//////////////////////////// NYTT INLÄGG
if(isset($_POST['new_post']))
{
if(strlen($text) < 5 || strlen($rub) < 5)
{
$vadsomhent = '<div class="obs">
<p style="margin:10px 0"><b>Något eller några av följande fel inträffade</b></p>
<ul>
<li>' .$felet. '</li>
</ul>
</div>';
$error = "JA";
}
if($error !== "JA")
{
$tabellnamn = "xblogg_$mappen";
mysql_query("INSERT INTO ".$tabellnamn." (rubrik, ingress, text, tid) VALUES ('$rub', '$ingress', '$text', '$time')");
$vadsomhent = "<p class=\"blue\">Ditt blogginlägg är postat</p><p><a href=\"../extra/blogg.php?art=" .$mappen. "&from=znap\" onclick=\"NewWindow(this.href,'','650','650','no','center');return false\" onfocus=\"this.blur()\">Klicka här för att se din bloggen på znap </a></p><p><a href=\"../lalal/blogg.php?art=" .$mappen. "\">Klicka här för att se bloggen från des direktlänk (blogg.php?art=" .$mappen. ")</a></p>";
$text = "";
$rub = "";
$ingress = "";
}
}
///////////////////////////////// AKTIVERING
if(isset($_POST['activate_blogg']))
{
mysql_query("UPDATE members SET blogg = 'JA' WHERE link = '$mappen'");
$tabellnamn = "xblogg_$mappen";
$sql = "CREATE TABLE ".$tabellnamn."
(
id int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
rubrik varchar(50),
ingress text,
texten longtext,
tid varchar(30),
)";
mysql_query($sql,$con);
echo "<script type=\"text/javascript\"><!--
if (navigator.appName == 'Netscape')
var language = navigator.language;
else
var language = navigator.browserLanguage;
document.location.href = 'index.php?act=blogg';
//--></script>";
}
?>
Detta är bara ett utdrag ur koden, problemet är att jag lyckas inte skapa tabllen, $mappen är en unik användare förövrigt som anges långt tidigare tillsammans med uppkopplingen mot databasen. Kan nämna att mina kunskaper är rätt så färska
// Vic
Sätt ut
echo mysql_error();
så ser du vad mysql-databasen tycker går snett. Felmeddelanden brukar vara bra när man ska lösa fel.
Du har ett likamed tecken för mycket
if($error !== "JA")
ska vara
if($error != "JA")
Men det är ju en fråga och inte ett påstående. Det funkar inte med endast ett likamed-tecken? eller har jag förstått det där helt fel, det var i varje fall inte där problemet låg.
Kan säga att det berode på ett kommatecken för mycket i SQL-syntaxen
Något felmeddelande?
Pedda skrev:
Något felmeddelande?
Felmeddelandet sa att det var fel på SQL-syntax, jag hade ett komma för mycket
$sql = "CREATE TABLE ".$tabellnamn."
(
id int NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
rubrik varchar(50),
ingress text,
texten longtext,
tid varchar(30),
)";
Tar tillfället i akt och frågar en sak till.
Användare kan ta emot meddelande som lagras i en databas då har jag satt ihop följande function för att räkna ut hur många meddelanden som finns och hur många som är nya. Poängen med koden är också att när man klickar på länken skall den ändra färg
<?
function brevlada($link, $slutlink)
{
$total = "0";
$nya = "0";
$foundmess = mysql_query("SELECT * FROM artistmess WHERE artist ='$artistnamn'");
while($row = mysql_fetch_array($foundmess))
{
$total = $total + "1";
if($row['red'] == null)
{
$nya = $nya + "1";
}
}
echo $link. "Meddelanden:" .$total ;
if($nya > 0)
{
echo " <b>(" .$nya. " nya)</b>" .$slutlink;
}
else
{
echo " (0 nya)" .$slutlink;
}
}
if($act !== mails)
{
$link = "<a href=\"?act=mails\">";
$slutlink = "</a>";
brevlada($link, $slutlink);
}
if($act == mails)
{
$link = "<span class=\"blue\">";
$slutlink = "</span>";
brevlada($link, $slutlink);
}
?>
Den lyckas dock inte räkna rätt :e Det anses alltid vara noll meddelanden i databasen, vad har jag gjort fel?
Det ser ut som om du använder talen som strängar. Byt ut "0" och "1" mot 0 och 1 så ska du se att det fungerar bättre.
Sedan finns det en trevlig funktion som heter mysql_num_rows(); som du kanske vill kika närmare på.