Changer l'ordre d'affichage

Fermé
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 15 déc. 2009 à 21:53
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 20 déc. 2009 à 12:46
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)

27 réponses

UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
15 déc. 2009 à 22:01
demande l'affichage de l'erreur de ta dernière requête (UPDATE photos ...)

et est-ce que le champs "numero" est UNIQUE ou PRIMARY ?
1
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
16 déc. 2009 à 08:45
Bonjour UgglyBoy,

Je ne peux pour l'instant afficher l'erreur de la dernière requête, car je ne suis pas chez moi !!!!

Par contre, le champs "numero" est enregistré dans la bd sans particularité (ni unique, ni primary).

Si, dans le 2° script, je fais un echo de idph, je n'ai rien !!! ??? Si je fais un echo de numero, j'ai le numéro qui est enregistré dans la base et non celui que j'ai remplacé dans la saisie .....
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
16 déc. 2009 à 13:37
Prend ton problème à reculons:
va dans phpMyAdmin et
fait ta requête (UPDATE...) (si idph est un integer, alors les guillemets ne sont peut-être pas souhaitables)
si la requête passe, alors elle est structurellement correcte.
en php, essaie d'afficher le dernier $result, s'il ne contient pas de false, alors le problème est en amont, etc...
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
16 déc. 2009 à 17:35
Bonjour,

Je suppose que mon problème vient d'ici :

echo '<form action="maj_ordre_photos.php?idph='. $row['idph'] .'">';
echo "<input type=hidden name=\"idph\" value=$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>';


Car dans mon script de mise à jour, si je teste les variables réceptionnées, je ne reçoit pas idph, et pour le numero, je n'ai que celui de la dernière image affichée.
Et comme je ne maitrise pas trop bien les tableaux (Array) ..... :o(
0

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

Posez votre question
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
16 déc. 2009 à 21:14
lorsque tu fait ta requête sous phpMyAdmin est-ce que ça marche? est-ce que ça change le num?
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
17 déc. 2009 à 09:49
Bonjour,

Comment veux-tu que ma requête fonctionne sous PhpMyadmin, puisque je doit d'abord changer le numéro de l'image sur une page qui est affichée, puis transmettre les variables modifiées pour écriture dans la base.

Déjà, le passage des variabbles modifiées n'est pas correct .....
J'ai modifié ainsi, mais c'est pas super .....

echo '<FORM ACTION="maj_ordre_photos.php?idph='. $row['idph'] .' & numero='.$row['numero'] .' " METHOD="POST" value="envoyer" name="soumettre">';
echo '<td><a href = "maj_ordre_photos.php?idph='. $row['idph'] .' & numero='.$row['numero'] .' "><img border=0 height="50" src="' . $row['lien'] . '"><center>
          <INPUT type=text name="numero" id="numero" value="'.$row['numero'] .'" size="1" maxlength="3"></center></a></td>';


Là, je ne récupère que l'identifiant et le numéro de la première image, et non l'identifiant et le numéro de l'image à modifier :

$idph = $_GET["idph"];
    $numero = $_GET["numero"];
echo '<pre>'; print_r($_GET); echo '</pre>'; // visualiser les variables réceptionnées
exit;
    $result=mysql_query("UPDATE photos SET numero='$numero' WHERE idph='$idph'");


..... ??????????
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
17 déc. 2009 à 13:30
OKOKOKOKOKO........ on se calme..... je lis ce que tu m'as écrit. Et en attendant toi tu exécute dans phpmyadmin ceci:
UPDATE photos SET numero=5 WHERE idph=9

évidement tu remplace 5 par autre chose si c'est déjà 5 à l'idph 9... OK? le but est simplement de voir si tu peux changer la valeur de "numero".
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
17 déc. 2009 à 13:39
suite...
probleme dans ton formulaire html:
il est en post ou en get? method="get" (je te conseille) et puis ton action="" est mal écrit:
<form action="maj_ordre_photos.php" method="get">
<input name="numero" type="text" id="numero" value="'.$row['numero'] .'" size="1" maxlength="3" />
<input type="submit" value="envoyer" />
</form>

donc on aura une variable $_GET['numero'] qui sera utiliser en php
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
17 déc. 2009 à 14:24
Pour la requête UPDATE dans PhpMyadmin, ça fonctionne !

Mais pour le script, c'est pas mieux ..... Là, je ne récupère rien !!!!!

echo '<form action="maj_ordre_photos.php?idph='. $row['idph'] .' & numero='. $row['numero'] .'" method="get">';
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" />';
echo '<input type="submit" value="envoyer" />';
echo '</form>';


Puis :

$idph = $_GET['idph'];
    $numero = $_GET['numero'];
    $result=mysql_query("UPDATE photos SET numero='$numero' WHERE idph='$idph'");


Et la réponse :

Array
(
)


Dans mon premier script, j'envoie des données sous forme de tableau ('. $row['idph'] .' & numero='. $row['numero'] .') !
Mais la récupération se fait sous forme unique ($_GET['idph'];)

C'est bon ça ???
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
17 déc. 2009 à 14:40
action="maj_ordre_photos.php?idph ça c'est méga-faux!
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
17 déc. 2009 à 14:50
Ah bon !!!!!

J'ai modifié en <form action="maj_ordre_photos.php" method="GET">, mais je récupère toujours dans le 2° script l'idph et le numéro de la dernière photo affichée, et non l'idph et le numéro de la photo à modifier ....... :o(
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
17 déc. 2009 à 14:53
ton 2ème script, il s'appelle bien "maj_ordre_photos.php" ? j'espère...
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
17 déc. 2009 à 15:02
Tout à fait ! Sinon j'aurais une erreur comme quoi le fichier est introuvable.
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
17 déc. 2009 à 15:13
re-post-moi tout ton <form></form>... que je voie où on en est maintenant.
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
17 déc. 2009 à 15:39
Donc, affichage des images avec leur numéro :

echo '<form action="maj_ordre_photos.php"  method="GET">';
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>'; // j'affiche la photo et son numéro		  
	} 
else
	{	
	echo '</tr></table></div>';	
	}
}
echo '<input type="submit" value="envoyer" />';
echo '</form>';


Le script "maj_ordre_photos.php" :

$idph = $_GET['idph'];
    $numero = $_GET['numero'];
    $result=mysql_query("UPDATE photos SET numero='$numero' WHERE idph='$idph'");



"idph" et "numero" du dernier script ne reçoivent que les éléments de la dernière photo affichée.
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
17 déc. 2009 à 17:22
je ne vois pas.... si quelque part dans ta page tu met un
<a href="maj_ordre_photos.php?numero=3"></a>

est-ce que tu récupères "3" dans $_GET['numero'] ?
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
17 déc. 2009 à 17:25
en fait, chez moi ça marche! si j'écris 99 dans le champs texte, voici ce que j'ai dans la barre d'adresse:
maj_ordre_photos.php?idph=5&numero=99
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
17 déc. 2009 à 17:51
Ben moi, quelque soit le numero saisi dans le champs texte, j'ai dans la barre d'adresse à chaque fois

maj_ordre_photos.php?idph=1&numero=1


ce qui correspond à la première photo affichée (.... ????)
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
17 déc. 2009 à 19:00
alors il y a une réaffectation des variables après coup... là je ne peux pas voir où ça à lieu.
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
18 déc. 2009 à 17:46
Salut UgglyBoy,

En modifiant ainsi, je peux modifier le numéro, uniquement du dernier enregistrement ....

$id = $_GET["id"];

$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"  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>';


et ...........

$idph = $_POST['idph'];
$numero = $_POST['numero'];
$result=mysql_query("UPDATE photos SET numero='$numero' WHERE idph='$idph'");


Reste à trouver pourquoi uniquement le dernier enregistrement !!!???
Aurais-tu eu, ou as tu une idée lumineuse pour moi ..... ;o))

Merci
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
18 déc. 2009 à 19:43
je vois un déjà un truc bizarre... dans ta 1ère requête:
WHERE id = '$id'

ça ne seraitp as plutôt:
WHERE alb_photos.id = '$id'
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
19 déc. 2009 à 09:40
Non, cela ne change rien .....
0