Neue Einträge via phpmyadmin werden nicht beachtet

Lofwyr

Grünschnabel
hoi

ich hab folgendes problem

in meiner Datenbank habe ich unteranderem 2 Tabellen 'datum' und 'termine'

in der Tabelle 'datum' gibt es : 'datum' typ date und 'datumID' typ int
Tabelle 'termine' : 'terminID' und 'datumID' typ int sowie
'info' typ text

auf der Startseite wird(soll) aus diesen beiden Tabellen die drei nächsten Termine angezeigt werden
was eigentlich bisher auch klappte
leider werden Termine die ich nun über phpmyadmin eintrage nicht beachtet, sondern nur Termine die bei Erstellung der Datenbank schon drin waren

ich hab überhaupt keine Ahnung wo ich anfangen soll bzw wo das Problem liegen soll, da mit der Funktion die alle Termine anzeigen soll, auch die neuen angezeigt werden

vielen dank schon mal

hier der code


PHP:
function termine()
{
$i=0;
$sql = "SELECT terminID  FROM termine, datum WHERE datum.datum >= CURDATE() AND termine.datumID = datum.datumID  LIMIT 3";
$termine = mysql_query($sql);
if($termine){
 while($termine_row = mysql_fetch_array($termine)) {
 $termine_erg[$i] = $termine_row[0];
 $termin_info = mysql_query("SELECT info FROM termine WHERE terminID = $termine_erg[$i] ");
 $datum = mysql_query("SELECT datum FROM datum, termine WHERE terminID = $termine_erg[$i] AND termine.datumID = datum.datumID");
  if($termin_info && $datum){
      while($termin_row = mysql_fetch_array($termin_info)) {
       $lang = strlen($termin_row[0]);
         if($lang>=30){
               $leer = strpos($termin_row[0]," ",30);
               $termin_row[0] = substr($termin_row[0],0,$leer);}
               $datum_row = mysql_fetch_array($datum);
               $timestamp = strtotime($datum_row[0]);
               $datum = date("d.m.Y",$timestamp);
               echo "<li><a href=\"termine.php?IDtermin=$termine_erg[$i]\">$datum<br>$termin_row[0]</a></li>";
               //echo "<br>";
         }
      }
  }
 $i++;
 }

}
 
Kann es vielleicht sein, das die Tabelle nicht richtig konfiguriert ist
Da ja als erstes die IDs ausgelesen werden, könnte es doch sein, das gar keine IDs über PHPMyAdmin übergeben wurden (AUTO_INCREMENT oder PRIMARY KEY nicht gesetzt). Oder das Datum wird nicht mit übergeben.
 
hoi

also in der Tabelle 'termine' sind 'terminID' und 'datumID' zusammen der Schlüssel, das es vorkommt das mehere Termine an einem Tag sind
'terminID' ist AUTO_INCREMENT

wenn die Tabelle aber nicht richtig konfigurierst ist, müßten doch auch bei der Ausgabe aller Termine Probleme auftreten, oder!?

Oder das Datum wird nicht mit übergeben.
wie genau meinst du das?
das Datum trage ich ja manuell ein
 
-also in der Tabelle 'termine' sind 'terminID' und 'datumID' zusammen der
-Schlüssel, das es vorkommt das mehere Termine an einem Tag sind
-'terminID' ist AUTO_INCREMENT

ist die ID bei 'datum' denn auch auto_increment? Ich meine, es könnte ja sein, dass beim anlegen der tabelle die IDs noch im Script mit übergeben wurden. Und wenn ID bei Datum dann nicht auto_increment ist, wird ja immer 0 eingetragen.



-wie genau meinst du das?
-das Datum trage ich ja manuell ein

dachte, das datum wird automatisch übergeben.
 
Original geschrieben von boelkstoff
3 Select abfragen ist auch etwas zu viel.
versuch mal auf eine zu beschränken

das der quellcode nicht optimal ist, war mir schon klar
bin ja auch nen anfänger

aber denkst du das wird das problem lösen?

@rootssw

die id bei 'datum' ist auch auto_inc
 
gib die sql-abfragen doch mal in phpmyadmin ein. dann kannst du ja sehen, welche nicht funktioniert. und welche fehler passieren.
Vielleicht solltest du auch mal zu den if-abfragen else-teile schreiben. z. b. sowas wie
echo "Die Abfrage $sql war nicht erfolgreich";
Dann solltest du wenigstens schon einmal sehen, wo der fehler liegt.
 
hoi

hab den code jetzt vereinfacht und auch nur noch eine sql-abfrage - ist auch gleich übersichtlicher
nur leider immer noch nicht funktionstüchtig so wie ich es will
also wenn einer einen ansatz hat, wo das problem liegen könnte

@ rootssw
in phpmyadmin gibt es keine Fehlermeldung
hier brauche ich keine else-Anweisung, weil wenn ich nicht in die erste if komme habe ich kein Ergebnis bei der Abfrage und bei der zweiten if gibt es keine Ausgabe


PHP:
function termine()
{

$sql = "SELECT info, datum, terminID  FROM termine, datum WHERE datum.datum >= CURDATE() AND termine.datumID = datum.datumID  LIMIT 3";
$termine = mysql_query($sql);

 if($termine){

     while($termine_row = mysql_fetch_array($termine)) {
            $lang = strlen($termine_row['info']);

                    if($lang>=30){  //if-schleife  um den string auf ~30 zeichen zu kürzen
                       $leer = strpos($termine_row['info']," ",30); // erste leerzeichen nach 30 zeichen
                       $termine_row['info'] = substr($termine_row['info'],0,$leer); // wird an der stelle $leer geschnitten
                    }//if($lang)

                       $timestamp = strtotime($termine_row['datum']); //datum in timestamp wandeln
                       $datum = date("d.m.Y",$timestamp); // timestamp in europ. datum
                       $id = $termine_row['terminID'];
                       echo "<li><a href=\"termine.php?IDtermin=$id\">";
                       echo $datum;
                       echo "<br>";
                       echo $termine_row['info'];
                       echo "</a></li>";
     }//while($termine_row)

     }//if($termine)
 }//function

edit:

ich denke mal da läuft was bei der manuellen eingabe falsch oder!? kann ich mir nicht anders erklären :(
 
Zuletzt bearbeitet:
hoi

habs :) puh
mußte noch ORDER BY datum einfügen, weil die Termine in der Tabelle nicht nach Datum sotiert sind

PHP:
$sql = "SELECT info, datum, terminID  FROM termine, datum WHERE datum.datum >= CURDATE() AND termine.datumID = datum.datumID ORDER BY datum LIMIT 3";
 
Zurück