| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

04-09-2003, 23:13
|
|
Idefix
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 10
|
|
Newbie braucht Eure Hilfe...
Hi...
Bin noch ein absoluter Neuling in PHP und SQL. Vielleicht kann mir ja jemand bei meinem Problem helfen. Ich habe eine Datenbank, in der ich zu einer automatisch vergebenen ID jeweils ein Bild, einen Link und ein paar andere Textdaten in einem Datensatz habe. Es handelt sich hierbei um eine Art Shopsystem. Auf meiner Indexseite möchte ich nun einen Zufallsartikel darstellen. Ich habe auch schon einen Lösungsansatz, der aber so nicht funktioniert. Also erschlagt mich hier nicht gleich. Ich suche eine funktionierende Lösung, die auch ein Newbie wie ich verstehe...
Für Eure Hilfe wäre ich Euch sehr dankbar...
PHP-Code:
<?php
@MYSQL_CONNECT("localhost","Name","Passwort");
@mysql_select_db("Datenbank");
$query = "SELECT id FROM binary_data_dvd ORDER BY RAND() LIMIT 0,1";
if($id) {
$query = "select bin_data,filetype from binary_data_dvd where $id";
$result = @MYSQL_QUERY($query);
$data = @MYSQL_RESULT($result,0,"bin_data");
$type = @MYSQL_RESULT($result,0,"filetype");
Header( "Content-type: $type");
echo $data;
};
?>
Ich habe mittlerweile festgestellt, dass einfach nur rumprobieren mich nicht weiterbringt, daher wende ich mich an Euch. Für Lösungen oder Lösungsvoschläge sage ich schon einmal im Vorfeld Danke !!!
Euer Idefix
EDIT: php.tags by Abraxax
Geändert von Abraxax (04-09-2003 um 23:17 Uhr)
|

04-09-2003, 23:19
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
1. die erste query wird nicht an die db gesendet.
2. solltest du dir die @'s abgewöhnen. dadurch werden nur fehlermeldungen unterdrückt, die dir bei einer fehlersuche hilfreich sind.
3. arbeite mit or die(mysql_error()) bei mysql_query()
4. wenn du 1.-3. beachtet hast, kannst du nochmal posten...
|

05-09-2003, 09:04
|
|
Idefix
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 10
|
|
Hallo Abraxax.
Danke zunächst einmal für Dein Posting.
Aber genau hier liegt ja mein Problem. Wie kann ich eine Zufalls ID auslesen und den Rest der zu dieser ID gehörenden Daten auch.
Das mit dem @ habe ich bei mir jetzt schon einmal rausgenommen.
Aber ich kriege keinerlei Ausgaben oder Fehlermeldungen angezeigt.
Gruß
Idefix
|

05-09-2003, 09:19
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
ich habe deinen code mal umgeschrieben.
PHP-Code:
<?php
@mysql_connect('localhost','Name','Passwort') or die('can not connect database host');
@mysql_select_db('Datenbank') or die('can nott select database');
$sql = 'SELECT id, bin_data, filetype
FROM binary_data_dvd
ORDER BY RAND() LIMIT 1';
$res = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($res)==1)
{
$row = mysql_fetch_assoc($res);
header ('Content-type: '.$row['filetype']);
echo $row['bin_data'];
}
else
{
echo 'error';
}
?>
schaue ihn dir genau an, teste ihn, und sage, dass es passt....  (habe ihn nicht getestet)
|

05-09-2003, 09:21
|
|
kapitaeniglo
PHP Senior
|
|
Registriert seit: Jul 2002
Beiträge: 1.474
|
|
hiho
zwar haett es ne einfach suche nach rand() auch getan, aber ich poste dir hier mal ne grobe loesung...
du machst eine mysql-abfrage, in der du dir einen zufaelligen dagensatz aus der db holst ...
PHP-Code:
$sql = "select * from binary_data_dvd order by rand(".time().") LIMIT 0,1";
wichtig ist hierbei das die funktion rand() mit parametern aufgerufen wird, weil sie sonst oft den gleichen datensatz ausspuckt... nen timestamp biettet sich da natuerlich an ....
haette man auch alles im forum finden koennen ....
oder bei mysql.com 
den rest solltest alleine hinbekommen
gruss
iglo
|

05-09-2003, 10:49
|
|
Idefix
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 10
|
|
Hi.
Danke für Eure Antworten. Ich habe das Script mal ausprobiert und kriege jetzt folgende Fehlermeldung:
Call to unsupported or undefined function mysql_fetch_assoc() in Pfad..../getdata.php3 on line 13
In Zeile 13 ist folgendes eingetragen:
$row = mysql_fetch_assoc($res);
header ('Content-type: '.$row['filetype']);
echo $row['bin_data'];
Ausserdem weiß ich immer noch nicht wie ich dann aus dem speziellen Datensatz, den sich das Script ausgesucht hat, die anderen Daten ziehe.
Hört sich sicher blöd an, ist es aber auch...
Ich fange nunmal gerade an, mich mit der Materie zu beschäftigen...
Sorry
Gruß Chris
|

05-09-2003, 10:51
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
was für eine php-version hast du, dass der die fkt nicht kennt?
probiere auch mal bitte
PHP-Code:
$row = mysql_fetch_array($res);
|

05-09-2003, 11:54
|
|
Idefix
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 10
|
|
Hallo Abraxax,
die Abfrage als solche scheint zu funktionieren. Bei der PHP-Version bin ich mir nicht ganz sicher. Habe einen Server von 1&1...
Nun habe ich allerdings in Zeile 14 noch ein Problem und die Binärdatei wird scheinbar ohne Filetyp ausgelesen ( nur eine Menge Zeichenfolgen werden ausgegeben) :
Warning: Cannot add more header information - the header was already sent (header information may be added only before any output is generated from the script - check for text or whitespace outside PHP tags, or calls to functions that output text) in /homepages/39/d74406256/htdocs/Cash-Start/getdata.php3 on line 14
ÿØÿàJFIFHHÿÛC%%%%0'''''02-////-22566652::<<::BBBBBBBBBBBBBBBÿÛC&&0&!!&060/)/06;522225;8:666:8==;;==BBBBBBBBBBBBBBBÿÀ³ÿÿÄÿÄ<!1"AQ2aBq ‘¡#±Á$RÑð3b‚áñCcr¢²ÿÄÿÄÿÚ ?÷€AÂë Iœ ˜”P€@ €@
... usw.
Aber wenigstens findet er ja schon einmal eine Bilddatei... :-)
In Zeile 14 habe ich folgenden Scripttext stehen:
header ('Content-type: '.$row['filetype']);
Und dann wäre da immer noch das kleine Problem, wie ich die restlichen Daten aus dem nun ausgesuchten Datensatz herauslesen kann.
Ach ja, so ein Script kann einen schon zur Verzweiflung treiben, wenn man sich nicht so auskennt wie Ihr....
Gruß
Idefix
|

05-09-2003, 12:51
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
ich würde mal sagen, dass du einen falschen content-type in der db hast...
mache mal bitte zum test folgendes:
PHP-Code:
echo $row['filetype'];
// header ('Content-type: '.$row['filetype']);
// echo $row['bin_data'];
|

05-09-2003, 12:52
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Original geschrieben von Idefix
Warning: Cannot add more header information - the header was already sent (header information may be added only before any output is generated from the script - check for text or whitespace outside PHP tags, or calls to functions that output text)
|
ich weiss zwar nicht, was es an dem fett markierten teil der meldung nicht zu verstehen gibt - aber wenn du es wirklich nicht kapierst, leis es halt noch einmal hier nach.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

05-09-2003, 13:59
|
|
Idefix
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 10
|
|
Hi Abraxax.
er liest den Filetyp korrekt aus und gibt nun folgendes aus:
image/pjpeg
Hilft das weiter ???
Gruß
Idefix
|

05-09-2003, 14:30
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
Zitat:
Original geschrieben von Idefix
Hilft das weiter ???
|
in sofern schon, dass ich nun weiss, dass der korrekte type gesendet wird...
aber es bringt mich nicht weiter, warum dein script da meckert.
- ist das script denn absolut alleine in einer datei und hat keinerlei leerzeichen zu beginn und ende der datei?
- hast du das script irgendwo includet?
- was genau machst du wie?
ich hoffe, dass ich dann mehr sagen kann.
|

05-09-2003, 16:28
|
|
Idefix
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 10
|
|
Hallo,
ich poste Dir mal das Script, mit dem ich die Dateien in die Datenbank schreibe. Ich habe das Ausgabescript nirgendwo included und rufe es einfach auf. Ursprünglich hatte ich das Script so geschrieben, das die Variable $id mit im Browser eingetragen wurde und das Bild dann anzeigte. Auch hier hatte ich aber das Problem, dass ich noch gar nicht weiß, wie ich die anderen Daten aus dem Datensatz dann auslesen soll. Newbie halt
Gruß vom Idefix
Geändert von Idefix (05-09-2003 um 17:56 Uhr)
|

05-09-2003, 16:46
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.621
|
|
ich wollte jetzt nicht dein hochlade-script checken. da habe ich keine lust zu ...
aber grundsätzlich solltest du mal die neuen schreibweisen prüfen.
http://de.php.net/manual/de/features.file-upload.php
ich denke, dass du erst einmal dies korrekt umsetzen solltest. dann dürften auch keine probleme auftreten.
|

05-09-2003, 19:11
|
|
Idefix
Newbie
|
|
Registriert seit: Sep 2003
Beiträge: 10
|
|
So... Probleme soweit gelöst !!! 
Jetzt habe ich nur noch 2 Sachen...
Hier mein aktuelles Ausgabescript :
PHP-Code:
<?php
@mysql_connect("localhost","Name","Passwort") or die('can not connect database host');
@mysql_select_db('Datenbank') or die('can not select database');
$query = 'SELECT id, bin_data, filetype,produktname1,produktname2,beschreibung,datum,sendtime,preis,beurteilung,filelink
FROM binary_data_dvd
ORDER BY RAND() LIMIT 1';
$result = @MYSQL_QUERY($query);
$data = @MYSQL_RESULT($result,0,"bin_data");
$type = @MYSQL_RESULT($result,0,"filetype");
$name1 = @MYSQL_RESULT($result,0,"produktname1");
$name2 = @MYSQL_RESULT($result,0,"produktname2");
$beschreibung = @MYSQL_RESULT($result,0,"beschreibung");
$datum = @MYSQL_RESULT($result,0,"datum");
$sendtime = @MYSQL_RESULT($result,0,"sendtime");
$preis = @MYSQL_RESULT($result,0,"preis");
$beurteilung = @MYSQL_RESULT($result,0,"beurteilung");
$link = @MYSQL_RESULT($result,0,"filelink");
Header( "Content-type: $type");
echo "$data";
echo "$preis";
?>
Ich kriege leider immer noch nicht den Preis angezeigt. Er zeigt mir entweder $data an, oder wenn ich es herauskommentiere den Preis an. Aber ich kann so nicht beides darstellen.
Das zweite Problem ist, das ich aus $data (Bild) und $link ( http://www....)
ein Link unter php auf das Bild setzen möchte, über den man dann auf die Produktseite kommt. Die Zufallsanzeige funzt schon mal super so.... !!!
Gruß vom Idefix
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
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.
|
|
|
|
PHP News
|