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 Bewertung: Bewertung: 2 Stimmen, 3,00 durchschnittlich.
  #1 (permalink)  
Alt 15-09-2013, 18:00
iSpectra
 Registrierter Benutzer
Links : Onlinestatus : iSpectra ist offline
Registriert seit: Sep 2013
Beiträge: 5
iSpectra befindet sich auf einem aufstrebenden Ast
Lightbulb Regisitrierungsform-Problem in $registerquery

Hi,

nach langem Suchen und tüfteln bin ich selbst nicht auf den Fehler gekommen, der sich in den Code meiner Regisitrierungsform für Daten eingeschlichen hat.

Ich bleibe immer dei dem zweitletzten else hängen, also bei dem, welches
Code:
echo "<h1>Error</h1>";
        	echo "<p>Ihr Rezepteintrag schlug fehl. Bitte versuchen Sie es erneut.</p>";
ausspuckt.

Der Fehler liegt, soweit ich das erkenne, an den 4 Variablen. Entweder den von mir definierten, oder an denen von der Datenbank. Und alles, obwohl diese Variablen in der Datenkabnk und PHP gleich heißen. Der Fehler loegt höchstwahrscheinlich bei der Definition von $registerquery.
Vielleicht, aber nur vielleicht, liegt es auch am <select> tag, der eine Dropdown-Liste ermöglicht.

Das ist die registry.php:
Code:
<?php include "base.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  

<title>Rezepteingabe</title> <!-- Thank you NetTuts for this super smooth tutorial! -->

</head>  
<body>  
<div id="main">
<?php
	
	if(!empty($_POST['Name']))
{
	$Name = mysql_real_escape_string($_POST['Name']);
    $Kategorie = md5(mysql_real_escape_string($_POST['Kategorie']));
    $Kurzbeschreibung = mysql_real_escape_string($_POST['Kurzbeschreibung']);
	$Beschreibung = mysql_real_escape_string($_POST['Beschreibung']);
    
	 $checkusername = mysql_query("SELECT * FROM rezeptbeschreibung WHERE Name = '".$Name."'");
     
     if(mysql_num_rows($checkusername) == 1)
     {
     	echo "<h1>Error</h1>";
        echo "<p>Dieser Rezeptname wird bereits verwendet. Duplikate sind noch nicht möglich.</p>";
		
     }
     else
     {
     	$registerquery = mysql_query("INSERT INTO rezeptbeschreibung (Name, Kategorie, Kurzbeschreibung, Beschreibung) VALUES('".$Name."', '".$Kategorie."', '".$Kurzbeschreibung."', '".$Beschreibung."')");
        
		if($registerquery)
        {
        	echo "<h1>Success</h1>";
        	echo "<p>Ihr Zezept wurde erfolgreich erstellt und gespeichert.</p>";
        }
        else
        {
     		echo "<h1>Error</h1>";
        	echo "<p>Ihr Rezepteintrag schlug fehl. Bitte versuchen Sie es erneut.</p>";    
        }    	
     }
}
else
{

	?>
    
   <h1>Register</h1>
    
   <p>Bitte geben Sie folgende Daten ein, um mit der Eingabe Ihres Rezepts zu beginnen. Schritt 1/2</p>
    
	<form method="post" action="register.php" name="registerform" id="registerform">
	<fieldset>
		 <label for="Name">Name:</label><input type="text" name="Name" id="Name" /><br />
         <label for="Kategorie">Kategorie:</label><select type="text" name="Kategorie" id="Kategorie" >
         <option value="volvo">Volvo</option>
  		 <option value="saab">Saab</option>
  		 <option value="mercedes">Mercedes</option>
  		 <option value="audi">Audi</option>
         </select><br/>
       
		<label for="Kurzbeschreibung">Kurzbeschreibung:</label><input type="text" name="Kurzbeschreibung" id="Kurzbeschreibung" /><br />
       
        
        
        <label for="Beschreibung">Beschreibung:</label><input type="text" name="Beschreibung" id="Beschreibung" /><br />
		<input type="submit" name="register" id="register" value="Register" />
	</fieldset>
	</form>
    
   <?php
}
?> 

</div>
</body>
</html>
Und das die zugehörige Datenbank in phpMyAdmin:
siehe Anhang

Falls Ihr die kleine base.php sehen möchtet, meldet euch einfach. Dort habe ich aber nur grundlegendes wie den Zugang zur DB selbst definiert. Diese läuft auch einwandfrei, da ich sie bereits mit anderen PHPs verwende.

Vielen vielen Dank schon im Vorraus an jeden der versucht zu helfen!

Gruß,
iSpectra
Miniaturansicht angehängter Grafiken
Regisitrierungsform-Problem in $registerquery-regdb.png  
Mit Zitat antworten
  #2 (permalink)  
Alt 17-09-2013, 17:19
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Erstmal: Ich finde PHP-Quellcode mit eingestreutem HTML schrecklich.

Dann solltest du dich mit den Grundlagen der Fehlersignalisierung (wenigstens error_reporting(E_ALL) und Benutzung von var_dump()) und -Lokalisierung vertraut machen.

Und schließlich sind die mysql_...-Funktionen nicht mehr up-to-date. Benutze PDO oder die objekt-orientierte Abteilung der mysqli-Erweiterung. Dann kannst du auch gleich das Behandeln jedes POST-Feldes mit mysql_real_escape_string() automatisieren lassen.

Zitat:
PHP-Code:
// ...
$registerquery mysql_query("INSERT INTO rezeptbeschreibung (Name, Kategorie, Kurzbeschreibung, Beschreibung) VALUES('".$Name."', '".$Kategorie."', '".$Kurzbeschreibung."', '".$Beschreibung."')");
        
        if(
$registerquery)
        {
            echo 
"<h1>Success</h1>";
            echo 
"<p>Ihr Zezept wurde erfolgreich erstellt und gespeichert.</p>";
        }
        else
        {
             echo 
"<h1>Error</h1>";
            echo 
"<p>Ihr Rezepteintrag schlug fehl. Bitte versuchen Sie es erneut.</p>";
// ... 
Da mysql_query() bei INSERT-Statements nur einen booleschen Wert zurückgibt, musst du erstmal herausbekommen, warum dein $registerquery den Wert FALSE hat. Dafür gibts die mysql_error()-Funktion. Erst wenn die dir sicher sagt, dass dein SQL keinen Syntax-Fehler hat und der entsprechende Datensatz nicht schon existiert oder ein anderes Hindernis das Einfügen eines neuen besteht, kannst du dich auf die weitere Suche nach einem Fehler machen, der anderswo in deinem Script steckt.

... und eventuell solltest du beim INSERT eine 'UserID' angeben. Die Übersichtsgrafik deiner Datenbankverwaltungssoftware sagt nicht, dass die Datenbank dafür automatisch einen Wert vergibt (was auch unsinnig wäre).

Geändert von fireweasel (17-09-2013 um 17:25 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 23-09-2013, 18:01
iSpectra
 Registrierter Benutzer
Links : Onlinestatus : iSpectra ist offline
Registriert seit: Sep 2013
Beiträge: 5
iSpectra befindet sich auf einem aufstrebenden Ast
Standard

@fireweasel; Herzlichen Dank für deine Antwort!

Ich hab das Problem nun gelöst. Es lag tatsächlich an der UserID. Dabei habe ich ganz vergessen, den Code dafür einzuarbeiten, da diese schließlich, abhänhig vom eingeloggten Benutzer, automatisch eingetragen werden soll. RezeptID ist dabei der Primärschlüssel der auf AI gestellt ist.

Weil also für UserID kein Wert eingetragen wurde, spuckte die query FALSE aus.
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
registerquery, variablen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[HTML] Wahrscheinlich einfaches Problem, aber ein Problem mit <TABLE> whitelove05 HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 4 18-12-2003 16:11

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 23:05 Uhr.