php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.12.2008, 18:21  
Neuer Benutzer
 
Registriert seit: 24.12.2008
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
D.Imhof befindet sich auf einem aufstrebenden Ast
D.Imhof eine Nachricht über ICQ schicken D.Imhof eine Nachricht über Skype™ schicken
Standard While Schleife

Guten Abend,

ich habe ein kleines Problem und finde keine Lösung:

PHP-Code:
        // generiere eine random zahl, prüfe sie ob vorhanden und gib sie aus
        
$randzahl rand($first_entry$last_entry);
        
$query_chk "SELECT id, status FROM ".TBL_VIDEOS." WHERE id = ".$randzahl." AND status = 1";
        
$sql_chk mysql_query($query_chk);
        
// prüfe ob die id vorhanden ist -> wenn ja echo wenn nein newrandom
        
while (true) {
            if (
mysql_num_rows($sql_chk) == 1) {
                echo 
$randzahl;
                break;
            } else {
                
$randzahl rand($first_entry$last_entry);
            }            
        } 
Es soll eine Zufallszahl generieren, prüfen ob diese in der Datenbank als id vorhanden ist, und diese dann ausgeben. Wenn aber die Zahl nicht vorhanden ist als id, soll eine neue Zahl generiert werden, bis eine Zahl in der DB existiert!
Momentan ist es so: Wenn else auftritt wird einfach eine neue Zahl generiert, quasi eine Endlosschleife.

Wie kann ich das Script dazubringen es richtig zu machen?

Freundliche Grüsse, Dominic
D.Imhof ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.12.2008, 18:29  
Erfahrener Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 176
BlackWolf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von D.Imhof Beitrag anzeigen
Guten Abend,

ich habe ein kleines Problem und finde keine Lösung:

PHP-Code:
        // generiere eine random zahl, prüfe sie ob vorhanden und gib sie aus
        
$randzahl rand($first_entry$last_entry);
        
$query_chk "SELECT id, status FROM ".TBL_VIDEOS." WHERE id = ".$randzahl." AND status = 1";
        
$sql_chk mysql_query($query_chk);
        
// prüfe ob die id vorhanden ist -> wenn ja echo wenn nein newrandom
        
while (true) {
            if (
mysql_num_rows($sql_chk) == 1) {
                echo 
$randzahl;
                break;
            } else {
                
$randzahl rand($first_entry$last_entry);
            }            
        } 
Es soll eine Zufallszahl generieren, prüfen ob diese in der Datenbank als id vorhanden ist, und diese dann ausgeben. Wenn aber die Zahl nicht vorhanden ist als id, soll eine neue Zahl generiert werden, bis eine Zahl in der DB existiert!
Momentan ist es so: Wenn else auftritt wird einfach eine neue Zahl generiert, quasi eine Endlosschleife.

Wie kann ich das Script dazubringen es richtig zu machen?

Freundliche Grüsse, Dominic
das script macht auch keinen wirklichen sinn. was dein script im moment macht ist:
eine zufallszahl erzeugen.
eine mysql abfrage abschicken
ein einer schleife immer wieder prüfen ob die gerade abgeschickte anfrage 1 result zurückgibt und falls nicht eine neue zufallszahl generieren und wieder prüfen, ob die GLEICHE anfrage 1 result zurückgibt.

der fehler ist ganz einfach: du musst natürlich IN der schleife deine mysql-abfrage machen. du musst ja jedesmal wenn du $randzahl geändert hast wieder eine NEUE anfrage an die mysql-datenbank senden und prüfen. im moment schickst du EINMAL eine anfrage und prüfst immer wieder DIESE EINE anfrage - mit natürlich immer dem gleichen ergebnis.

mfg
BlackWolf ist offline  
Alt 24.12.2008, 18:35  
Neuer Benutzer
 
Registriert seit: 24.12.2008
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
D.Imhof befindet sich auf einem aufstrebenden Ast
D.Imhof eine Nachricht über ICQ schicken D.Imhof eine Nachricht über Skype™ schicken
Standard

Viele Dank für deine rasche Antwort. Meine neues Script sieht so aus und funktioniert:

PHP-Code:
        // generiere eine random zahl, prüfe sie ob vorhanden und gib sie aus
        // prüfe ob die id vorhanden ist -> wenn ja echo wenn nein newrandom
        
while (true) {
            
$randzahl rand($first_entry$last_entry);
            
$query_chk "SELECT id, status FROM ".TBL_VIDEOS." WHERE id = ".$randzahl." AND status = 1";
            
$sql_chk mysql_query($query_chk);
            
            if (
mysql_num_rows($sql_chk) == 1) {
                echo 
$randzahl;
                break;
            }
        } 
Vielen Dank
D.Imhof ist offline  
Alt 24.12.2008, 20:27  
Erfahrener Benutzer
 
Registriert seit: 19.03.2007
Beiträge: 176
BlackWolf ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von D.Imhof Beitrag anzeigen
Viele Dank für deine rasche Antwort. Meine neues Script sieht so aus und funktioniert:

PHP-Code:
        // generiere eine random zahl, prüfe sie ob vorhanden und gib sie aus
        // prüfe ob die id vorhanden ist -> wenn ja echo wenn nein newrandom
        
while (true) {
            
$randzahl rand($first_entry$last_entry);
            
$query_chk "SELECT id, status FROM ".TBL_VIDEOS." WHERE id = ".$randzahl." AND status = 1";
            
$sql_chk mysql_query($query_chk);
            
            if (
mysql_num_rows($sql_chk) == 1) {
                echo 
$randzahl;
                break;
            }
        } 
Vielen Dank
Gern.
Als kleine Anmerkung: Du kannst das ganze auch ohne if-case und break; lösen indem du einfach
PHP-Code:
while(mysql_num_rows($sql_chk) != 1
machst
und nach der schleife
PHP-Code:
echo $randzahl
mfg
BlackWolf ist offline  
Alt 24.12.2008, 22:27  
Neuer Benutzer
 
Registriert seit: 24.12.2008
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
D.Imhof befindet sich auf einem aufstrebenden Ast
D.Imhof eine Nachricht über ICQ schicken D.Imhof eine Nachricht über Skype™ schicken
Standard

Vielen Dank, habe deinen Vorschlag "eingebaut"
D.Imhof ist offline  
Alt 24.12.2008, 23:18  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Wenn Dir das "zufällig genug" ist, kannst Du auch einfach die nächst-passende id abfragen
PHP-Code:
<?php
$randzahl 
rand($first_entry$last_entry);
$query_chk "
  SELECT
    id
  FROM 
    "
.TBL_VIDEOS."
  WHERE
    id >= "
.$randzahl."
    AND status = 1
  ORDER BY
    id
  LIMIT 1"
;
$result mysql_query($query_chk) or die(mysql_error());
$id mysql_result($result0'id');
Damit werden zwar ids mit "Lücken davor" bevorzugt. Dafür ist es aber deterministisch, d.h. es kommt nicht vor, dass Du zufällig in einer Endlosschleife festhängst.
David 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
Problem mit Db+Bild in der while Schleife Janika PHP Tipps 2008 10 17.09.2008 20:39
While schleife -> letzter durchgang Skazi PHP Tipps 2006 7 16.09.2006 00:11
Problem mit while schleife obi PHP Tipps 2006 6 31.08.2006 13:40
mysql_query verschmelzen zweier abfragen (while schleife) Buschdieb PHP Tipps 2006 10 15.07.2006 17:11
while schleife - spezial datensatz einblenden Buschdieb PHP Tipps 2006 2 09.04.2006 13:05
while Schleife gibt nicht alle Daten aus PHP Tipps 2006 2 12.01.2006 19:24
[Erledigt] While schleife in while schleife = nur ein datensatz?! PHP Tipps 2005-2 9 28.10.2005 12:48
while schleife in einer while schleife beim tmpl-sys PHP Tipps 2005-2 0 27.07.2005 15:07
While Schleife Beatbox Off-Topic Diskussionen 8 19.05.2005 21:55
while schleife beenden PHP Tipps 2005 3 29.03.2005 20:35
IF ELSEIF ELSEIF ELSE mit While Schleife PHP Tipps 2005 9 04.03.2005 23:27
Variabel aus while schleife ausserhalb der schleife nutzen PHP Tipps 2005 8 12.02.2005 18:04
resultausgabe mit while schleife in pdf dokument PHP Tipps 2004 2 23.09.2004 14:56
Nach while Schleife funzt nix mehr?! PHP Tipps 2004 15 25.08.2004 00:25
[Erledigt] probleme mit ner while schleife PHP Tipps 2004 5 23.07.2004 17:28

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php while endlosschleife, php while endlos, while endlosschleife php, php endlosschleife while, php zufallszahl finden while, zufallszahl while php, php schleife random, zufallszahl php whilw, sind datensätze vorhanden ja/nein in einer schleife php, sinn schleifen php, php while immer gleicher datensatz, außerhalb while schleife mysql, while schleife zufallszahlen php, php for schleife random, php while schleife zufall, php schleife die zahlen generiert, neue zufallszahl in while schleife php, rand in php schleifen, rand schleifen php, php rand id

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