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   -
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).

$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:

27 réponses

UgglyBoy Messages postés 440 Statut Membre 64
 
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.
0
t671 Messages postés 1638 Date d'inscription   Statut Membre Dernière intervention   11
 
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 :

<?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.
0
UgglyBoy Messages postés 440 Statut Membre 64
 
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.
0
t671 Messages postés 1638 Date d'inscription   Statut Membre Dernière intervention   11
 
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 .....
0
UgglyBoy Messages postés 440 Statut Membre 64
 
non, je ne peux y aller: "401 Authorization Required"...
0
t671 Messages postés 1638 Date d'inscription   Statut Membre Dernière intervention   11
 
Désolé, petite erreur : http://scoubidouclub.free.fr/alb_photos/aff_alb_photos.php
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
UgglyBoy Messages postés 440 Statut Membre 64
 
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.
0
UgglyBoy Messages postés 440 Statut Membre 64
 
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'] ?!?
0
UgglyBoy Messages postés 440 Statut Membre 64
 
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:
<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.
0
t671 Messages postés 1638 Date d'inscription   Statut Membre Dernière intervention   11
 
Oui ben je reprendrais tout à zéro un peu plus tard, car à force de tester et d'y apporter des mofifs par ci par là, je ne sais plus où j'en suis ...... :((
0