php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.08.2010, 18:50  
Neuer Benutzer
 
Registriert seit: 24.08.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
Boxer1008 befindet sich auf einem aufstrebenden Ast
Standard mysql abfrage

Habe einen script, in dem man in ein formular eine nummer eingibt, die ein bestimmtest muster haben muss. dann wird die nummer zusammen mit dem namen (die wird später aus einer session genommen) in einer mysql (später postgresql) tabelle gespeichert.
der script überprüft auch, ob die nummer oder der name schon existiert, allerdings klappt das noch nicht so ganz
Jeder name darf nur eine nummer haben, und jede nummer darf in der tabelle nur einmal exisiteren.
das klappt auch, aber falls der name oder die nummer schon exisitert, gibt er das gleiche aus (Nummer oder Name exisitert schon). Nun soll er aber bei jedem etwas anderes ausgeben.
z.B. der name existiert schon, dann soll er "Du hast schon eine Nummer." ausgeben, und wenn die Nummer schon exisitiert "Die Nummer ist schon vergeben.".
Wie krieg ich das denn hin?
Hier mal der script:
PHP-Code:
<html>
<body background="backgroundblue.png">
<br>
<h1><font color="#FFFFFF">Nummer eintragen</font></h1>
<form action="rechner1.php" method="post">  
<font color="#FFFFFF"><b>Die Nummer</b></font><br>  
<input type="Text" name="code" size="20">
<br>
<font color="#FFFFFF">
<b>
</html>

<?php
$name 
'Admin';
$code trim($_POST["code"]);
if (
$code=="")
{
echo 
"Bitte gib eine Nummmer ein.";
}
else 
{
if (
preg_match("/^[0-9]{10}_[A-Z]{1}-[0-9]{5}$/"$code)) {
  
$verbindung mysql_connect ("localhost",
    
"Boxer1008""")
  or die (
"keine Verbindung möglich.
 Benutzername oder Passwort sind falsch"
);

  
mysql_select_db("rechner")
  or die (
"Die Datenbank existiert nicht.");

    
$result mysql_fetch_assoc(mysql_query("SELECT COUNT(nummer) as Anzahl FROM user WHERE nummer = '"  $code .  "' OR name = '" $name "'"));
        if(
$result['Anzahl'] == 0) {
            
//ist nun die Anzahl == 0, dann ist die nummer nicht vorhanden...
        
$eintrag "
        INSERT INTO
            user
            (nummer, name)
        VALUES
            ('$code', '$name')"
;

      
$eintragen mysql_query($eintrag);
      if (
$eintragen == true) {
        echo 
"Eintrag war erfolgreich";
      } else {
        echo 
"Fehler beim Speichern";
      }
    } else {
        echo 
"Die Nummer existiert bereits";
    }
}
else
echo 
"Das ist keine gültige Nummer.";
}
?>

<html>
</b>
</font>
</html>
Bin für jede Hilfe dankbar

Geändert von Boxer1008 (26.08.2010 um 19:41 Uhr).
Boxer1008 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.08.2010, 19:29  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Du kannst die Felder in der Datenbank auf UNIQUE setzen, dann sorgt die Datenbank dafür, das keine Doubletten auftreten.. allerdings musst du dann auch die Fehlerbehandlung entsprechend programmieren (beim Versuch, eine bereits vorhandene Nummer einzufügen, erzeugt die Datenbank einen Fehler, den du abfangen und behandeln musst)

edit: sorry, das war ja bloß ein Vorschlag, wie man es anders machen kann.
Zitat:
der script überprüft auch, ob die nummer oder der name schon existiert, allerdings klappt das noch nicht so ganz
Bitte deutlicher: WAS klappt nicht so ganz?
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline  
Alt 26.08.2010, 19:40  
Neuer Benutzer
 
Registriert seit: 24.08.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
Boxer1008 befindet sich auf einem aufstrebenden Ast
Standard

Ich krieg das nur soweithin, wie es dort steht.
Nun möchte ich aber folgendes haben, und krieg es nur nicht hin^^
Zitat aus dem 1. Post
Zitat:
Jeder name darf nur eine nummer haben, und jede nummer darf in der tabelle nur einmal exisiteren.
das klappt auch, aber falls der name oder die nummer schon exisitert, gibt er das gleiche aus (Nummer oder Name exisitert schon). Nun soll er aber bei jedem etwas anderes ausgeben.
z.B. der name existiert schon, dann soll er "Du hast schon eine Nummer." ausgeben, und wenn die Nummer schon exisitiert "Die Nummer ist schon vergeben.".
Wie krieg ich das denn hin?
Boxer1008 ist offline  
Alt 26.08.2010, 20:02  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

An den Anfang des Scriptes baust du folgende 2 Zeilen ein:
PHP-Code:
error_reporting(-1);
ini_set('display_errors''1'); 
Zitat:
PHP-Code:
 $result mysql_fetch_assoc(mysql_query("SELECT COUNT(nummer) as Anzahl FROM user WHERE nummer = '"  $code .  "' OR name = '" $name "'")); 
Solche Zeilen sind großer Müll!
mysql_query() kann Fehler erzeugen, die behandelt werden sollten... gewöhn dir das bitte gleich ab (und stattdessen Fehlerbehandlung an!)

Solltest du keine Fehlermeldungen erhalten, lohnt es sich immer nachzuschauen, welche Daten man bekommt - und in welcher Form. Lass dir also das Ergebnis der Abfrage mit print_r oder var_dump ausgeben.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline  
Alt 26.08.2010, 20:33  
Neuer Benutzer
 
Registriert seit: 24.08.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
Boxer1008 befindet sich auf einem aufstrebenden Ast
Standard

hatte immer
error_reporting(E ALL|E STRICT)
eingebaut.
Boxer1008 ist offline  
Alt 26.08.2010, 20:40  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

In deinem Query hats du in der Where-Klausel beide Bedingungen drin die nicht erfüllt sein dürfen. Teile das ganze auf 2 Queries und du hasts...
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline  
Alt 26.08.2010, 20:42  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Jeder name darf nur eine nummer haben, und jede nummer darf in der tabelle nur einmal exisiteren.
das klappt auch, aber falls der name oder die nummer schon exisitert, gibt er das gleiche aus (Nummer oder Name exisitert schon). Nun soll er aber bei jedem etwas anderes ausgeben.
Dann musst du die Fälle gesonder betrachten...
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline  
Alt 26.08.2010, 21:10  
Neuer Benutzer
 
Registriert seit: 24.08.2010
Beiträge: 15
PHP-Kenntnisse:
Anfänger
Boxer1008 befindet sich auf einem aufstrebenden Ast
Standard

okay, das hab ich inzwischen doch geschafft

dann hätt ich ne andere frage, kanna ber auch nen neuen thread aufmachen, wenbn das nötig ist.
undzwar geht es um die suche.
man soll diese tabelle später auch durchsuchen können (nach nummern), dann sollen sie zusammen mit dem namen ausgegeben werden. hab mich mal dran versucht, bin aber gescheitert. nummer wird später aus einer session genommen.

PHP-Code:
<?php
$nummer 
'1412040770_K-07090';
$verbindung mysql_connect ("localhost",
"Boxer1008""")
or die (
"keine Verbindung möglich.
 Benutzername oder Passwort sind falsch"
);

mysql_select_db("rechner")
or die (
"Die Datenbank existiert nicht.");
$suche mysql_fetch_assoc(mysql_query("SELECT FROM rechner WHERE nummer = '".$nummer."' ORDER BY name ASC"));
echo 
$suche;
?>
so siehts bisher aus. keine ahnung, wie richtig, oder falsch das ist, jedenfalls funktioniert es nicht^^
kann wer helfen?
Boxer1008 ist offline  
Alt 26.08.2010, 21:21  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Zitat:
$suche = mysql_fetch_assoc(mysql_query(
Wie du oben schon gehört hast, ist diese Schreibweise sehr schlecht. Mach da drei Zeilen draus.

Was bedeutet "funktioniert nicht"? Bekommst du einen Fehler angezeigt oder entspricht das Ergebnis nicht deiner Erwartung?
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline  
Alt 27.08.2010, 10:20  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von Boxer1008 Beitrag anzeigen
PHP-Code:
$suche mysql_fetch_assoc(mysql_query("SELECT FROM rechner WHERE nummer = '".$nummer."' ORDER BY name ASC")); 
SELECT FROM <- da fehlt noch was...
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL Abfrage apax PHP Tipps 2009 1 15.05.2009 23:32
MySQL Abfrage nach mehreen Spalten und mit verschiedenen Bedingungen ketchup PHP Tipps 2009 1 19.03.2009 23:21
[Erledigt] MySQL Abfrage parti02 Datenbanken 8 07.01.2009 19:19
MySQL - Fehler in einfacher Abfrage oden Datenbanken 11 03.01.2009 20:03
MySQL Abfrage Problem mit Where parti02 Datenbanken 14 23.10.2008 14:52
MySQL Abfrage von Ver. 5 für Ver 3. des MySQL Servers FireFIghter Datenbanken 3 02.02.2007 17:18
Datum bezogene mysql abfrage ApfeL Datenbanken 5 22.10.2006 16:03
MySQL Abfrage macht Seite langsam Datenbanken 11 19.10.2006 19:38
MySQL Abfrage Von / Bis andrew22 Datenbanken 1 02.10.2006 11:04
MySQL - Abfrage: Unterschiedliche Ergebnisse aus PHP/manuell horstenpeter Datenbanken 3 16.07.2006 13:22
mysql abfrage in Schleife havok PHP Tipps 2006 6 09.05.2006 08:39
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
[Erledigt] mysql Abfrage Datenbanken 5 18.06.2004 14:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php nummer eintragen namen bekommen, mysql nummer schon vergeben, php mysql abfrage schon vorhanden, mysql-abfrage für \existiert bereits\, select count(*) as menge from, mysql abfrage php

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum