php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-03-2008, 10:04
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard Existensprüfung schlägt fehl warum?

Hallo Forum und zwar habe ich ein Problem was mir bald graue Haare wachsen lässt!

Und zwar schreibe ich ein Gästebuchscript wo der Nutzer die Gelegenheit hat eigene Smiliesanzulegen,soweit klappt alles gut nur eines haut überhaupt nicht hin nämlich die Prüfung ob ein Smilie oder ein dazugehöriger Code schon vorhanden ist.

Das Problem hierbei ist das er die Fehlermeldung die im echo steht immer ausgibt obwohl das Smilie wie der Code gar nicht vorhanden sind.

Hier mal der Code mit Prüfung und einsenden!

PHP-Code:
<?php
if(isset($_POST['sendsmile']))
{    
    
//Prüfung ob Smiliecode in Ordnng ist
    
$code $_POST['code'];
    if(!
eregi("^[:][a-z0-9]{3,}[:]$mi",$code))
    {
        require(
'kopf.php');
        require(
'admin_kopf.php');
        echo
"der code ist falsch";
        require(
'fuss.php');
        exit();
    }
    
//Auslesen aus der Datenbank zur Kontrolle
    
$sqlbefehl ="Select * From $tab_smilie";
    
$ergebnis mysql_query($sqlbefehl)or die(mysql_error());
    while(
$row mysql_fetch_array($ergebnis)){
            
$smilie $row['image'];
            
$smiliecode $row['code'];
    }
    
//Kontrolle nach existirenden Smilie
    
if($smilie)
    {
        echo
"Das Smilie ist schon vorhanden!";
        exit();
    }
    
//Kontorlle nach existierenden Smiliecode
    
elseif($smiliecode)
    {
        echo
"Der Smiliecode existiert schon";
        exit();
    }
    
//Falls beides nicht vorhanden Smilie in Datenbank eintragen
    
else
    { 
    
$image=getimagesize($_FILES[img][tmp_name]);
    {
        if(!
$image[2]==|| !$image[2]==|| !$image[2]==3)
        {
            require(
'kopf.php');
            require(
'admin_kopf.php');
            echo
"Das Format ist falsch!<br>
            <a href=\"smile_upload.php\">Zurück</a>
            "
;
            require(
'fuss.php');
            exit();
        }
        else
        {
            
copy($_FILES[img][tmp_name],"smilies/".$_FILES[img][name]);
            
$bild="".$_FILES[img][name]."";
            
$sqlbefehl ="Insert Into $tab_smilie
                        (code,image)
                VALUES    ('$code','$bild')
                        "
;
            
$result mysql_query($sqlbefehl)or die(mysql_error());
            
header("Location: smile_list.php");
        }
    }
    }
//ende else smilie und code kontrolle
}//ende post
?>
Wäre nett wenn mir jemand sagen kann wo hier der Fehler liegt.

Mfg der Litter
Mit Zitat antworten
  #2 (permalink)  
Alt 14-03-2008, 10:14
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
while($row mysql_fetch_array($ergebnis)){
  
$smilie $row['image'];
  
$smiliecode $row['code'];

hier überschreibst du ja immer wieder die variablen. probier mal
PHP-Code:
while($row mysql_fetch_array($ergebnis)){
  
$smilie[] = $row['image'];
  
$smiliecode[] = $row['code'];
}
print_r($smilie); 
gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 14-03-2008, 10:15
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Das Problem hierbei ist das er die Fehlermeldung die im echo steht immer ausgibt obwohl das Smilie wie der Code gar nicht vorhanden sind.
POST Feld nicht gesetzt --> eregi() scheitert --> Fehlermeldung kommt --> works as designed
Prüfe zusätzlich, dass der Code (POST) gesetzt ist und nicht leer ist
PHP-Code:
if(isset($_POST['code']) && !empty($_POST['code']) && !eregi("^[:][a-z0-9]{3,}[:]$mi",$code)){ 
könnte helfen

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #4 (permalink)  
Alt 14-03-2008, 10:18
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Array ( [0] => top.gif [1] => bottom.gif [2] => daumen.gif [3] => winke.gif [4] => klatsch.gif [5] => zwink.gif [6] => stiel.gif [7] => macke.gif [8] => frage.gif [9] => traurig3.gif [10] => zorn.gif [11] => fies2.gif [12] => cool.gif ) Der Smiliecode existiert schon

Jetzt kommt dieses Ergebnis und er gibt wieder die Fehlermeldung aus obwohl der Code wie das Smilie gar nicht existieren
Mit Zitat antworten
  #5 (permalink)  
Alt 14-03-2008, 10:28
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

$smilie und $smiliecode werden immer existieren solange deine Tabelle nicht ganz leer ist. Du musst deine SQL Abfrage doch noch irgendwie einschränken, denn du suchst doch in der Tabelle ob ein bestimmter Code schon exisitert. Also musst du doch eine WHERE-Klausel einführen die z.B. nach dem Code sucht.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #6 (permalink)  
Alt 14-03-2008, 10:38
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Habe das jetzt so geändert aber bekomme nun eine Sql Fehlermeldung. Ich stehe grad komplett auf den Schlauch oder habe das berühmte Brett vorm kopf!

Bekomme diese Fehlermeldung!

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 'and image=' at line 1

PHP-Code:
<?php
$sqlbefehl 
="Select code,image From $tab_smilie where code=".$smiliecode." and image=".$smilie."";
    
$ergebnis mysql_query($sqlbefehl)or die(mysql_error());
    while(
$row mysql_fetch_array($ergebnis)){
            
$smiliecode[] = $row['code'];
            
$smilie[] = $row['image'];
    }
    
print_r($smilie);
    
//Kontorlle nach existierenden Smiliecode
    
if($smiliecode)
    {
        echo
"Der Smiliecode existiert schon";
        exit();
    }
    
//Kontrolle nach existirenden Smilie
    
elseif($smilie)
    {
        echo
"Das Smilie ist schon vorhanden!";
        exit();
    }
?>
Mit Zitat antworten
  #7 (permalink)  
Alt 14-03-2008, 10:46
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$sqlbefehl ="Select code,image From $tab_smilie where code='".$smiliecode."' and image='".$smilie."'"
So in etwa ?

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #8 (permalink)  
Alt 14-03-2008, 10:47
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

zeichenkettenverknüpfung!
PHP-Code:
$sqlbefehl ='select code,image from '.$tab_smilie.' where code=\''.$smiliecode.'\' and image=\''.$smilie.'\'';
$sqlbefehl ='select code,image from '.$tab_smilie.' where code='."'".$smiliecode."'".' and image='."'".$smilie."'"
gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #9 (permalink)  
Alt 14-03-2008, 10:58
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So sieht es jetzt aus und er läd das Smilie jetzt hoch wenn nichts gefunden wurde,jedoch läd er es auch hoch wenn Code wie Smilie schon vorhanden sind!

PHP-Code:
<?php
//Auslesen aus der Datenbank zur Kontrolle
    
$sqlbefehl ='select code,image from '.$tab_smilie.' where code='."'".$smiliecode."'".
and image='
."'".$smilie."'";
    
$ergebnis mysql_query($sqlbefehl)or die(mysql_error());
    while(
$row mysql_fetch_array($ergebnis)){
            
$smiliecode[] = $row['code'];
            
$smilie[] = $row['image'];
    }
    
print_r($smilie);
    
//Kontorlle nach existierenden Smiliecode
    
if($smiliecode)
    {
        echo
"Der Smiliecode existiert schon";
        exit();
    }
    
//Kontrolle nach existirenden Smilie
    
elseif($smilie)
    {
        echo
"Das Smilie ist schon vorhanden!";
        exit();
    }
?>
Mit Zitat antworten
  #10 (permalink)  
Alt 14-03-2008, 11:21
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
So sieht es jetzt aus und er läd das Smilie jetzt hoch wenn nichts gefunden wurde,jedoch läd er es auch hoch wenn Code wie Smilie schon vorhanden sind!
Der Client muss doch die Daten erst hochladen, damit du überhaupt feststellen kannst ob du den Smilie bereits hast. Danach, falls der Smilie bereits vorhanden ist, bricht doch dein Script einfach ab. Oder wird der Smilie trotzdem noch in die DB eingetragen, obwohl der Smilie bei dir bereits vorhanden ist?
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #11 (permalink)  
Alt 14-03-2008, 11:30
litterauspirna
 Registrierter Benutzer
Links : Onlinestatus : litterauspirna ist offline
Registriert seit: Nov 2007
Beiträge: 364
litterauspirna ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also muss ich die Prüfung nach den Insert Into Anweisung schreiben das er es hochladen kann und erst dann alarm schlägt wenn das Smilie oder der Code schon existieren?
Mit Zitat antworten
  #12 (permalink)  
Alt 14-03-2008, 11:42
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wieso machst du eigentlich eine Prüfung auf den Dateinamen? Nur weil zwei Dateien gleich heissen, haben sie noch lange nicht den gleichen Inhalt. Speichere doch von jedem Smilie in einer zusätzlichen Spalte den md5-Hash Wert des Bildes. Nach dem Upload machst du den md5 des Uploads und suchst danach in der DB. Wenn er nicht vorhanden ist, dann kannst du prüfen ob du den Namen des Bildes resp den Code bereits in der DB hast und falls vorhanden musst du diese Wert anpassen, damit diese eindeutig sind.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
Antwort

Lesezeichen


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

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:38 Uhr.