• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

Wie Datensätze von Server auf HP abfragen und anzeigen?

ace753

Guest
Hi

Habe eine Excel Tabelle mit über 4000 Datensätzen über PC Spiele als CSV-Datei auf den Server meines Providers all-inkl. hochgeladen.

Es sind 8 Spalten mit (PC Spiel…….Genre…….Monat ….Jahr...Entwickler....Publisher....PCGames (Wertung).....PowerPlay (Wertung). Vorgesehen ist nur mal Text, keine Bilder.

Wie kann ich nun per Script mit meiner Datenbank Verbindung aufnehmen?

Wie vorhandene Datensätze aus meiner DB auslesen und vernünftig auf einer HTML-Seite anzeigt?

Wie kann ich ein Formular erstellen, mit dem man neue Datensätze in die DB eintragen kann?

Kennt sich jemand damit aus bzw. kennt sich mit php aus und kann mir helfen.
Gibt es vielleicht fertige Scripte schon dafür?

thx schonmal
 

bog

Mitglied seit
02.08.2002
Beiträge
10.121
Reaktionen
0
Ort
auf dem mutterschiff
csv dateien sind doch in der regel nur datensaetze aka zellen die mit semikolons oder zeilenspruengen abgetrennt sind, oder? da reicht doch ein simples
PHP:
$bla=file("./hukhuk.csv",xyz);
, dann haste die _zeilen_ als arraywerte in $bla, danach folgt nen
PHP:
explode();
der einzelnen arrays, dann hast du die zellen isoliert.
oder?
 

ace753

Guest
Ja genau, wenn du eine csv-Datei mit einem Editor öffnest, dann sind die Spalten mit einem Semikolon getrennt.

Kann dir aber bei deiner Ausführung nicht folgen bzw. was du damit meinst.

So ungefähr wird wohl die Verbindung zur Datenbank aussehen.
Hab da schon bisschen rumprobiert, hat aber nicht hingehauen.

<?
include("daten.php");

//Verbindung zu MySQL aufnehmen
$db = mysql_connect ("$dhost", "$dusername", "$dpasswort")
or die ("Leider konnte keine Verbindung zu MySQL hergestellt werden, wenden sie sich an den Administartor");

//Verbindung zur Datenbank aufnehmen
mysql_select_db("$datenbank",$db)
or die ("Leider konnte keine Verbindung zur Datenbank aufgenommen werden");

$sql = "UPDATE newsscript SET username='$username', überschrift='$überschrift', email='$email', text='$text' Where id=$change";
$result = mysql_query($sql,$db);
Header("Location: news_ansehen.php");
?>
 
Mitglied seit
12.01.2004
Beiträge
8.557
Reaktionen
0
Ort
Gießem
theoretisch brauchst du nichtmal php
sondern es läuft auch per javascript bzw dhtml
wobei das nur für ms ie gilt: http://de.selfhtml.org/dhtml/modelle/datenanbindung.htm

dennoch ne edle sache wie ich finde :)

wobei du die csv dateien auch in eine mysql datenbank importieren kannst (einfachste weg -> phpmyadmin ziehen und darüber machen ;))
 
Mitglied seit
12.01.2002
Beiträge
2.216
Reaktionen
0
Du wirst die Datenbank wohl kaum über MySQL-Abfragen können, bevor Du die Daten nicht auch in der MySQL-Datenbank hast, oder?

Was bog gemacht hat, ist bloß die Datei zu öffnen und den Inhalt in ein Array zu schreiben, mit welchem Du dann rumspielen kannst. Etwas anderes machen die MySQL-Abfragen letztlich auch nicht.

Trotzdem ist es sicherlich einfacher, die Daten in eine MySQL-Datenbank zu importieren und dann einfach mit MySQL weiterzuarbeiten, da bekommst Du gleich eine Menge Abfragefunktionen mitgeliefert.

Evtl. solltest Du Dich erstmal ein bißchen in PHP einlesen, bevor Du weitermachst, die Sprache ist zwar nicht schwer, aber ganz ohne Vorkenntnisse dürfte es etwas kompliziert werden, da auf Ergebnisse zu kommen. Stichworte für Google:

PHP Tutorial

Viel Spaß!
 

ace753

Guest
Mein Provider all-inkl hat ja phpmyadmin und darüber hab ich ja die Daten in die sql Datenbank importiert.

Falls sich doch noch jemand mit der Materie gut auskennt und Lust und Zeit hat mir zu helfen, dann kann er sich ja hier noch melden.

Ansonsten muss ich halt mal weiterschaun.
 

Scheinkultur

Guest
csv steht für comma seperated values...


und du solltest dir SQL und PHP Tutorials angucken um erstmal zu verstehen wie das ganze ineinander greift...
 
Mitglied seit
12.01.2004
Beiträge
8.557
Reaktionen
0
Ort
Gießem
wichtig wäre auch, dass du in der mysql datenbank noch nen zusätzliches feld erstellst, nämlich eine id als primary_key und in deinem fall wohl noch auto_incremement.
dadurch kannste deine tabelle schneller dürchwühlen und besser mit den datensätzen arbeiten (auf eine professionelle erklärung verzichte ich jetzt hier ^^) :)
 

cart

Technik/Software Forum
Mitglied seit
01.08.2002
Beiträge
4.873
Reaktionen
0
Ort
New York
Wenn du die Daten schon in der Datenbank hast, dann geht das folgendermaßen:


PHP:
[spoiler]<?php
//zur DB connecten
$dbConn = mysql_connect ("$dhost", "$dusername", "$dpasswort");
//das Query um alle Daten zu holen
$query = "SELECT * FROM name_des_tables ORDER BY feld_nach_dem_du_sortieren_willst";
//Query abschicken
$result = mysql_query($query, $dbConn);
//solange (while) er Daten bzw. ein Array findet (mysql_fetch_array)
while($daten = mysql_fetch_array($result)) {
      //Felder (feld1, feld2) ausgeben (echo)
      echo $daten['feld1'].$daten['feld2'].....
}
?>[/spoiler]
 
Mitglied seit
12.01.2004
Beiträge
8.557
Reaktionen
0
Ort
Gießem
hab mir irgendwann ma ne mysql class geschrieben, mit den puren befehlen war mir zuviel tipp-arbeit ^^

btw sind die farben des php-bbcodes mal hart hässlich!
wäre nice wenn das mal einer ändern könnte, bzw hintergrundfarbe auf das klassische light-grey ^^
 

bog

Mitglied seit
02.08.2002
Beiträge
10.121
Reaktionen
0
Ort
auf dem mutterschiff
PHP:
[spoiler]<?php
//zur DB connecten
$dbConn = mysql_connect ("$dhost", "$dusername", "$dpasswort");
//das Query um alle Daten zu holen
$query = "SELECT * FROM name_des_tables ORDER BY feld_nach_dem_du_sortieren_willst";
//Query abschicken
$result = mysql_query($query, $dbConn);
//solange (while) er Daten bzw. ein Array findet (mysql_fetch_array)
while($daten = mysql_fetch_array($result)) {
      //Felder (feld1, feld2) ausgeben (echo)
      echo $daten['feld1'].$daten['feld2'].....
}
?>[/spoiler]

edit: t.t
 

ace753

Guest
thx, aber hab es mal so probiert.


<?php
$host = "localhost";
$benutzer = "xxxxx";
$kenn = "xxxxx";

$db = mysql_connect($host,$benutzer,$kenn) OR die("Keine Verbindung hergestellt!");

mysql_select_db("xxxxx",$db) OR die("Datenbank nicht geöffnet");
$sqlbef="SELECT * FROM xxxxx";
$sqlerg=mysql_query($sqlbef,$db);

$anz=mysql_num_rows($sqlerg);
mysql_close($db);

FOR ($i=0;$i<$anz;$i+1)
{
$a=mysql_result($sqlerg,$i,"id");
$b=mysql_result($sqlerg,$i,"pc_dos_spiel");
$c=mysql_result($sqlerg,$i,"genre");
$d=mysql_result($sqlerg,$i,"monat");
$e=mysql_result($sqlerg,$i,"jahr");
$f=mysql_result($sqlerg,$i,"entwickler");
$g=mysql_result($sqlerg,$i,"publisher");
$h=mysql_result($sqlerg,$i,"pc_games");
$i=mysql_result($sqlerg,$i,"power_play");


echo "$a, $b, $c $d $e $f $g $h $i<br>";
}
?>
</body>
</html>


Jetzt hab ich Zugriff auf die Tabelle.
Aber es wird nur der 1 Datensatz und da auch nur die 1 und 2 Spalte angezeigt.

Das sieht dann so aus, aber das geht dann ca. 4000 mal so weiter.

1, 1830, Hexagon-Strategie
1, 1830, Hexagon-Strategie
1, 1830, Hexagon-Strategie
1, 1830, Hexagon-Strategie
1, 1830, Hexagon-Strategie
1, 1830, Hexagon-Strategie
usw.

Weiss jemand woran das liegen könnte?

Liegt das vielleicht an der Zeile

$anz=mysql_num_rows($sqlerg);
 
Mitglied seit
12.01.2004
Beiträge
8.557
Reaktionen
0
Ort
Gießem
du gibst mit der for schleife quasi den einzigen datensatz den er rausfischt $anz-mal aus...

while($daten = mysql_fetch_array($result)) // ein durchlauf entspricht ein datensatz
{

echo $daten['id'];
oder $daten['pc_dos_spiel'] oder sowas. das ganze ist nen sogenanntes assoziativen array... darin sind dann halt die daten eines datensatzes gespeichert.
also aufruf $variablenname['tabellen-feld-name']

}

wies oben scho wer gesagt hatte

btw den
mysql_close($db);
würde ich ganz ans ende verlagern...
also vor ?>
 

ace753

Guest
Hier gabs die Fehlermeldung



Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/htdocs/v159417/test6.php on line 16

Das ist die Zeile mit "while........."



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<?php
$host = "localhost";
$benutzer = "xxxxx";
$kenn = "xxxxx";

$db = mysql_connect($host,$benutzer,$kenn) OR die("Keine Verbindung hergestellt!");

mysql_select_db("xxxxx",$db) OR die("Datenbank nicht geöffnet");
$sqlbef="SELECT * FROM xxxxx";
$sqlerg=mysql_query($sqlbef,$db);

while($row = mysql_fetch_array($result))
{

//Felder (feld1, feld2) ausgeben (echo)

echo $daten['id'].$daten['pc_dos_spiel'].$daten['genre'].$daten['monat']
.$daten['jahr'].$daten['entwickler'].$daten['publisher'].$daten['pc_games'].$daten['power_play'];
}

mysql_close($db);

?>
</body>
</html>
 
Mitglied seit
12.01.2004
Beiträge
8.557
Reaktionen
0
Ort
Gießem
*hust*

while($row = mysql_fetch_array($result))
{

//Felder (feld1, feld2) ausgeben (echo)

echo $daten['id'].$daten['pc_dos_spiel'].$daten['genre'].$daten['monat']
.$daten['jahr'].$daten['entwickler'].$daten['publisher'].$daten['pc_games'].$daten['power_play'];
}

oben definierst du die variable $row, unten nutzt du aber die undefinierte variable $daten...
btw würde ich zumindest der übersichtbarkeit das wie folgt ausgeben:

echo $daten['id']." -> ".$daten['pc_dos_spiel']." -> " usw
sonst isses alles ohne spaces zusammengequetscht

konsultier am besten mal die php.net manual oder www.selfphp.de D:

€:
ui, grade noch nen fehler entdeckt:

$sqlerg=mysql_query($sqlbef,$db);

und dann

while($row = mysql_fetch_array($result))

--> ersetz das $sqlerg mit $result und es funzt

du weist aber schon was variablen sind D:
 

ace753

Guest
Jetzt wird gar nichts mehr angezeigt, alles weiss.

Und wenn ich ."->". noch einfüge, kommen nur lauter -> am Bildschirm.





<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<?php
$host = "localhost";
$benutzer = "xxxxx";
$kenn = "xxxxx";

$db = mysql_connect($host,$benutzer,$kenn) OR die("Keine Verbindung hergestellt!");

mysql_select_db("xxxxx",$db) OR die("Datenbank nicht geöffnet");
$sqlbef="SELECT * FROM xxxxx";

$result=mysql_query($sqlbef,$db);

while($row = mysql_fetch_array($result))
{

//Felder (feld1, feld2) ausgeben (echo)

echo $daten["id"].$daten["pc_dos_spiel"].$daten['genre'].$daten['monat']
.$daten['jahr'].$daten['entwickler'].$daten['publisher'].$daten['pc_games'].$daten['power_play'];
}

mysql_close($db);

?>
</body>
</html>
 
Mitglied seit
12.01.2004
Beiträge
8.557
Reaktionen
0
Ort
Gießem
bitte?! hast du meinen post überhaupt richtig gelesen?!??!?!?!?!?!?!?!??!?!

wie es ohne wenn und aber perfekt funktioniert wurde schon mehrmals hier gepostet...

überleg dir dochmal

$row = mysql_fetch_array($result)

du speicherst hier etwas in eine variable NAMENS ROW

und plötzlich willst du ein paar zeilen weiter etwas aus einer der NIE ZUVOR DEKLARIERTEN variable DATEN ausgeben?!

und nein, ich werde das hier nicht richtig stellen. entweder du liest hier nochmal alles (und damit meine ich den ganzen thread) und fängst auch an zu verstehen was du überhaupt machst, oder du lässt es. sorry falls das hart klingen sollte, aber es ist nunmal so.
 
Oben