php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.01.2012, 09:06  
Neuer Benutzer
 
Registriert seit: 24.11.2011
Beiträge: 16
PHP-Kenntnisse:
Anfänger
Shax befindet sich auf einem aufstrebenden Ast
Standard Abfrage + Key Generierung neu starten wenn Key in Datenbank bereits vorhanden ist

Hallo, ich hab zurzeit ein Problem und komm nicht ganz auf die Lösung.

Ich lass mir eine Zahl für einen Coupon generieren, wie bekomm ich das jetzt aber hin, das ich die generierung des Coupons erneut ausgeführt wird inkl Abfrage wenn der Code schon vorhanden ist.

keycoupon.php
PHP-Code:
<?
//Generierung des Coupons
$couponrand substr(md5(microtime()), rand(026), 5);
echo 
"<p>Couponnummer: $couponrand</p>";

//Abfrage ob Coupon schon in der DB vorhanden ist
$abfrage "SELECT Aktionscode FROM Aktion WHERE Aktionscode='$couponrand'";
echo 
"<p>Datenbankabfrage: $abfrage</p>";
$result mysql_query($abfrage);

if (
mysql_num_rows($result) > 0) {
    echo 
"Datenbankeintrag vorhanden";
} else {
    echo 
"Datenbankeintrag nicht vorhanden";
}
?>
Die keycoupon.php kann ich ja nicht nochmal in else einbinden da ich damit es ja kontinuierlich aufrufe, weiß jemand Rat?
Shax ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.01.2012, 09:09  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

Die wohl einfachste Lösung hier wäre, das Ganze in eine Funktion zu verschachteln und im Falle der Existenz des Codes die Funktion rekursiv aufzurufen.

PHP-Code:
<? 
function generateCoupon()
{
//Generierung des Coupons 
$couponrand substr(md5(microtime()), rand(026), 5); 
echo 
"<p>Couponnummer: $couponrand</p>"

//Abfrage ob Coupon schon in der DB vorhanden ist 
$abfrage "SELECT Aktionscode FROM Aktion WHERE Aktionscode='$couponrand'"
echo 
"<p>Datenbankabfrage: $abfrage</p>"
$result mysql_query($abfrage); 

if (
mysql_num_rows($result) > 0) { 
    echo 
"Datenbankeintrag vorhanden"
    
$couponrand generateCoupon();
} else { 
    echo 
"Datenbankeintrag NICHT vorhanden"


return 
$couponrand;
}
?>

MFG Connar
Connar ist offline   Mit Zitat antworten
Alt 18.01.2012, 10:19  
BangkokInLove
Gast
 
Beiträge: n/a
Standard

Ich weiß jetzt grad nicht was schneller ist aber nicht außer acht lassen:

Würde jetzt dummerweise drei/vier mal ein vorhandener Code generiert werden, würde ja drei/vier mal eine (kleine) Datenbank-Abfrage stattfinden.

Meine Idee wäre jetzt:

Nur(!) die Codes einmal am Anfang in ein Array laden -> Code erstellen -> in_array() check -> Neuer Code generieren XOR Weiter ...

Kann nicht abschätzen wie das bei dir ist (Durchschnitt von der Anzahl der Codes) aber man muss halt abwegn:

Mehrere kleine Datenbankanfragen <> eine(!) etwas größere.

Kannst ja mal in deinem Fall testen!

Gruß

Manu
  Mit Zitat antworten
Alt 18.01.2012, 10:26  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

@BangkokInLove: Gebe ich dir prinzipiell recht, ich denke nur, wenn er wirklich so wenige Daten in der Datenbank hätte, dass es effizient wäre, sie alle auf einmal in ein Array zu laden, dann würden vermutlich auch keine (wenige) Überschneidungen auftreten. Müsste man jetzt vielleicht durchtesten, ab wieviel es sich lohnt. In seine Datenbank passen auf jeden Fall mal 72^5 Möglichkeinten ^^


MFG Connar
Connar ist offline   Mit Zitat antworten
Alt 18.01.2012, 10:47  
hts
Erfahrener Benutzer
 
Registriert seit: 07.09.2010
Beiträge: 722
PHP-Kenntnisse:
Fortgeschritten
hts befindet sich auf einem aufstrebenden Ast
Standard

Rekursion mit Datenbankabfragen finde ich nicht so schön. Eine do-while-Schleife bietet sich doch an.

PHP-Code:
do
{
  
$couponrand substr(md5(microtime()), rand(026), 5);
  
$abfrage "SELECT Aktionscode FROM Aktion WHERE Aktionscode='$couponrand'";
  
$result mysql_query($abfrage);
}
while(
mysql_num_rows($result) > 0); 
hts ist offline   Mit Zitat antworten
Alt 18.01.2012, 10:51  
Erfahrener Benutzer
 
Registriert seit: 22.01.2005
Beiträge: 606
Connar befindet sich auf einem aufstrebenden Ast
Standard

@hts: Danke man sollte nicht was schreiben und gleichzeitig an was anderes denken. So ist es eindeutig die bessere Variante.


MFG Connar
Connar ist offline   Mit Zitat antworten
Antwort


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: Wenn Eintrag bereits vorhanden Updaten TorrnexT PHP Einsteiger 17 08.09.2011 18:32
[Erledigt] Prüfung ob Wert bereits in DB vorhanden (case sesitive?!) MaNuu PHP Einsteiger 34 04.08.2011 10:08
Datenbank abfrage ob IP vorhanden Silfro Datenbanken 2 16.05.2011 08:56
Mehrere Querys klappen in PhpMyAdmin aber nicht in PHP djscaleo Datenbanken 36 15.05.2011 02:00
[Erledigt] MySQL - Prüfen ob Datensatz bereits vorhanden wenn nicht eintragen wooha PHP Einsteiger 10 19.04.2011 14:08
MY-SQL Abfrage nach Daten aus Tabelle 1 die in Tabelle 2 nicht vorhanden sind triple81 Datenbanken 1 25.12.2009 22:46
Einfache Abfrage aus mySQL Datenbank Problem ThomasM PHP Tipps 2009 7 05.06.2009 21:06
[Erledigt] datenbank abfrage mit group by mit php xstefxanx PHP Tipps 2009 2 27.04.2009 23:39
[Erledigt] Daten von Datenbank NACH der Abfrage sortieren Supeede PHP Tipps 2009 21 10.04.2009 00:33
datenbank abfrage mit php xstefxanx PHP Tipps 2009 11 04.04.2009 18:33
PHP Formular mit Daten füllen wenn bereits vorhanden Toasti85 PHP Tipps 2009 2 27.03.2009 11:33
[Erledigt] Datenbank abfrage geordnet anzeigen Octavian PHP Tipps 2009 10 22.03.2009 15:39
prüfen ob bestimmte Spalte bereits vorhanden Matthiasnet Datenbanken 1 19.03.2007 19:27
Prüfen ob Benutzername bereits in Datenbank vorhanden ist nicobischof PHP Tipps 2005-2 5 19.10.2005 14:17
Überprüfen ob Datenbank bereits existiert Connar PHP Tipps 2005 20 31.01.2005 15:54

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
aktionscode generieren, php registrierung mit key abfrage, generatecupons.tk, mehrfachabfrage von key in php formular, coupon code generierung, key abfrage php

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:56 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