SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 31.03.2008, 13:00:12
jdgf jdgf ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 24
Nochmals Rätsel

Hallo,
in meinem Script soll per Zufall ein Rätsel ausgewählt werden. (Die Spalten in der Datenbank haben die Bezeichnung: id, frage, datum). Das Auswahlrätsel erhält in der datum-Spalte den Eintrag des Tagesdatums z.B für heute "0331". Soweit funktioniert das Script.
Das das Script täglich mehrfach aufgerufen wird, soll pro Tag nur ein Rätsel ausgewählt werden. Meine If-Abfrage funktioniert aber nicht. Was mache ich hier falsch?
PHP-Code:
<?php
//Tagesdatum festlegen
$timestamp time();
$datum2 date("md"$timestamp);
echo 
"<br>Datum2: " .$datum2;
?>

<?php
// Anzahl der Datensätze ermitteln = $menge
$abfrage "SELECT id FROM raetsel";
$ergebnis mysql_query($abfrage);
$menge mysql_num_rows($ergebnis);
echo 
"AnzahlDatensätze: " "$menge" "<br>";
?>

<?php
$test2
="SELECT datum From raetsel WHERE datum=$datum2";
$erg=mysql_query($test2);
while (
$esatz mysql_fetch_assoc($erg))
{
echo 
$esatz["datum"];
$var2 $esatz["datum"];
}
echo 
"<br>DatumAuswahl: ".$var2;
?>

<?php
//Mit if-Abfrage überprüfen, ob für den Tag bereits ein Rätsel markiert wurde:
if $var2 == $datum2 {
$test1="SELECT id, frage, datum FROM raetsel WHERE datum=$var2";
$res=mysql_query($test1);
$num mysql_num_rows($res);
echo 
"$num Datensätze gefunden<br>";
    while (
$dsatz mysql_fetch_assoc($res))
    {
    echo 
$dsatz["frage"] . "<br>Datum: "$dsatz["datum"];
    
$var $dsatz["id"];
    }
echo 
"<br>ID: " .$var; */
}
*else {
//falls keine Markierung, dann zufälliges Rätsel auswählen
$test1="SELECT id, frage, datum FROM raetsel WHERE datum=0 ORDER BY RAND() LIMIT 1";
$res=mysql_query($test1);
$num mysql_num_rows($res);
echo 
"$num Datensätze gefunden<br>";
while (
$dsatz mysql_fetch_assoc($res))
{
echo 
$dsatz["frage"] . "<br>Datum: "$dsatz["datum"];
$var $dsatz["id"];
}
echo 
"<br>ID: " .$var;
}
?>


<?php
//Tagesrätsel mit Datum markieren
$sql "UPDATE raetsel SET datum=$datum2 WHERE ID=$var";
mysql_query($sql);
?>
Danke für die Hilfe!
Gruß, Dietmar
Mit Zitat antworten
  #2  
Alt 31.03.2008, 13:28:36
ascer ascer ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 137
AW: Nochmals Rätsel

warum machst du denn bei jedem "kleinem" Codeschnipsel immer ein "<?php" an den Anfang und ein "?>" ans Ende? kannst doch alles in einem <?php ?> abspeisen...

aber mal zu deinem Problem, bei deiner IF-Abfrage fehlen irgendwie die Klammern?!
PHP-Code:
//Mit if-Abfrage überprüfen, ob für den Tag bereits ein Rätsel markiert wurde: 
if $var2 == $datum2 
das müssen doch klammern hin:
PHP-Code:
if( $var2 == $datum2 ){ 
   ...
code... 


ich versteh ehrlich gesagt auch gar nicht, warum du da soviele Abfragen reinbaust, wenn du in deiner Datenbank für jeden Tag immer ein Rätsel parat hast würde doch folgendes locker ausreichen:
PHP-Code:
$datum date"md"time() );
$query "SELECT `id`,`frage`,`datum` FROM `tabelle` WHERE `datum`='".$datum."' LIMIT 0,1" 
damit hast du dann ein Query, der beginnend ab dem ersten Eintrag deiner Tabelle nach genau 1 Datensatz sucht und den ersten Datensatz komplett lädt in dem `datum`='$datum' ist...

Wenn ich nicht irgendwas falsch verstanden hab sollte das den restlichen Code von dir relativ überflüssig machen^^


gruß,
Ascer
Mit Zitat antworten
  #3  
Alt 31.03.2008, 14:05:13
jdgf jdgf ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 24
AW: Nochmals Rätsel

Hallo Ascer,
danke für deine Hilfe.
Zitat:
Wenn ich nicht irgendwas falsch verstanden hab sollte das den restlichen Code von dir relativ überflüssig machen^^
Mit deinem Vorschlag hast du eigentlich recht. Da ich aber zur Zeit nur etwa 80 Fragen habe, klappt es noch nicht für jeden Tag.
Gruß, Dietmar
Mit Zitat antworten
  #4  
Alt 31.03.2008, 22:03:00
ascer ascer ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 137
AW: Nochmals Rätsel

nur etwa 80 Fragen?? sind doch paar viele eigentlich^^

und wieso nicht für jeden Tag??
die Aussage versteh ich irgendwie nicht ganz^^
Mit Zitat antworten
  #5  
Alt 02.04.2008, 09:51:08
jdgf jdgf ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 24
AW: Nochmals Rätsel

Hallo,
Zitat:
und wieso nicht für jeden Tag??
die Aussage versteh ich irgendwie nicht ganz^^
Wenn ich zB. 365 hätte, könnte ich jedem Kalendertag einen Eintrag zuordnen und über das Datum aufrufen. Bei meinen [sogar :-)] 148 Fragen lasse ich per Zufall eine Frage auswählen und trage in das Datumsfeld den Aufruftag ein. Sind 147 Datumfelder belegt, löscht das Script alle Einträge in der Spalte Datum und beginnt wieder von neuem.
Gruß, Dietmar
Mit Zitat antworten
  #6  
Alt 05.04.2008, 04:05:14
ascer ascer ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 137
AW: Nochmals Rätsel

ok, jetzt versteh ich deine aussage^^


gibt's jetzt eigentlich noch konkrete Probleme mit irgendwas??

und mal der Neugier halber: wie wählst du die Einträge denn per Zufall aus?


gruß,
Ascer
Mit Zitat antworten
  #7  
Alt 08.04.2008, 15:56:15
jdgf jdgf ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 24
AW: Nochmals Rätsel

Hallo Ascer,

ein Problem gibts es nicht mehr, du kannst die Rätselseite hier ansehen.

Zitat:
und mal der Neugier halber: wie wählst du die Einträge denn per Zufall aus?
durch den Befehl "ORDER BY RAND()"-->
PHP-Code:
    $test1="SELECT id, titel, frage, datum FROM raten WHERE datum=0 ORDER BY RAND() LIMIT 1"
Gruß, Dietmar
Mit Zitat antworten
  #8  
Alt 08.04.2008, 23:31:47
ascer ascer ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 137
AW: Nochmals Rätsel

ok, ist nicht schlecht, aber bei order by rand limit 1 müsste doch eigentlich immer eine spezielle spalte per ASC oder DESC rauskommen, oder? also wäre es quasi nicht komplett zufällig, glaub ich jetzt zumindest mal, bin da grad auch etwas "überfragt"^^

ich weiß nicht, ich glaube ich hätte nur die ID in ein Array geladen von allen Datensätzen die noch datum=0 haben und dann per random in php über den index des arrays irgendeine datenbank id gezogen und die dann quasi geladen...und das ganze dann als CronJob laufen lassen, halt einmal täglich damit jeden tag ne neue frage kommt...

oder ein skript schreiben, was man halt einmal jährlich ( oder wie oft auch immer ) startet, das dann jeder frage per zufall nen datum mitteilt ( also in die db schreibt )...so das man das skript einmal laufen lässt und dann für's komplette jahr schon per zufall für jeden tag ne frage gezogen hat...

gruß,
Ascer
Mit Zitat antworten
  #9  
Alt 09.04.2008, 09:40:45
jdgf jdgf ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 24
AW: Nochmals Rätsel

Hallo Ascer,
ich wollte erreichen, dass die Fragen immer etwas durchgemischt werden, damit sich die Reihenfolge nicht wiederholt.
Zitat:
ORDER BY RAND() in Kombination mit LIMIT ist nützlich zur Auswahl eines Zufallswerts aus einer Datensatzmenge:
mysql> SELECT * FROM table1, table2 WHERE a=b AND c<d -> ORDER BY RAND() LIMIT 1000;
RAND() ist nicht als perfekter Zufallsgenerator gedacht, sondern stellt eine gute Möglichkeit da, ad hoc Zufallszahlen zu erzeugen, die innerhalb derselben MySQL-Version plattformübergreifend funktioniert.
Nach der Beschreibung reicht hierfür der RAND-Befehl aus. Da ich bei jeder veröffentlichten Frage statt der 0 ein Datum in die Spalte datum eingefügt wird, müßte es laufen. Getestet habe ich es nur mit 4 Fragen. Dort war es ok.
Gruß, Dietmar
Mit Zitat antworten
  #10  
Alt 09.04.2008, 13:07:52
ascer ascer ist offline
Anfänger
 
Registriert seit: Oct 2006
Beiträge: 137
AW: Nochmals Rätsel

joa, wird schon klappen^^

ich mach mir nur, bzw. würde mir gedanken machen wie gut das klappt, muss aber wie gesagt dazu sagen, das ich mich nicht so gut mit MySQL auskenne, hab bis jetzt noch nie wirkliche MySQL Tutorials, Lehrgänge oder Bücher oder so durchgelesen, mein sämtliches MySQL wissen beschränkt sich auf, bzw. beziehe ich auf die MySQL Dokumentation, wo ich suche, wenn ich mal was nicht weiß/nicht finde und das, was einem in PHP Büchern beigebracht wird^^
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Würfeln, bei einer 6 nochmals würfen SaKrifieD PHP Grundlagen 8 25.05.2005 00:40:00
Halli, Hallo. Ein Rätsel zum lösen an alle PHP User xDragonx PHP Grundlagen 4 13.11.2004 20:11:55
nochmals PHP vs Perl steinbruch PHP Grundlagen 3 10.12.2003 20:23:13
Nochmals PDF wollenschlaeger PHP für Fortgeschrittene und Experten 0 09.05.2003 15:06:54
Nochmals Hilfe zu einer MYSQL abfrage :( Mike105 PHP für Fortgeschrittene und Experten 2 28.04.2003 22:28:04


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:56:51 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt