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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
31.10.2003, 13:02:50
|
Anfänger
|
|
Registriert seit: Oct 2003
Ort: Nürtingen
Beiträge: 24
|
|
While-Schleife: Durchläufe zählen
Hi,
Ich hab vor einiger Zeit angefangen Php zu erlernen.
Teilweise benutze ich auch die Funktionsreferenz von selfphp.
Ich habe nun aber ein kleines Problem.
Ich habe eine Tabelle in MySQL und möchte nun die Anzahl der Reihen haben in dieser Tabelle. Das wäre sehr einfach wenn ich jede Reihe haben wollte (mit mysql_num_rows() ) aber ich möchte nur die Reihen, die an einen bestimmten Wert haben.
Damit es nich ganz so kompliziert wird schreib ich kurz den Code hier rein, den ich bisher hab:
$result=mysql_query("SELECT absender,empfaenger,datum,zeit,nummer FROM normal ORDER BY nummer;");
while( $row=mysql_fetch_array($result) )
{
if($row['datum']==$date)
{
}
}
Das mit dem if klappt, das hab ich woanders auch eingesetzt und da klappt es wunderbar, da zeigt es nur die Reihen an, die eben dieses Datum haben. Das Problem is aber hier, ich will nich die Reihen anzeigen, sondern ich möchte die ANZAHL der Reihen.
Ich hoffe ihr versteht, was ich meine und könnt mir helfen :)
|
31.10.2003, 13:10:07
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Wenn ich das richtig durchschaut habe, dann fehlt Dir in der Abfrage die WHERE-Klausel:
SELECT absender, empfaenger, datum, zeit, nummer
FROM normal
WHERE datum='$datum'
ORDER BY nummer;
Mit den ' bin ich mir nicht ganz sicher, also vielleicht ohne.
Die Anzahl der betroffenen Felder kannst Du dann mit mysql_affected_rows() ermitteln.
Ein Tipp, um Fehler zu erkennen: mysql_query(...) or die(mysql_error());
Alles zusammen:
PHP-Code:
$result=mysql_query("SELECT absender, empfaenger, datum, zeit, nummer FROM normal WHERE datum='$datum' ORDER BY nummer;") or die(mysql_error());
echo mysql_affected_rows();
|
31.10.2003, 13:16:17
|
Anfänger
|
|
Registriert seit: Oct 2003
Ort: Nürtingen
Beiträge: 24
|
|
Ok, Vielen Dank für die schnelle Antwort!
Was du geschrieben hast funktioniert EINWANDFREI!
Nochmals herzlichen Dank und auf Wiedersehen :)
|
31.10.2003, 17:25:31
|
Anfänger
|
|
Registriert seit: Oct 2003
Ort: Nürtingen
Beiträge: 24
|
|
Es hat super funktioniert bis jetzt. Aber auf einmal tut es nicht mehr richtig. :(
Ich habe mehrere solcher Sachen in einer Datei, das heißt ich habe eine Tabelle in mysql, die öffne ich in meiner php-datei.
Dann nehm ich einmal nur den Teil dieser Tabelle, der die eine Bedingung erfüllt und später den Teil der eine andere erfüllt.
Beidesmal setz ich einfach ein mysql_affected_rows(); dahinter kann es sein, dass er nun nicht mehr weiß welche Reihen gemeint sind? Muss ich in die Klammer etwas reinschreiben um ihm klar zu machen welche?
Mein Code: (ich bastle ein kleines programm für ein projekt)
// Normaler Brief
// Normaler Brief
$resultnormal=mysql_query("SELECT auftragsart,absender,empfaenger,datum,zeit,nummer FROM post WHERE datum='$datum' AND auftragsart='normal' ORDER BY nummer;") or die(mysql_error());
$nrnormal=mysql_affected_rows();
echo "<tr height=30>";
echo "<td width=200 valign=center align=left><a href=detail.php?auftrag=normal&datum=$datum>Normaler Brief</a></td>";
echo "<td width=200 valign=center align=center>$preisnormal $</td>";
echo "<td width=200 valign=center align=center>".$nrnormal." </td>";
$ertragnormal=bcmul($preisnormal,$nrnormal);
echo "<td width=100 valign=center align=center>$ertragnormal $</td>";
echo "</tr>";
// Lolli-Gruß
// Lolli-Gruß
$resultlolli=mysql_query("SELECT auftragsart,absender,empfaenger,datum,zeit,nummer FROM post WHERE datum='$date' AND auftragsart='lolli' ORDER BY nummer;") or die(mysql_error());
$nrlolli=mysql_affected_rows();
echo "<tr height=30>";
echo "<td width=200 valign=center align=left><a href=detail.php?auftrag=lolli&datum=$datum>Lolli-Gruß</a></td>";
echo "<td width=200 valign=center align=center>$preislolli $</td>";
echo "<td width=200 valign=center align=center>".$nrlolli." </td>";
$ertraglolli=bcmul($preislolli,$nrlolli);
echo "<td width=100 valign=center align=center>$ertraglolli $</td>";
echo "</tr>";
Geändert von Idolast (31.10.2003 um 17:30:13 Uhr)
|
31.10.2003, 18:18:48
|
Junior Member
|
|
Registriert seit: Aug 2003
Ort: Fürstenau (Uckermark, Land Brandenburg)
Beiträge: 259
|
|
Hi Idolast,
nach einer SELECT verwendet man mysql_num_rows. mysql_affected_rows nimmt man nach Update, Delete, Insert.
|
31.10.2003, 18:31:03
|
Junior Member
|
|
Registriert seit: Mar 2002
Beiträge: 153
|
|
HI
du willst also die Anzahl deiner Reihen in der DB wissen stimmts?
dann musst du wirklich
mysql_num_rows();
nehmen.
bei deinem Code müsste das dann so aussehen:
$resultnormal=mysql_query("SELECT auftragsart,absender,empfaenger,datum,zeit,nummer FROM post WHERE datum='$datum' AND auftragsart='normal' ORDER BY nummer;") or die(mysql_error());
$anz=mysql_num_rows($resultnormal);
echo $anz;
__________________
Wir sehen uns in der
Programmierer Hölle ;)
|
31.10.2003, 18:42:14
|
Anfänger
|
|
Registriert seit: Oct 2003
Ort: Nürtingen
Beiträge: 24
|
|
Seltsam ich dachte ich hätte das shcon ausprobiert gehabt und es hätte nicht getan. Na ja jetzt tut es jedenfalls (mit mysql_num_rows() ).
Danke :)
|
01.11.2003, 00:30:51
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
René und Florian, auch für Euch nochmal: Auch wenn im Manual zu PHP steht, dass mysql_affected_rows() nicht bei SELECT funktionieren soll, so klappt es doch!
Probiert es einfach mal aus, ist wohl das überzeugenste Mittel.
|
01.11.2003, 00:42:25
|
Junior Member
|
|
Registriert seit: Mar 2002
Beiträge: 153
|
|
Schon richtig c4 bloss er wollte ja nur die Anzahl "aller" Datensätze wissen..
Dafür ist nun mal mysql_num_rows();
ist ja jedem überlassen wie man es macht bloß, da es bei ihm nicht funktioniert hat haben wir Ihm halt einen alternativen Vorschlag angeboten. Und wenn es jetzt geht würde ich sagen. Das es richtig war ihm diesen Vorschlag zu unterbreiten ;-)
__________________
Wir sehen uns in der
Programmierer Hölle ;)
|
01.11.2003, 00:48:56
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Zitat:
Schon richtig c4 bloss er wollte ja nur die Anzahl "aller" Datensätze wissen..
Dafür ist nun mal mysql_num_rows();
|
Nee, damit gebe ich mich nicht zufrieden. :)
Er wollte die Anzahl der Datensätze haben, die dem entsprechenden Kriterien entsprechen. Das geht nunmal wunderbar mit mysql_affected_rows().
Warum es bei ihm nicht geklappt haben soll ist mir unklar und auch nicht gerade hilfreich beim argumentieren.
hm... Idolast, nutzt Du PHP 5? Vielleicht ist das dort ja endlich so, wie es im Manual steht....
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:00:40 Uhr.
|