IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Enregistrement précédent mysql_fetch_array


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Par défaut Enregistrement précédent mysql_fetch_array

    Tout est dans le titre !!
    Je fais une boucle dans mon code mais lorsque je sort de cette boucle, un enregistrement est ignoré, il faudrait donc que je puisse retourner un enregistrement en arrière !!

    Je pense qu'il existe une technique avec mysql_fetch_array mais j'ai beau cherché trouve pô

    Merci d'avance pour votre aide

  2. #2
    Membre éclairé Avatar de guiyomh
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 328
    Par défaut
    Tout dépend comment tu fais ta boucle, montre un peu ton code !
    voici tout de même un exemple!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while($line = mysql_fetch_array($this->queryId)) {
    echo $line['champ1'];
    }

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Par défaut
    Ca ressemble à sa ... je sais pas si c'est très beau à voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    include($_SERVER["DOCUMENT_ROOT"]."/pierre/Include/mysql.inc.php");
    //Compte le nombre total de ligne à afficher pour le rowspan
    $sql = "SELECT COUNT(rea_id) as nb FROM realisations WHERE rea_cat = '1'";
    $requete = mysql_query($sql, $cnx) or die("Erreur dans $sql");
    $nb=mysql_fetch_array($requete);
     
    $sql = "SELECT rea_titre, rea_descr, rea_img, rea_cat, souscat_rea FROM realisations WHERE rea_cat = '1' ORDER BY souscat_rea";
    $requete = mysql_query($sql, $cnx) or die("Erreur dans $sql");
     
    ?>
    <table width="200px">
    <tr><th>Titre</th><th>Image</th><th>Description</th></tr> <?php
    $i = 0; //Compteur
    while ($escalierscombles = mysql_fetch_array($requete))
    {
    	?>
    	<tr><td> <?php echo $escalierscombles['rea_titre'] ?> </td>
    	<td>
    	<?php $precedent = $escalierscombles['souscat_rea'];
    	while ($escalierscombles['souscat_rea'] == $precedent)
    	{
    		?> <a href="/pierre/images/realisations/<?php echo $escalierscombles['rea_img'] ?>" rel="lightbox[roadtrip]">
    <img src="/pierre/images/realisations/<?php echo $escalierscombles['rea_img'] ?>" height="50" width="50" 
    OnMouseOver="javascript:document.getElementById('textareaDescr').value='<?php echo $escalierscombles['rea_descr'] ?> '"/>
    		<?php $escalierscombles = mysql_fetch_array($requete);
    	}
    	$escalierscombles = mysql_fetch_array($requete); ?>
    	</a></td>
    	<?php
    	if ($i == 0) //Si c'est le premier passage...
    	{
    		?> <td rowspan='<?php echo $nb['nb'] ?>'><textarea id="textareaDescr" readonly="readonly" value="description" rows=10 COLS=40>  </textarea> </td> <?php
    	}
    	?>
    	</tr>
    	<?php
    	$i+=1;//Incrémentation de $i
    }
    ?>
    </table>

  4. #4
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    tu peux peut être utiliser mysql_data_seek() ?
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Par défaut
    Désolé mais cela ne semble pas non plus fonctionner.

  6. #6
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Par contre tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($escalierscombles = mysql_fetch_array($requete))
    {
    //
    }
    donc tu parcours les enregistrements et a l'interieur de ce while tu fais 2 fois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $escalierscombles = mysql_fetch_array($requete);
    du coup a chaque passage de ton while tu avance de 3 enregistrements , est-ce normal ?
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Par défaut
    Oui car en fait il y a une notion de catégorie puis de sous catégorie.
    J'affiche dans un tableau des données :
    1 ligne = 1 catégorie
    Mais dans la colonne 'photo', je dois afficher toutes les photos appartenant à cette catégorie

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 294
    Par défaut
    Salut,

    En fait la réponse t'a déjà été donnée, à moins d'avoir mal compris ton problème, mais il me semble qu'avec mysql_data_seek() tu devrais pouvoir faire ce que tu veux. mysql_data_seek() permet de se placer ou l'on veut dans le resultat d'une requete sql et prend en parametre : mysql_data_seek($tarequete,$i) ou $i et le numero de ligne sur lequel tu veux te placer, une fois le mysql_data_seek() executer, le prochain mysql_fetch_row() ou mysql_fetch_array() va renvoyer les informations de la ligne pointer par le mysql_data_seek(). Voila j'espere avoir bien répondu à ta question.

  9. #9
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    Le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $escalierscombles = mysql_fetch_array($requete); ?>
    qui suit la deuxième boucle while est en trop alors ....
    essaie sans !
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  10. #10
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Par défaut
    Si je le supprime, ma boucle tourne indéfiniment
    Sinon j'ai essayer le mysql_data_seek mais sa marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $escalierscombles = mysql_data_seek($escalierscombles, $i);
    avec une incrémentation de $i

  11. #11
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 294
    Par défaut
    C'est que tu utilises mal le mysql_data_seek(), il permet uniquement de pointer une ligne de ton tableau mais pas de renvoyer les données. Il faut que tu fasses un mysql_data_seek() avec tes deux paramètres et ensuite que tu fasse un mysql_fetch_array(); si tu fais un mysql_data_seek($tarequete,$i) avec $i=3 il va aller se placer sur la 3eme ligne du tableau de ta requete mais c'est tout, la fonction ne renvoie rien, une fois que le pointeur est sur cette ligne, la tu fais un mysql_fetch_array pour avoir le contenu de la ligne pointer par le mysql_data_seek.

  12. #12
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: mysql_data_seek(): supplied argument is not a valid MySQL result resource in D:\Program Files\EasyPHP 2.0b1\www\pierre
    \utilisateur\realisations\escaliers&combles.php on line 43
    Si je remplace $i par un nombre au hasard, sa affiche toujours l'erreur.
    Le problème doit venir de l'autre paramètre ($escalierscombles).

  13. #13
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 294
    Par défaut
    Effectivement j'avais pas fais attention mais ton escaliercomble contient les données d'une ligne, dans le mysql_data_seek(), le premier paramètre est une requete (donc un ensemble de ligne), tu voudrais le faire apres ton while, tu as un moyen de connaître qu'elle ligne est ignorée? Mais bon normalement aucun enregistrement est ignoré.

  14. #14
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Par défaut
    Dans ma boucle au il sort de celle-ci car l'enregistrement pointé ne correspond plus au critère, a chaque fois que je sort de celle-ci, je suis donc 1 enregistrement trop loin.

  15. #15
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 294
    Par défaut
    Bon j'ai du mal à cerner ce que tu veux faire exactement, mais deja tu peux modifier ton code, tu as deux paramètre dans un mysql_query alors qu'un seul suffit,
    $requete = mysql_query($sql, $cnx) il faut enlever ta variable $cnx et puis faire un while ensuite fermer la balise php et mettre du code html, pas sur que sa marche, le mieux c'est de ne pas fermer ta balise php et de mettre des echo.

  16. #16
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    PierreBTSIG, va falloir bosser plus que çà si tu veux ton bts

    plus serieusement.

    peut-tu apporter plus de précision sur ce morceau de code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while ($escalierscombles['souscat_rea'] == $precedent)
    	{
    		?> <a href="/pierre/images/realisations/<?php echo 
    $escalierscombles['rea_img'] ?>" rel="lightbox[roadtrip]"><img src="/pierre
    /images/realisations/<?php echo $escalierscombles['rea_img'] ?>" height="50" 
    width="50" OnMouseOver="javascript:document.getElementById('textareaDescr').value='<?php echo $escalierscombles['rea_descr'] ?> '"/>
    		<?php $escalierscombles = mysql_fetch_array($requete);
    	}

    parce que personellement ca revient à faire :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <a href="/pierre/images/realisations/<?php echo $escalierscombles['rea_img'] 
    ?>" rel="lightbox[roadtrip]"><img src="/pierre/images/realisations/<?php echo
     $escalierscombles['rea_img'] ?>" height="50" width="50" 
    OnMouseOver="javascript:document.getElementById('textareaDescr').value=
    '<?php echo $escalierscombles['rea_descr'] ?> '"/>

  17. #17
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 89
    Par défaut
    Non car en fait je veut que sa donne un tableau avec chaque catégorie (une catégorie = une ligne) et que dans chaque ligne, à la colonne 'image', toutes les images de cette catégorie s'affichent. Je dois donc faire un boucle dans le <td> de la colonne image.

    Mais je crois qu'il y a beaucoup plus simple que ce que je suis en train de faire. Le problème c'est que mon site avance pas trop et que si je veut l'avoir fini pour la fin de mon stage je préfère travailler sur une autre partie en attendant. Mais continuer à proposer on va bien finir par y arriver !!

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/08/2006, 17h58
  2. Valeur par défault = Enregistrement précédent
    Par Aost dans le forum Access
    Réponses: 8
    Dernier message: 04/07/2006, 22h07
  3. Réponses: 4
    Dernier message: 23/06/2006, 13h29
  4. Affichage suivant enregistrement précédent
    Par cdumas dans le forum Access
    Réponses: 8
    Dernier message: 30/04/2006, 13h11
  5. Récuperer l'enregistrement précédent.
    Par zebiloute dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/04/2004, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo