msql frage zu datenabgleich

VIPbanner_de

www.VIPbanner.de
ID: 72674
L
1 Mai 2006
2.598
150
habe folgendes vor:

User fürllt ein Formular aus um werbung zu buchen. klammid & zufallgeneriertes Passwort werden in der DB gespeichert. Das klappt soweit.. jetzt soll aber wenn der User mit der gleichen KlammID nochmal Werbung bucht überprüft werden ob die KlammID schon in der DB hinterlegt ist und wenn ja dann soll kein Zufallsgeneriertes PW erstellt werden, sondern das andere passwort ausgelesen werden und für die neue Werbekampagne gespeichert werden.. Sprich beide Kampagnen haben dann das gleiche PW.

Mein phpcode sieht derzeit so aus.. das er net funktioniert is mir klar... nur weiß ich net wie ich es am schlausten mach das es keine probleme gibt?.. mit ner Schleife oder wie?

PHP:
<?
vorquery = "SELECT count(*) FROM V4_paidmails WHERE spklammid = '".mysql_real_escape_string($klammid)."'";

	
	$resulta=mysql_query($vorquery);
	if(mysql_result($resulta, 0)>0)
	{
	$passwort="";
	$passwort= mysql_query("select sppasswort from V4_paidmails WHERE `typ` = '50' AND spklammid = '".mysql_real_escape_string($klammid)."'");
	}
?>
 
Du machst nur nen query.. du musst das PW aber auch in ein Array packen...
mysql_fetch_array würde dir dabei helfen ;)
 
Außerdem:

Beim Vorquery fehlt das $ ^^


Du könntest so weitermachen:

$array=mysql_fetch_array($passwort);
$altespw=$array["sppasswort"];
 
PHP:
<?php
    function build_unique_string($length = 10) {
        $chars = 'abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
        $string = '';
        for($i = 0; $i <= $length; $i++) {
            $rand = rand(0, strlen($chars) - 1);
            $string .= substr($chars, $rand, 1);
        
        }
        return $string;
    } 
    // checken, ob Klamm-ID vorhanden, wenn ja, Passwort vorhanden
    $pw = mysql_result(mysql_query("SELECT sppasswort FROM V4_paidmails WHERE spklammid = " . mysql_real_escape_string($klammid) . " LIMIT 1"), 0);
    // falls $pw leer -> neues Passwort generieren
    if(empty($pw)
        $pw = build_unique_string(8);
?>

Ungetestet, aber die wohl effizienteste Variante.

mysql_fetch_array() ist btw Resourcenverschwendung.

Greetz

paddya
 
PHP:
...
    // checken, ob Klamm-ID vorhanden, wenn ja, Passwort vorhanden
    $pw = mysql_result(mysql_query("SELECT sppasswort FROM V4_paidmails WHERE spklammid = " . mysql_real_escape_string($klammid) . " LIMIT 1"), 0);
...

Müßte es nicht heißen (rotes , 0 am Ende):
// checken, ob Klamm-ID vorhanden, wenn ja, Passwort vorhanden
$pw = mysql_result(mysql_query("SELECT sppasswort FROM V4_paidmails WHERE spklammid = " . mysql_real_escape_string($klammid) . " LIMIT 1"), 0, 0);
 
Müßte es nicht heißen (rotes , 0 am Ende):
// checken, ob Klamm-ID vorhanden, wenn ja, Passwort vorhanden
$pw = mysql_result(mysql_query("SELECT sppasswort FROM V4_paidmails WHERE spklammid = " . mysql_real_escape_string($klammid) . " LIMIT 1"), 0, 0);

Da eh nur eine Spalte ausgewählt wird, kann man sich die letzte null am Ende eigentlich sparen. Der "Feld"-Parameter ist zudem optional. Schaden kann die 0 aber natürlich nie.

Greetz

paddya