SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 17.05.2006, 21:13:04
MasterPeace MasterPeace ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 25
Problem mit MySQL

Hallo,

ich möchte über ein Formular etwas in eine MySQL Datenbank schreiben.
Funktioniert auch alles sehr gut, aber aus Unerklärlichen gründen wird eine Lehre Zeile mit eingefügt, was das ganze vorhaben ziemlich Dämlich aussen läßt!

Hier der Code

PHP-Code:

//Die Verbindung zur Datenbank.
// Die Sterne sind nur als Platzhalter, ihr müsst das ja nicht wissen ;-)
function connect_system() {
$Verbindung mysql_connect("***","***","***");
if(!
$Verbindung) {
die(
"Host, Benutzername oder Kennwort Falsch!");
}

$Verbindung mysql_select_db("***");
if(!
$Verbindung) {
die(
"Konnte keine Verbindung zur Datenbank herstellen");
}

PHP-Code:
//Das Formular in dem der Text geschrieben wird.
function News_schreiben() {
$Name $_SESSION[Username];
$MySQL "SELECT * FROM `***` WHERE Name = '$Name' LIMIT 0, 1";
$Query mysql_query($MySQL);
while (
$row = @mysql_fetch_assoc($Query)) {
if(
$_SESSION[Admin] != "" and $_SESSION[Username] != "" and $_SESSION[Passwort] != "" and $_SESSION[Username] == "$row[Name]" and $_SESSION[Passwort] == "$row[Passwort]" and $_SESSION[Admin] == "$row[Admin]") {
echo 
"\n <h2>News schreiben</h2>";
echo 
"\n <div class=\"story\">";
echo 
"\n <form method=\"post\" action=\"$PHP_SELF?Site=Admin_News_speichern&Sessionname=$s_name&PHPSESSID=" session_id() . "\">";
echo 
"\n <center>";
echo 
"\n <table border=\"0\">";
echo 
"\n <tr>";
echo 
"\n <td bgcolor=\"#cccccc\"> Titel: </td><td bgcolor=\"#cccccc\"><input type=\"text\" name=\"Titel\" style=\"color:#FFFF00;\"></td>";
echo 
"\n </tr>";
echo 
"\n <tr>";
echo 
"\n <td bgcolor=\"#cccccc\"> Artikel: </td><td bgcolor=\"#cccccc\"><textarea name=\"Artikel\" cols=\"50\" rows=\"5\" style=\"background-color:#333333;color:#FFFF00;\"></textarea></td>";
echo 
"\n </tr>";
echo 
"\n <tr>";
echo 
"\n <td bgcolor=\"#cccccc\"></td><td bgcolor=\"#cccccc\"><input type=\"submit\" name=\"Speichern\" value=\"Speichern\" style=\"color:#FFFF00;\"></td>";
echo 
"\n </tr>";
echo 
"\n </table>";
echo 
"\n </div>";
}
}

PHP-Code:
//Function zum Speichern
function News_speichern() {
$Name $_SESSION[Username];
$MySQL "SELECT * FROM `***` WHERE Name = '$Name' LIMIT 0, 1";
$Query mysql_query($MySQL);
$Zahl "1";
while (
$row = @mysql_fetch_assoc($Query)) {
if(
$_SESSION[Admin] != "" and $_SESSION[Username] != "" and $_SESSION[Passwort] != "" and $_SESSION[Username] == "$row[Name]" and $_SESSION[Passwort] == "$row[Passwort]" and $_SESSION[Admin] == "$row[Admin]") {
$Datum date("d.m.Y");
$Titel $_POST[Titel];
$Artikel nl2br($_POST[Artikel]);
if(
$Zahl "1") {
$MySQL "INSERT INTO `news` ( `ID` , `Titel` , `Datum` , `Artikel`) VALUES ('','$Titel','$Datum','$Artikel');";
$Query mysql_query($MySQL);
$Zahl++;
}
echo 
"<h2> Artikel gespeichert </h2>";
echo 
"<div class=\"story\">";
echo 
"Artikel wurde gespeichert!";
echo 
"<ul>";
echo 
"<li>$Titel ( $Datum )</li>";
echo 
"<li>$Artikel</li>";
echo 
"<ul>";
echo 
"</div>";
}
}



Das ist das Script. Wie euch sicher aufgefallen ist, überprüfe ich alles mit einer Session, damit die Funktion ohne nicht aufgerufen wird. Das Script hat den selben Fehler in Apache sowie auf dem Server. Aber ich weis nicht warum er immer eine Lehre Zeile ausliest. Aus frust habe ich schon eine If-Bedingungen reingebaut, um das zu unterbinden. Aber der Fehler kommt immer noch!

Bei Fragen zum Script einfach Posten!
Mit Zitat antworten
  #2  
Alt 17.05.2006, 22:15:52
Benutzerbild von Serp
Serp Serp ist offline
Member
 
Registriert seit: Mar 2005
Alter: 39
Beiträge: 579
AW: Problem mit MySQL

Keine Frage zum Script, aber eine zum Fehler: Was für eine Leerzeile?

Wenn einfach nur eine zusätzliche Leerzeile drinsteht, die du nicht haben willst, empfehle ich beim Eintragen den Aufruf der Funktion trim().

Ansonsten hab ich den Fehler nicht verstanden.
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')

Für 100% sauberen Code.
Mit Zitat antworten
  #3  
Alt 17.05.2006, 22:17:45
MasterPeace MasterPeace ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 25
Zusatz

Noch etwas komisches an dem Fehler.
Er passiert nur ab und zu!

0 Test 17.05.2006 Test
0 Test1 17.05.2006
0 Test2 17.05.2006 Test2
0 17.05.2006


Und die ID in der Tabelle ist immer 0. Die Struktur von ID ist:

Feld|Typ|Attribute|Null|Standard|Extra
ID|int(10)|UNSIGNED|Nein||auto_increment
Mit Zitat antworten
  #4  
Alt 17.05.2006, 22:18:32
MasterPeace MasterPeace ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 25
AW: Problem mit MySQL

Was ist die funktion Trim?
Mit Zitat antworten
  #5  
Alt 17.05.2006, 22:28:56
Schneidoa Schneidoa ist offline
Anfänger
 
Registriert seit: Mar 2006
Beiträge: 112
Schneidoa eine Nachricht über ICQ schicken
AW: Problem mit MySQL

Zitat:
Zitat von MasterPeace
Was ist die funktion Trim?
Hallo!

Mit trim() kann man innerhalb eines Strings (str) überflüssige Zeichen am Anfang und Ende entfernen lassen.

Überflüssige Zeichen sind:

• \n
• \r
• \t
• \v
• {AusgabeReferenz}
• das Leerzeichen

oder versuchs mit dem

$str = rtrim($zeichen)
Entfernt Leerzeichen und Zeilenumbrüche am Ende eines Strings.

Geändert von Schneidoa (17.05.2006 um 22:30:48 Uhr)
Mit Zitat antworten
  #6  
Alt 18.05.2006, 13:17:06
mischka11 mischka11 ist offline
Anfänger
 
Registriert seit: May 2003
Beiträge: 44
AW: Zusatz

Hi,

mir sind eingie Merkwürdigkeiten in Deinem Script aufgefallen:

1) ID INT(10) (meinst Du Du erreichst mal über 10 Milllionen Einträge? ;), ID (5) reicht meist aus, sind immerhin 99999 Einträge), aber das nur nebenbei

2)
Code:
$MySQL = "INSERT INTO `news` ( `ID` , `Titel` , `Datum` , `Artikel`) VALUES ('','$Titel','$Datum','$Artikel');";
die Spalte 'ID' brauchst Du beim 'Insert' nicht mit benennen, da diese ja ein Autoincrement ist und deshalb durch MySQL selbst gesetzt wird, hinter der der letzten Klammer brauchst Du kein Extra Semikolon setzen, nach den Anführungszeichen reicht

3) Was erreichst Du mit der Variable Zahl?

4) Warum gibst Du das Formular mir "while" aus? einfach:
PHP-Code:
...
if(
$User  == "Admin" && $UserName == "Ich"){
print 
'
 <form name="form" action="?InsertEntry">
  <table>
   ...Textfelder etc...
  </table>
 </form>
'
;
}
else{
 print 
'Sorry, bitte erst anmelden!';
}
... 
Für die Leerzeile ist trim() das beste, oder Du lässt es ohne der Funktion nl2br() in die DB schreiben, Vorteil zum Editieren liest Du den Text einfach in eine Textbox und hast dadurch nicht die <br /> Tags im Text. Zum Auslesen des Textes aus der DBzur Ausgabe auf Deiner HP, einfach die "\n" Zeilenumbrüche in "<br />" umwandeln z. B.
Code:
str_replace("\n","<br>",$TextAusDB);
Mit Zitat antworten
  #7  
Alt 18.05.2006, 18:18:12
MasterPeace MasterPeace ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 25
AW: Problem mit MySQL

1. Ich glaube das ich niemals mehr als 1 Millionen für die Geplante Homepage bekomme, aber danke für den Hinweis.
2. Okay, ich verändere den MySQL Code, vll. hebt es das Problem mit der ID
3. Ich machen eine While-Schleife um das Passwort nochmal zu überprüfen.
Dieses News schreiben ist für einen Internen bereich Gedacht und um wierklich sicher zu sein Überprüfe ich regelmäßig das Passwort, den Benutzername und die Rechte, und das muss ich aus einer datenbank laden.
4. Das mit dem Trim ändert auch nichts und str_replace brauche ich auch nicht.
Ich habe mir den Fehler nochmal genau angesehen, es scheint als würde das Script zweimal gestartet werden. Aber es ist als würde die Seite nochmal geöffnet werden, was warscheinlich deswegen passiert, weil mir Lycos <-- Dort liegt der Server, Werbung auf die Seite knallt. Ich versuche es mal mit einer If bedingung die prüft ob die Posts nicht lehr sind, vll. hilft das was.
Mit Zitat antworten
  #8  
Alt 18.05.2006, 18:25:52
MasterPeace MasterPeace ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 25
AW: Problem mit MySQL

Hier meine If- Bedingungen:

PHP-Code:
if($_POST[Titel] != "" and $_POST[Artikel] != "") {
$Datum date("d.m.Y");
$Titel rtrim($_POST[Titel]);
$Artikel rtrim($_POST[Artikel]);
$Artikel nl2br($_POST[Artikel]);
$MySQL "INSERT INTO `news` ( `ID` , `Titel` , `Datum` , `Artikel`) VALUES ('','$Titel','$Datum','$Artikel')";
$Query mysql_query($MySQL);

Ich werde es mal testen um zu sehen ob alles funktioniert, euer beispiele
Mit Zitat antworten
  #9  
Alt 18.05.2006, 19:07:56
MasterPeace MasterPeace ist offline
Anfänger
 
Registriert seit: Jan 2006
Beiträge: 25
AW: Problem mit MySQL

Okay, es funktioniert. Ich vermute es lag daran das durch die Werbung die Seite nochmal geladen wurde. Auf jeden Fall funktioniert jetz alles. Damit ihr die Änderung sehen könnt, hier:
PHP-Code:
function News_speichern() {
$Name $_SESSION[Username];
$MySQL "SELECT * FROM `mitglieder` WHERE Name = '$Name' LIMIT 0, 1";
$Query mysql_query($MySQL);
while (
$row = @mysql_fetch_assoc($Query)) {
if(
$_SESSION[Admin] != "" and $_SESSION[Username] != "" and $_SESSION[Passwort] != "" and $_SESSION[Username] == "$row[Name]" and $_SESSION[Passwort] == "$row[Passwort]" and $_SESSION[Admin] == "$row[Admin]") {
if(
$_POST[Titel] != "" and $_POST[Artikel] != "") {
$Datum date("d.m.Y");
$Titel $_POST[Titel];
$Artikel htmlspecialchars($_POST[Artikel]);
$Artikel nl2br($Artikel);
$MySQL "INSERT INTO `news` (`Titel` , `Datum` , `Artikel`) VALUES ('$Titel','$Datum','$Artikel')";
$Query mysql_query($MySQL);
}
echo 
"<h2> Artikel gespeichert </h2>";
echo 
"<div class=\"story\">";
echo 
"Artikel wurde gespeichert!";
echo 
"<ul>";
echo 
"<li>$Titel ( $Datum )</li>";
echo 
"<li>$Artikel</li>";
echo 
"<ul>";
echo 
"</div>";
}
}


Geändert von MasterPeace (18.05.2006 um 19:08:15 Uhr)
Mit Zitat antworten
  #10  
Alt 19.05.2006, 07:48:40
KTB KTB ist offline
Member
 
Registriert seit: Mar 2006
Alter: 38
Beiträge: 599
AW: Zusatz

Zitat:
Zitat von mischka11
... ID INT(10) (meinst Du Du erreichst mal über 10 Milllionen Einträge? ;), ID (5) reicht meist aus, sind immerhin 99999 Einträge)...
Ich benutze standardmäßig INT(100) XD Einige meiner Projekte sind so riesig, da weiß man nie :D
__________________
In der Ruhe liegt die Kraft!
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit mySQL nach Update auf Version 5.0.18 gl0be MySQLi/PDO/(MySQL) 8 07.02.2006 01:17:49
Mysql - Formular Problem Till PHP Grundlagen 2 25.01.2006 19:43:21
Ausgaben von MySQl - Problem wallis PHP Grundlagen 6 01.07.2005 10:30:27
MySQL Connect Problem DanielEXQ2 PHP Grundlagen 8 14.05.2005 02:07:55
mysql und php problem schmidt PHP für Fortgeschrittene und Experten 9 31.10.2003 18:05:13


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:39:29 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt