Seite 1 von 1

Linkliste

Verfasst: 11. September 2009, 21:20
von matze93
Hi,
ich habe ein Problem (mal wieder).
Ich habe eine Linkliste erstellt (komplette Codes werden als Download vielleicht freigegeben). Jedoch funktioniert es nicht, dass der Inhalt in die Datenbank übernommen wird. Die Ausgabe aus der Datenbank hat aber geklappt.
Wo ist hier der Fehler?

Code: Alles auswählen

<div align="center">
<?php
$benutzer="xxxxx";
$pwd="xxxxx";
$database="xxxxx";

mysql_connect("localhost","$benutzer","$pwd");//Verbindung Zur Datenbank aufnehemen
mysql_select_db ("$database"); 

if($action=="link"){//Wenn das Formular abgeschickt wurde



  //Neuen Link in die Datenbank eintragen
  $link_SQL_insert="INSERT INTO EasyHP_links (url,name,beschr,autor,mail) VALUES ('$url','$name','$beschr','$autor','$mail')";
  $bool=mysql_query($link_SQL_insert);
  if($bool==1) echo "Link wurde aufgenommen<br>";
  if($bool<>1) echo "Beim Aufnehmen des Links ist ein Fehler aufgetreten<br>"; 
  
  //Mail an Webmaster senden um über neuen Link zu verständigen
$recipient="Hier deine e-Mailadresse";
$subject="Neuer Link wurde in die Linkliste eingetragen";
$header="Von: " . $mail . "n";
$mail_body= "Jemand hat einen neuen Link eingetragen:";
$mail_body.=$url;

mail($recipient,$subject,$mail_body,$header);


mysql_close(); 

?>
<br><br><br>
<a href="links.php">Zurück</a> zur Linkliste!
<?php

}else{

//Keinen Kommentar, einfach ein Formular

?>

<form action=add_link.php method=post>
  <table width="400" border="0" cellspacing="2" cellpadding="2">
    <tr valign="middle">
      <td>Linkname:</td>
      <td>
        <input type="text" name="name" size="25" maxlength="100">
    </td>
  </tr>
    <tr valign="middle">
      <td>Adresse(mit http://):</td>
      <td>
        <input type="text" name="url" size="25" value="http://www" maxlength="100">
    </td>
   <tr valign="middle">
      <td>Beschreibung(höchstens 255 Zeichen):</td>
      <td>
        <textarea name="beschr" rows="5" cols="40"></textarea>
    </td>
  </tr>
    <tr valign="middle">
      <td>Verfasser:</td>
      <td>
      <input type="text" name="autor" size="25" maxlength="30">
    </td>
  </tr>
    <tr valign="middle">
      <td>E-Mail:</td>
      <td>
      <input type="text" name="mail" size="25" maxlength="30">
    </td>
  </tr>
    <tr>
      <td>
        <div align="center">
        <input type="hidden" name="action" value="link">
        <input type="submit" name="Submit" value="Eintragen">
      </div>
    </td>
  </tr>
</table>
</form>

<?php
}
?>
</div> 
Und noch etwas: kann ich die Datenbank-Einstellungen irgendwie includen, sodass ich die Verbindung über EasyHP bekomme? Und kann ich dann z.B.

Code: Alles auswählen

INSERT INTO EasyHP_links
umschreiben zu

Code: Alles auswählen

INSERT INTO ' . LINKS_TABLE .
?

Danke schon mal im Vorraus!

Re: Linkliste

Verfasst: 13. September 2009, 08:30
von EasyHP
Hallo,

die Variable

Code: Alles auswählen

$action
ist nicht definiert. Also kommst du nicht mal in die If-Anweisung hinein, folglich wird nichts ausgeführt. Die Vorlage für eine in EasyHP eingebundene Seite lautet:

Code: Alles auswählen

<?php

/*
* File: NAME_DER_DATEI.php, not admin
* Package EasyHP
* Version: Stable Release - v1.2.3, August 25th, 2009
* Copyright (c) 2007-2009 EasyHP CMS
* License: http://license.easyhp.org EasyHP CMS Public License (ECPL)
*/

define("IN_EASYHP", true);

include "includes/mysql.php";
include "common.php";

/* 
  CODE 
 */

footer(0);

?>
Außerdem mache bitte keine Formulare mit Tabellen. Das ist scheusslich.

LG, Tim

Re: Linkliste

Verfasst: 13. September 2009, 09:42
von matze93
Danke für deine Antwort.
Meine linklist.php sieht jetzt so aus:

Code: Alles auswählen

<?php

define("IN_EasyHP", true);

if (!isset($_SESSION['captcha']) AND $_COOKIE['captcha_set'] != 'TRUE') {
	header("Location: captcha.php?link=linklist.php");
}

include "includes/mysql.php";
include "common.php";
include "includes/website.php";


$link_select_sql="SELECT * FROM . LINKS_TABLE . ORDER BY name";
$link_select_result=mysql_query($link_select_sql);

mysql_close(); 
//Jetzt folgt die Ausgabe
?>
<div align="center" margin-top="10px">
<h2>Linkliste</h2>

<?php
while($links=mysql_fetch_array($link_select_result)){ //Eine while Schleife um alle EInträge auszugeben
?>

Link: <a href="<? echo $links['url']; ?>" target="new"><? echo $links['name']; ?> </a><br>
Von: <a href="mailto:<? echo $links['mail']; ?>"><? echo $links['autor']; ?> </a><p>

<?php
echo $links['beschr']
?>

<br>
<hr width="100%" noshade  size="1">
<p>


<?php
}
?>
 <div align="left"><a href="add_link.php">Link hinzufügen</a></div><? //Hier der Link um neue Links einzutargen *g* ?>
 <div align="right"><a href="add_link.php">Link hinzufügen</a></div> <? //Nochmals ?>

</div> 

<?php

footer(0);

?>
Wie kann ich da die add_link.php einbauen, sodass ich nur ein Code habe?

Code: Alles auswählen

<?php

define("IN_EasyHP", true);

if (!isset($_SESSION['captcha']) AND $_COOKIE['captcha_set'] != 'TRUE') {
	header("Location: captcha.php?link=linklist.php");
}

include "includes/mysql.php";
include "common.php";
include "includes/website.php";

if($action=="link"){//Wenn das Formular abgeschickt wurde

  //Neuen Link in die Datenbank eintragen
  $link_SQL_insert="INSERT INTO . LINKS_TABLE . (url,name,beschr,autor,mail) VALUES ('$url','$name','$beschr','$autor','$mail')";
  $bool=mysql_query($link_SQL_insert);
  if($bool==1) echo "Link wurde aufgenommen<br>";
  if($bool<>1) echo "Beim Aufnehmen des Links ist ein Fehler aufgetreten<br>"; 
  
  //Mail an Webmaster senden um über neuen Link zu verständigen
$recipient="Hier deine e-Mailadresse";
$subject="Neuer Link wurde in die Linkliste eingetragen";
$header="Von: " . $mail . "n";
$mail_body= "Jemand hat einen neuen Link eingetragen:";
$mail_body.=$url;

mail($recipient,$subject,$mail_body,$header);


mysql_close(); 

?>
<br><br><br>
<a href="linklist.php">Zurück</a> zur Linkliste!
<?php

}else{

//Keinen Kommentar, einfach ein Formular

?>

<form action=add_link.php method=post>
Linkname: <input type="text" name="name" size="25" maxlength="100"> <br>
Adresse(mit http://): <input type="text" name="url" size="25" value="http://www" maxlength="100"> <br>
Beschreibung(höchstens 255 Zeichen): <textarea name="beschr" rows="5" cols="40"></textarea> <br>
Verfasser: <input type="text" name="autor" size="25" maxlength="30"> <br>
E-Mail: <input type="text" name="mail" size="25" maxlength="30"> <br>
<input type="hidden" name="action" value="link">
<input type="submit" name="Submit" value="Eintragen">
</form>

<?php
}

footer(0);

?>
Und wie muss die $action aussehen?
Und war das mit Links_Table so richtig?

Re: Linkliste

Verfasst: 13. September 2009, 12:54
von daniel
matze93 hat geschrieben:Wie kann ich da die add_link.php einbauen, sodass ich nur ein Code habe?
versuch es mal damit:

Code: Alles auswählen

if ($action=="new" or $action=="link"){
//code der add_link.php ohne Header und footer ;)
}
dahinter setzen.
und statt

Code: Alles auswählen

<a href="add_link.php">Link hinzufügen</a>
den Link verwenden:

Code: Alles auswählen

<a href="linklist.php?action=new">Link hinzufügen</a>
Und wie muss die $action aussehen?

Code: Alles auswählen

$action = $_GET['action']

Re: Linkliste

Verfasst: 13. September 2009, 17:22
von matze93
ok ich teste das mal.
Danke, jetzt habe ich schon mal mehr gelernt.

Re: Linkliste

Verfasst: 13. September 2009, 17:33
von matze93
Nee, geht leider nicht, mein Code sieht jetzt so aus:

Code: Alles auswählen

<?php

define("IN_EASYHP", true);

if (!isset($_SESSION['captcha']) AND $_COOKIE['captcha_set'] != 'TRUE') {
   header("Location: captcha.php?link=linklist.php");
}

include "includes/mysql.php";
include "common.php";
include "includes/website.php";

$action = $_GET['action']

$link_select_sql="SELECT * FROM . LINKS_TABLE . ORDER BY name";
$link_select_result=mysql_query($link_select_sql);

//Jetzt folgt die Ausgabe
?>
<div align="center">
<h2>Linkliste</h2>

<?php
while($links=mysql_fetch_array($link_select_result)){ //Eine while Schleife um alle EInträge auszugeben
?>

Link: <a href="<? echo $links['url']; ?>" target="new"><? echo $links['name']; ?> </a><br>
Von: <a href="mailto:<? echo $links['mail']; ?>"><? echo $links['autor']; ?> </a><p>

<?php
echo $links['beschr']
?>

<br>
<hr width="100%" noshade  size="1">
<p>


<?php
}
?>
<div align="left"><a href="linklist.php?action=new">Link hinzufügen</a></div><? //Hier der Link um neue Links einzutargen *g* ?>
<div align="right"><a href="linklist.php?action=new">Link hinzufügen</a></div> <? //Nochmals ?>

</div>

<?php

if ($action=="new" or $action=="link"){
  //Neuen Link in die Datenbank eintragen
  $link_SQL_insert="INSERT INTO . LINKS_TABLE . (url,name,beschr,autor,mail) VALUES ('$url','$name','$beschr','$autor','$mail')";
  $bool=mysql_query($link_SQL_insert);
  if($bool==1) echo "Link wurde aufgenommen<br>";
  if($bool<>1) echo "Beim Aufnehmen des Links ist ein Fehler aufgetreten<br>";
 
  //Mail an Webmaster senden um über neuen Link zu verständigen
$recipient="Hier deine e-Mailadresse";
$subject="Neuer Link wurde in die Linkliste eingetragen";
$header="Von: " . $mail . "n";
$mail_body= "Jemand hat einen neuen Link eingetragen:";
$mail_body.=$url;

mail($recipient,$subject,$mail_body,$header);


mysql_close();

?>
<br><br>
<a href="linklist.php">Zurück</a> zur Linkliste!
<?php

}else{

//Keinen Kommentar, einfach ein Formular

?>

<form action=linklist.php?action=new method=post>
Linkname: <input type="text" name="name" size="25" maxlength="100"> <br>
Adresse(mit http://): <input type="text" name="url" size="25" value="http://www" maxlength="100"> <br>
Beschreibung(höchstens 255 Zeichen): <textarea name="beschr" rows="5" cols="40"></textarea> <br>
Verfasser: <input type="text" name="autor" size="25" maxlength="30"> <br>
E-Mail: <input type="text" name="mail" size="25" maxlength="30"> <br>
<input type="hidden" name="action" value="link">
<input type="submit" name="Submit" value="Eintragen">
</form>

<?php
}

footer(0);

?>
Habe ich etwas falsch zusammengebaut? Jetzt wird nämlich nichts angezeigt. Vorher habe ich ja wenigstens die Anzeige gesehen, aber der Post hat nicht geklappt.

Re: Linkliste

Verfasst: 13. September 2009, 17:54
von daniel

Code: Alles auswählen

$link_select_sql="SELECT * FROM . LINKS_TABLE . ORDER BY name";
:?: :?: :?:
Das soll funktioniert haben? Da wird der mysql-error() garantiert was zurückgeben.
außer bei dir gibt es eine Tabelle die . LINKS_TABLE . heißt. (mit Punkten)

bevor du eine Konstante einsetzten kannst, musst du erstmal den String beenden:

Code: Alles auswählen

$link_select_sql="SELECT * FROM ". LINKS_TABLE ." ORDER BY name";