Changer l'ordre d'affichage
t671
Messages postés
1638
Date d'inscription
Statut
Membre
Dernière intervention
-
t671 Messages postés 1638 Date d'inscription Statut Membre Dernière intervention -
t671 Messages postés 1638 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'affiche des photos (en php) suite à lecture de ma base.
Je voudrais modifier l'ordre d'affichage, sans avoir à intervenir directement sur la base.
J'ai une table alb_photos qui comporte comme champs : id (l'identifiant), titre_album, soustitre.
Et une table photos avec : idph (identifiant unique), idliaison (ce qui relie à l'id de la table précédente), numero (qui permettra l'ordre d'affichage), lien (qui mène à la photo dans un fichier).
J'affiche donc une série de photos, numérotées. Les numéros sont issus du champ (numero).
De là, je peux modifier le ou les numéros affichés, puis clique sur "Valider".
Et ..... ça marche pô !!!!! Mon champ "numero", dans ma table n'a pas changé ......
Merci de m'aider à débugger ..... :o)
J'affiche des photos (en php) suite à lecture de ma base.
Je voudrais modifier l'ordre d'affichage, sans avoir à intervenir directement sur la base.
J'ai une table alb_photos qui comporte comme champs : id (l'identifiant), titre_album, soustitre.
Et une table photos avec : idph (identifiant unique), idliaison (ce qui relie à l'id de la table précédente), numero (qui permettra l'ordre d'affichage), lien (qui mène à la photo dans un fichier).
J'affiche donc une série de photos, numérotées. Les numéros sont issus du champ (numero).
$id = $_GET["id"]; // issue après sélection de l'album photo à modifier l'ordre
$requete="SELECT alb_photos.id, alb_photos.titre_album, alb_photos.soustitre, photos.idph, photos.idliaison, photos.numero, photos.lien
FROM alb_photos LEFT JOIN photos ON alb_photos.id=photos.idliaison
WHERE id = '$id' ";
$result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() );
$idEncours = 0;
while($row = mysql_fetch_array($result))
{
if ($idEnCours = $row['id'])
{
echo '<form action="maj_ordre_photos.php?idph='. $row['idph'] .'">';
echo '<td><img border=0 height="50" src="' . $row['lien'] . '"><center>
<input name="numero" type="text" id="numero" value="'.$row['numero'] .'" size="1" maxlength="3"></center></td>'; }
else
{
echo '</tr></table></div>';
}
}
echo '<div class="centrer">';
echo '<input type="submit" value="Valider"><input type="button" name="lien" value="Annuler" onClick="self.location.href=\'aff_alb_photos.php\'">';
echo '<input type="reset" value="Effacer les Modifications">';
echo '</form>';
echo '</div>';
De là, je peux modifier le ou les numéros affichés, puis clique sur "Valider".
$host = 'localhost';
$user = '';
$pass = '';
$db = 'kot';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
$idph = $_POST["idph"];
$numero = $_POST["numero"];
$result=mysql_query("UPDATE photos SET numero='$numero' WHERE idph='$idph'");
Et ..... ça marche pô !!!!! Mon champ "numero", dans ma table n'a pas changé ......
Merci de m'aider à débugger ..... :o)
A voir également:
- Changer l'ordre d'affichage
- Changer dns - Guide
- Comment trier par ordre alphabétique sur excel - Guide
- Affichage double ecran - Guide
- Changer extension fichier - Guide
- Changer carte graphique - Guide
27 réponses
que dis-tu ????
"le ou les numéros affichés" !!!
je crois que j'ai compris!
si tu peux m'envoyer l'url de la page, ça me(te) faciliterais la tâche. Envoie-moi au moins tout le code html de la page avec la/les photos.
"le ou les numéros affichés" !!!
je crois que j'ai compris!
si tu peux m'envoyer l'url de la page, ça me(te) faciliterais la tâche. Envoie-moi au moins tout le code html de la page avec la/les photos.
Salut UgglyBoy,
En effet, je testais d'abord à changer le numéro d'1 photo, avant de tester le changement de numéro de plusieurs photos en même temps.
Alors j'affiche la page avec les différentes séries de photos incluant différents photos :
Je sélectionne "Changer l'ordre d'affichage des photos", ce qui m'affiche une page avec la série de photos choisie et ses photos :
Puis je modifie dans la base :
Pour les photos, tu prends n'importe quoi.
Et tout est en local. Je n'ai encore rien placé sur serveur.
En effet, je testais d'abord à changer le numéro d'1 photo, avant de tester le changement de numéro de plusieurs photos en même temps.
Alors j'affiche la page avec les différentes séries de photos incluant différents photos :
<?php
$host = 'localhost';
$user = '';
$pass = '';
$db = 'kot';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
//récupèration des enregistrements
$requete="SELECT alb_photos.id, alb_photos.titre_album, alb_photos.soustitre, photos.idph, photos.idliaison, photos.numero, photos.lien, photos.commentaire
FROM alb_photos LEFT JOIN photos ON alb_photos.id=photos.idliaison
ORDER BY alb_photos.id ASC";
$result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() );
$idEncours = 0;
while($row = mysql_fetch_array($result))
{
if( $idEnCours != $row['id'] )
{
echo '<center><table width="700px">';
echo '<tr>';
echo '<div class="modif">';
echo '<a href="modif_photo.php?mode=modif&id='.$row['id'].'">Modification titre et/ou sous-titre de l\'album photo</a><br>'; //ok
echo '<a href="ordonner_photos.php?mode=modif&id='.$row['id'].'">Changer l\'ordre d\'affichage des photos</a><br>';
echo '<a href="ajout_photo.php?mode=modif&id='.$row['id'].'">Ajout photo à cet album photo</a><br>'; //
echo '<a href="suppression_pj.php?mode=suppression&id='.$row['id'].'">Suppression photo à cet album photo</a><br>';
echo '<a href="supp_alb_photos.php?mode=suppression&id='.$row['id'].'">Suppression de l\'album photo</a>'; //ok
echo '</div></tr>';
echo '<div class="centrer">';
echo '<h2><u>'.$row['titre_album'].'</h2></u>';
echo '<h4><i>'.$row['soustitre'].'</i></h4>';
echo '<table><tr>';
}
if ($idEnCours = $row['id'])
{
echo '<td><a href = "photos.php?idph='.$row['idph']. ' "><img border=0 height="50" src="' . $row['lien'] . '"></a></td>';
}
else
{
echo '</tr></table></div></table></center>';
}
}
mysql_free_result($result);
mysqlclose;
exit;
?>
Je sélectionne "Changer l'ordre d'affichage des photos", ce qui m'affiche une page avec la série de photos choisie et ses photos :
<?php
$host = 'localhost';
$user = '';
$pass = '';
$db = 'kot';
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
$id = $_GET["id"];
//récupèration des enregistrements
$requete="SELECT alb_photos.id, alb_photos.titre_album, alb_photos.soustitre, photos.idph, photos.idliaison, photos.numero, photos.lien
FROM alb_photos LEFT JOIN photos ON alb_photos.id=photos.idliaison
WHERE id = '$id' ";
$result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() );
$idphEncours = 0;
while($row = mysql_fetch_array($result))
{
if( $idphEnCours != $row['idph'] )
{
echo '<div class="centrer">';
echo '<h2><u>'.$row['titre_album'].'</h2></u>';
echo '<h4><i>'.$row['soustitre'].'</i></h4>';
echo '<table><tr>';
}
if ($idphEnCours = $row['idph'])
{
echo '<form action="maj_ordre_photos.php?idph='. $row['idph'] .' & numero='. $row['numero'] .'" method="POST">';
echo '<input type=hidden name="idph" value="'.$row['idph'] .'">';
echo '<td><img border=0 height="50" src="' . $row['lien'] . '"><center>
<input name="numero" type="text" id="numero" value="'.$row['numero'] .'" size="1" maxlength="3"></center></td>';
}
else
{
echo '</tr></table></div>';
}
}
echo '<input type="submit" value="envoyer" />';
echo '</form>';
echo '</div>';
mysql_free_result($result);
mysqlclose;
exit;
?>
Puis je modifie dans la base :
$idph = $_POST['idph'];
$numero = $_POST['numero'];
$result=mysql_query("UPDATE photos SET numero='$numero' WHERE idph='$idph'");
mysql_close();
Pour les photos, tu prends n'importe quoi.
Et tout est en local. Je n'ai encore rien placé sur serveur.
tu ne m'as pas compris: affiche ta page web, affiche le codesource puis montre-le moi. Je pense que tu as plusieurs formulaires. Mais pour ça il faut que je voie ton HTML pas de php.
Tu peux aller là : http://scoubidouclub.free.fr/gestion/alb_photos/aff_alb_photos.php
Il n'y a que le premier album qui est actif (1° rectangle blanc).
Tu sélectionnes la ligne : "Changer l'ordre d'affichage des photos".
Tu changes un numéro, "envoyer", tu resélectionnes la ligne : "Changer l'ordre d'affichage des photos".
Tu verras si le numéro a changé .....
PS : peut-être pas très clair, mais je l'ai placé à l'arrache .....
Il n'y a que le premier album qui est actif (1° rectangle blanc).
Tu sélectionnes la ligne : "Changer l'ordre d'affichage des photos".
Tu changes un numéro, "envoyer", tu resélectionnes la ligne : "Changer l'ordre d'affichage des photos".
Tu verras si le numéro a changé .....
PS : peut-être pas très clair, mais je l'ai placé à l'arrache .....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mon ami, il y a tellement d'erreurs que je ne sais pas par où commencer... j'vais boire un coup, reprendre mes esprits et j'arrive.
la page que tu me "montre" n'a pas vraiment l'air de correspondre à ton php, mais bref. Dans cette page il n'y a pas de name="numero" donc comment veux-tu récupérer quoique ce soit avec $_POST['numero'] ?!?
Bon, c'est pas facile de t'aider !!! je te demande qqchose, et tu es pas foutu de me le donner. Donc la page sur laquelle je réfléchit depuis plusieurs jours c'est celle-là (http://scoubidouclub.free.fr/alb_photos/ordonner_photos.php?mode=modif&id=3) et non celle que tu m'indiques. Bref: elle pleine de fautes. La prochaine fois aies le réflexe de lire le code source (ctrl + U sous firefox) c'est là qu'on voit beaucoup de choses:
je met les retour à la ligne: c'est plus lisible.
1) quand tu ouvres une balise tu la refermes (<html></html>)
2) les balises ne se chevauchent pas, elles s'imbriquent (c'est faux: <h2><u>22222222222</h2></u>)
3) l'attribut id comme son nom le laisse entendre est unique, sinon c'est plus un id.
dans ta page tu ouvres trois (!) <form> !!? tu n'en refermes qu'un! Dans tout ces forms inutiles tu as 3 input name="numero" donc forcement on ne sait pas lequel php récuperera.
Conseils:
évite de démultiplier les <table>, les <form>, les <center> ... dans ton cas ça ne sert à rien.
tu veux utiliser une balise html, va jeter un coup d'œil ici: (http://www.w3.org/TR/html401/index/elements.html
et ici (http://www.w3.org/MarkUp/Guide/ un petit tuto pour se remettre les idées au clair.
<html>
<head>
<link rel="stylesheet" type="text/css" href="../scoubidouclub.css" />
</head>
<body>
<div class="centrer">
<h2><u>22222222222</h2></u>
<h4><i>22222222222</i></h4>
<table>
<tr>
<form action="maj_ordre_photos.php?idph=6 & numero=1" method="POST">
<input type=hidden name="idph" value="6">
<td>
<img border=0 height="50" src="photos_alb/Diapositive21.JPG">
<center>
<input name="numero" type="text" id="numero" value="1" size="1" maxlength="3">
</center>
</td>
<div class="centrer">
<h2><u>22222222222</h2></u>
<h4><i>22222222222</i></h4>
<table>
<tr>
<form action="maj_ordre_photos.php?idph=7 & numero=2" method="POST">
<input type=hidden name="idph" value="7">
<td>
<img border=0 height="50" src="photos_alb/Diapositive22.JPG">
<center>
<input name="numero" type="text" id="numero" value="2" size="1" maxlength="3">
</center>
</td>
<div class="centrer">
<h2><u>22222222222</h2></u>
<h4><i>22222222222</i></h4>
<table>
<tr>
<form action="maj_ordre_photos.php?idph=8 & numero=5" method="POST">
<input type=hidden name="idph" value="8">
<td>
<img border=0 height="50" src="photos_alb/Diapositive23.JPG">
<center>
<input name="numero" type="text" id="numero" value="5" size="1" maxlength="3">
</center>
</td>
<input type="submit" value="envoyer" />
</form>
</div>
je met les retour à la ligne: c'est plus lisible.
1) quand tu ouvres une balise tu la refermes (<html></html>)
2) les balises ne se chevauchent pas, elles s'imbriquent (c'est faux: <h2><u>22222222222</h2></u>)
3) l'attribut id comme son nom le laisse entendre est unique, sinon c'est plus un id.
dans ta page tu ouvres trois (!) <form> !!? tu n'en refermes qu'un! Dans tout ces forms inutiles tu as 3 input name="numero" donc forcement on ne sait pas lequel php récuperera.
Conseils:
évite de démultiplier les <table>, les <form>, les <center> ... dans ton cas ça ne sert à rien.
tu veux utiliser une balise html, va jeter un coup d'œil ici: (http://www.w3.org/TR/html401/index/elements.html
et ici (http://www.w3.org/MarkUp/Guide/ un petit tuto pour se remettre les idées au clair.