Utilisation de PHP pour vérifier le premier et le dernier enregistrement dans la base de données

  • CStrauss
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Mar 23, 2006
  • Messages: 122
  • Loc: St. Louis MO. USA
  • Status: Offline

Message Juin 5th, 2009, 10:36 am

Bonjour,

Im afficher mes enregistrements de base de données mysql et 2 liens on va à l'enregistrement suivant et on va à l'enregistrement précédent.

Mon problème est d'essayer de savoir quand son record lors de la dernière et que vous cliquez sur suivant, il remonte au premier enregistrement, et vice versa pour les précédentes. J'ai pu compter pour savoir combien de dossiers j'ai eu dans ma base de données mais ne peut pas trouver la meilleure façon d'utiliser ce numéro de le faire. Principalement car si i go record ID que les documents sont supprimés, ce nombre aura des trous dans ce sens si id ont 1,2,3 et de supprimer l'id de commande sera 1,3.

Vous ne savez pas s'il existe une fonction php mysql ou d'utiliser à cette fin, si quelqu'un a une idée s'il vous plaît faites le moi savoir im au point de plus de réflexion et tout semble maintenant bouillie.

Merci
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Juin 5th, 2009, 10:36 am

  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Juin 5th, 2009, 10:50 am

Pouvez-vous partager le morceau de code thats vous inquiète?
I'd love to change the world, but they won't give me the source code.
  • CStrauss
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Mar 23, 2006
  • Messages: 122
  • Loc: St. Louis MO. USA
  • Status: Offline

Message Juin 5th, 2009, 12:01 pm

cherchez bien au fond de faire quelque chose comme ça.

en utilisant des instructions if pour vérifier le nombre total d'enregistrements de données et vérifier pour voir si le record actuel est sur le dernier enregistrement de la base de données et si oui, si vous cliquez sur suivant vous amène au premier enregistrement.

Alors si votre sur le premier enregistrement de la base de données et cliquez sur le lien précédent, il vous prend pour le dernier enregistrement. Pour autant que je code avait quelque chose comme ceci

Code: [ Select ]
<a href="somepage.php?rec_id=<?=$rec_id + 1;?>">Next</a>

<a href="somepage.php?rec_id=<?=$rec_id - 1;?>">Previous</a>
  1. <a href="somepage.php?rec_id=<?=$rec_id + 1;?>">Next</a>
  2. <a href="somepage.php?rec_id=<?=$rec_id - 1;?>">Previous</a>


Le problème que je trouve avec ce que, si les enregistrements sont supprimés alors les erreurs seront générées pour exemple que j'ai rec_id 1, 2, 3 et je supprime 2 et essayez de naviguer à partir du 1er n'y aura pas de + 1 à trouver en fonction de la liaison.

Également l'autre problème quand il est d'enregistrer 3 et j'ai frappé suivante au lieu de revenir à 1 i génère des erreurs.

Donc, me demandais si il existe un moyen via la fonction ou quelque chose pour vérifier si vous atteignez le dernier enregistrement ou premier enregistrement d'un jeu d'enregistrements et de passer à l'enregistrement apporiate.
  • UPSGuy
  • Lurker ಠ_ಠ
  • Web Master
  • Avatar de l’utilisateur
  • Inscription: Juil 25, 2005
  • Messages: 2735
  • Loc: Nashville, TN
  • Status: Offline

Message Juin 5th, 2009, 12:47 pm

Ahh, ok. Cela aide un peu.

Cela suppose que le youve a obtenu une variable appelée $ count tenant le compte de résultats (vous pouvez également utiliser une fonction comme compter sur un tableau ou theres probablement une fonction de retourner la taille de vos résultats d'objet).

Code: [ Select ]
<a href="somepage.php?rec_id=<? echo ($rec_id == $count) ? 0 : $rec_id + 1; ?>">Next</a>
<a href="somepage.php?rec_id=<? echo ($rec_id == 0) ? $count : $rec_id - 1; ?>">Previous</a>
  1. <a href="somepage.php?rec_id=<? echo ($rec_id == $count) ? 0 : $rec_id + 1; ?>">Next</a>
  2. <a href="somepage.php?rec_id=<? echo ($rec_id == 0) ? $count : $rec_id - 1; ?>">Previous</a>


Cela suppose également que rec_id $ n'est pas une base zéro de référence.
I'd love to change the world, but they won't give me the source code.
  • casablanca
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Mai 29, 2007
  • Messages: 481
  • Status: Offline

Message Juin 6th, 2009, 6:18 am

En plus de ce qui UPSGuy dit, heres d'autres infos qui pourraient aider.

Vous pouvez obtenir le nombre total d'enregistrements avec cette requête SQL:
Code: [ Select ]
SELECT COUNT(*) FROM table_name

Pour surmonter le problème des enregistrements supprimés, au lieu d'utiliser $ rec_id que le document lui-même ID, vous pouvez laisser le base de données prennent soin de la numérotation des dossiers en utilisant la clause LIMIT, comme ceci:
Code: [ Select ]
SELECT * FROM table_name LIMIT $rec_id, 1
No Strings Attached: A JavaScript graphics demo.
  • CStrauss
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Mar 23, 2006
  • Messages: 122
  • Loc: St. Louis MO. USA
  • Status: Offline

Message Juin 7th, 2009, 9:43 am

Tout d'abord merci les gars pour votre contribution à mon problème, mais Im toujours aux prises avec deux problèmes. Dans ma base de données nous avons à dessein un fossé entre mon ID pour simuler un enregistrement supprimé et l'interruption entre le numéro de séquence. Cela provoque toujours des erreurs lorsque vous passez du record de 16, puis l'id enregistrement suivant est de 14, principalement parce que son dossier à la recherche d'ID 15 qui n'existe pas.

L'autre question Im ayant encore quand Im sur le dernier enregistrement et appuyez ensuite une fenêtre d'erreur apparaît parce que de revenir en arrière pour enregistrer le premier écran à la recherche du prochain disque id dans la séquence en cours et même quand Im sur le premier enregistrement affiché et cliquez sur Précédent résultats même erreur.

Voici le plus mon code proprement dit, ses images affichant des informations des images étant stockées dans la base de données.


Code: [ Select ]
    // Get Data from database
<?
    include $_SERVER['DOCUMENT_ROOT'].'/common.php';

    $num_records = @mysql_query("SELECT COUNT(*) FROM gallery") or die (mysql_error());

    $total = mysql_result($num_records,0,0);

    $img_id = $_GET['img_id'];

    $page = $_GET['page'];

    $sql = mysql_query("SELECT * FROM gallery WHERE img_id= '$img_id'");

    if(!$sql){
        echo "Error With MySQL Query: ".mysql_error();
    }

    $row = mysql_fetch_assoc($sql);

    stripslashes(extract($row));

?>
        // html and stuff to display data information is here but not typing it all out lol.
            

        // My next previous back links
        <a href="/gallery_view.php?img_id=<?= ($img_id == 0) ? $count : $img_id - 1; ?>&page=<?=$page;?>">Next</a>
        <a href="/gallery.php?page=<?=$page;?>">go back</a>
        <a href="gallery_view.php?img_id=<?= ($img_id == $total) ? 0 : $img_id + 1; ?>&page=<?=$page;?>">Previous</a>
  1.     // Get Data from database
  2. <?
  3.     include $_SERVER['DOCUMENT_ROOT'].'/common.php';
  4.     $num_records = @mysql_query("SELECT COUNT(*) FROM gallery") or die (mysql_error());
  5.     $total = mysql_result($num_records,0,0);
  6.     $img_id = $_GET['img_id'];
  7.     $page = $_GET['page'];
  8.     $sql = mysql_query("SELECT * FROM gallery WHERE img_id= '$img_id'");
  9.     if(!$sql){
  10.         echo "Error With MySQL Query: ".mysql_error();
  11.     }
  12.     $row = mysql_fetch_assoc($sql);
  13.     stripslashes(extract($row));
  14. ?>
  15.         // html and stuff to display data information is here but not typing it all out lol.
  16.             
  17.         // My next previous back links
  18.         <a href="/gallery_view.php?img_id=<?= ($img_id == 0) ? $count : $img_id - 1; ?>&page=<?=$page;?>">Next</a>
  19.         <a href="/gallery.php?page=<?=$page;?>">go back</a>
  20.         <a href="gallery_view.php?img_id=<?= ($img_id == $total) ? 0 : $img_id + 1; ?>&page=<?=$page;?>">Previous</a>


J'ai inversé le code de UPSGUY comme vous pouvez le voir parce que mes images sont affichées par ordre décroissant (du dernier enregistrement au premier) thats la seule modification que j'ai fait à la sienne.

J'ai essayé Restreindre l'utilisation Casablancas être manipulées enregistrements effacés et aller erreurs encore dit essentiellement variables non définies des éléments du tableau de sa tentative de récupération.

Vous ne savez pas s'il ya un Soultions ou autre chose, vous pouvez voir d'aider, mais s'il vous plaît, si tant de poste.

Merci encore pour votre aide, m'ont acquis de son dans la bonne direction

Afficher de l'information

  • Total des messages de ce sujet: 6 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 111 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC