PHP MYSQL Abfrage

Homepages, CMS, Templates, Web Based Programming, Webhosting, Gameserver

Moderatoren: coolmann, chillmensch

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

PHP MYSQL Abfrage

Beitragvon darkeye » 01.02.2010, 16:11

Hallo alle miteinander,

ich hab das problem, dass bei folgendem code mir weder fehlermeldung noch ergbnisse angezeigt werden.
Kann mir jemand sagen warum, hab ich mich vertippt?
Ich habe zum Test 2 unterschiedliche formen der Ausgabe benutzt.

Danke für die Antwort!

Code: Alles auswählen

     
<?php
mysql_connect('mysql.hoster.de','benutzer','password') or die ("Die Verbindung zur Datenbank konnte nicht hergestellt werden.<br>");
mysql_select_db("dbname") or die ("Die Datenbank konnte nicht initialisiert werden. Bitte kontaktieren Sie den Webmaster oder versuchen Sie es später noch einmal.<br>");

$result = mysql_query("SELECT * FROM publikationen");
$row = mysql_fetch_array($result);

       echo $row->bearbeiter;
                 $row['bearbeiter'];
      
?>
Bild

Benutzeravatar
schmidtsmikey
Site Admin
Beiträge: 8969
Registriert: 08.12.2003, 21:50
Wohnort: Hamburg
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon schmidtsmikey » 01.02.2010, 17:55

Lies Dir mit var_dump(); den Inhalt des Arrays aus. Dann siehst Du die Array-Objekte, auf die du zugreifen kannst. Ich lese mehrere Datensätze mit folgendem Konstrukt aus:

Code: Alles auswählen

$sql = " SELECT * FROM bla";
$result = mysql_query($sql) OR die(mysql_error());

while($row = mysql_fetch_assoc($result)) {
   echo $row['name'];
}

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon darkeye » 01.02.2010, 18:18

Danke,
ich kann die erste zeile ohne Probleme auslesen.
nach deiner Funktion läuft es, aber warum nicht "normal"?
Zuletzt geändert von darkeye am 01.02.2010, 18:55, insgesamt 1-mal geändert.
Bild

Benutzeravatar
schmidtsmikey
Site Admin
Beiträge: 8969
Registriert: 08.12.2003, 21:50
Wohnort: Hamburg
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon schmidtsmikey » 01.02.2010, 18:52

Deswegen mein Konstrukt: da wird Zeile für Zeile aus dem SQL-Query ausgelesen bzw. ausgewertet. Daher die While-Schleife...

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon darkeye » 01.02.2010, 19:29

Ja, das weiss ich.
aber warum gehts nicht mit mysql_fetch_array?
Bild

Benutzeravatar
schmidtsmikey
Site Admin
Beiträge: 8969
Registriert: 08.12.2003, 21:50
Wohnort: Hamburg
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon schmidtsmikey » 02.02.2010, 17:39

Hast Du Dir mal mit var_dump(); das Array angeschaut? Dann weißt Du, wie Du an die Inhalte dran kommst.

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon darkeye » 03.02.2010, 23:55

Dank deiner Hilfe ;-) bin ich jetzt bei der abfrage anweisung selber.
Sie soll mathematisch sinngemäß so aussehen:

Code: Alles auswählen

$query = select * from tabelle where ( (typ=1) AND (arg1 LIKE %xyz% OR arg2 LIKE %xyz% OR arg3 LIKE %xyz%))

Nun glaube ich aber nicht, dass dies die richtige sql syntax ist.

Die Abfrage der argumente ohne typ läuft schon. Nun halt die Frage, wie ich die Argumente auf ihre Typzugehörigkeit prüfen kann.

Kannst du mir sagen, welches die richtige ist? Mein Buch ist da nicht sehr ergiebig.
Bild

Benutzeravatar
schmidtsmikey
Site Admin
Beiträge: 8969
Registriert: 08.12.2003, 21:50
Wohnort: Hamburg
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon schmidtsmikey » 04.02.2010, 16:59

Kannst Du die Befehle über MySQL direkt abfeuern? Das mache ich immer: zuerst Befehl in MYSQL, dann den Query mit PHP-Code beschmücken...

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon darkeye » 04.02.2010, 23:53

Hab ich versucht, nur entweder mach ich was falsch. oder er will nicht und interpretiert das anders.
Er nimmt das so:
(tyP=1 AND Arg1 LIKE %xzy%) OR arg2 LIKE %xyz% ...
Bild

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon darkeye » 07.02.2010, 10:24

*UP*
Bild

Benutzeravatar
-AB-
Beiträge: 1610
Registriert: 22.04.2005, 21:45
Wohnort: Liverpool
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon -AB- » 07.02.2010, 12:10

hm, sprich: der AND operator hat höhere priorität als der OR operator? dem sollten die klammern doch eigentlich abhelfen oder? SQL ist bei mir jetzt auch paar jahre her....

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon darkeye » 09.02.2010, 10:04

ich hab es mittlerweile hinbekommen... danke euch.
Noch eine weitere eher logische Frage.

Ich habe 4 Typen. Mann kann entweder einen, 2,3 oder alle auswählen. und je nachdem soll die Abfrage gemacht werden. Hat jemand ne idee wie ich den großen Aufwand verringern kann?

Ich habe bis jetzt den Typen werte von 1-4 zugeordnet und selbige addiert in eine variable geschrieben.
Nun hab ich aber statistisch gesehen immer noch einige viele fälle.
Gibt es da eine Abkürzung, statt alle add. typwerte mit if oder switch abzufragen?
Bild

Benutzeravatar
schmidtsmikey
Site Admin
Beiträge: 8969
Registriert: 08.12.2003, 21:50
Wohnort: Hamburg
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon schmidtsmikey » 09.02.2010, 17:33

Vielleicht ist das ein Denkanstoß:

- Du erstellst eine weitere Tabelle mit den Typen
- in der Ursprünglichen Tabellen schreibst Du in ein Feld die Werte rein. Bsp. 1,3,4
- Dieses Feld kannst Du dann auswerten

Der Vorteil ist: durch die zusätzliche Tabelle kannst Du die WErte bequem erweitern.

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon darkeye » 12.02.2010, 13:48

Danke für deine Anregung,
aber ich geb zu - so richtig verstanden, was du genau meinst bzw. wie mich das weiterbringen soll, hab ich noch nicht.
Kannst du das vll nochmal genauer erklären?
Danke im Voraus.
Bild

Benutzeravatar
schmidtsmikey
Site Admin
Beiträge: 8969
Registriert: 08.12.2003, 21:50
Wohnort: Hamburg
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon schmidtsmikey » 12.02.2010, 16:07

Tabelle krankheiten (Haupttabelle)

Code: Alles auswählen

id     krankheit    symptome
==========================
1      grippe        2,3,4
2      burn out      1,5
3      masern        1,3


Zusatztabelle symptome

Code: Alles auswählen

id   symptom
==============
1    Ausschlag
2    Husten
3    Fieber
4    Durchfall
5    Müdigkeit
6    Gliederschmerzen

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon darkeye » 19.05.2010, 22:31

nachdem ich nun längere zeit nachgedacht habe bin ich zu keinem zufriedenstellenden Ergebnis gekommen.
kannst du mir nur mal kurz eine query zeile schreiben?
Bild

Benutzeravatar
schmidtsmikey
Site Admin
Beiträge: 8969
Registriert: 08.12.2003, 21:50
Wohnort: Hamburg
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon schmidtsmikey » 20.05.2010, 15:23

Hmm, wie sieht denn Dein Query aus? Was funzt denn nicht?

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon darkeye » 20.05.2010, 19:18

So siehts aus:
Ich weis du hast mir 2 Tabellen vorgeschlagen, hab aber darin keine Lösung bzw. keinen Ansatzpunkt gefunden

Code: Alles auswählen

<form method="post" action="<? echo ($_SERVER['PHP_SELF']); ?>">

         <input type="hidden" name="page" value=<?php echo($_REQUEST['page']); ?>>

         <p><b>Anzeige anpassen:</b>
         <input type="text" id="eingabe" name="eingabe"><label for="eingabe">&nbsp;Suchen</label>
         <br />
         <br />
         <input type="checkbox" id="typ1" name="typ1" value="1" ><label for="typ1">&nbsp;Publikationen</label>
         <br />
         <input type="checkbox" id="typ3" name="typ3" value="3" ><label for="typ3">&nbsp;Zeitschriften/Zeitungen</label>
         <br />
         <input type="checkbox" id="typ4" name="typ4" value="4" ><label for="typ4">&nbsp;Internetseiten (Bund, Länder, Parteien,
Stiftungen etc.)</label>
         <br />
         <input type="checkbox" id="typ41" name="typ41" value="41" ><label for="typ41">&nbsp;Internetseiten (Suchmaschinen, Politische
Bildungszentralen, Kataloge)</label>
         <br />
         <br />
         <input type="submit" value="Suchen" name="submit" style="font-size: 0.9em"></form> 

<?php

$typ = $_POST["typ1"] + $_POST["typ3"] + $_POST["typ4"] + $_POST["typ41"];
$typ1 = $_POST["typ1"];
$typ3 = $_POST["typ3"];
$typ4 = $_POST["typ4"];
$typ41 = $_POST["typ41"];
$eingabe=$_POST["eingabe"];
echo $typ1;
if( (strlen($eingabe) == 0) && ($typ==0) ){
echo "Bitte geben Sie einen Suchbegriff ein!";
break;
}
echo '<table border="solid 1px black" width="99%">
<tbody>
<tr>
<td><b>Nr.</b></td>
<td><b>Autor/Herausgeber</b></td>
<td><b>Titel</b></td>
<td><b>Kurzbeschreibung</b></td>
<td><b>Jahr</b></td>
<td><b>Typ</b></td>
<tr>';


switch($typ){
   case 0:
   $query = "SELECT * FROM publikationen WHERE (autor_hrsg = '%".$eingabe."%' or titel LIKE '%".$eingabe."%' or inhalt_kurzbeschreibung LIKE '%".$eingabe."%')";
   break;

   case 1:
   $query = "SELECT * FROM publikationen WHERE ((autor_hrsg LIKE '%".$eingabe."%' or titel LIKE '%".$eingabe."%' or inhalt_kurzbeschreibung LIKE '%".$eingabe."%') and typ = 1)";
   break;

   case 3:
   $query = "SELECT * FROM publikationen WHERE ((autor_hrsg LIKE '%".$eingabe."%' or titel LIKE '%".$eingabe."%' or inhalt_kurzbeschreibung LIKE '%".$eingabe."%') and typ = 3)";
   break;

   case 4:
   $query = "SELECT * FROM publikationen WHERE ((autor_hrsg LIKE '%".$eingabe."%' or titel LIKE '%".$eingabe."%' or inhalt_kurzbeschreibung LIKE '%".$eingabe."%') and typ = 4)";
   break;

   case 41:
   $query = "SELECT * FROM publikationen WHERE ((autor_hrsg LIKE '%".$eingabe."%' or titel LIKE '%".$eingabe."%' or inhalt_kurzbeschreibung LIKE '%".$eingabe."%') and typ = 41)";
   break;

   case 42:
   $query = "SELECT * FROM publikationen WHERE ((autor_hrsg LIKE '%".$eingabe."%' or titel LIKE '%".$eingabe."%' or inhalt_kurzbeschreibung LIKE '%".$eingabe."%') and (typ = 41 or typ = 1))";
   break;
}
Bild

Benutzeravatar
schmidtsmikey
Site Admin
Beiträge: 8969
Registriert: 08.12.2003, 21:50
Wohnort: Hamburg
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon schmidtsmikey » 22.05.2010, 08:05

ich habe es auch lange nicht mehr gemacht, aber ich weiß, dass es mit dem Datentyp SET bzw. ENUM umsetzbar ist.

darkeye
Beiträge: 165
Registriert: 18.06.2008, 09:06
Wohnort: Chemnitz
Kontaktdaten:

Re: PHP MYSQL Abfrage

Beitragvon darkeye » 24.05.2010, 11:10

Bin jetzt soweit gekommen...
Funktioniert alles auch schön :-)

Code: Alles auswählen

$query = "SELECT * FROM publikationen WHERE ((autor_hrsg LIKE '%".$eingabe."%' or titel LIKE '%".$eingabe."%' or inhalt_kurzbeschreibung LIKE '%".$eingabe."%') and FIND_IN_SET(typ,'$typ1,$typ3,$typ4,$typ41'))";


Hast du (oder wer anders) noch irgendwelche Anmerkungen?
Bild


Zurück zu „Webseiten, Webprogrammierung & Domains“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste