PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#26 Re : Forum Général PHP » placer des valeurs de tableau » 15-02-2010 17:26:57

t14
xTG a écrit :

Maintenant on utilise des feuilles de style (CSS).
Tu peux aller te renseigner sur http://www.alsacreations.com/ concernant les dernières normes.

Mais oui, bien sur !!!! big_smile

A ++ tongue

#27 Re : Forum Général PHP » placer des valeurs de tableau » 15-02-2010 17:26:57

t14
mcAllan a écrit :

Salut,


echo '<td bgcolor="#CCCCCC">'.$row['nom'].' '.$row['prenom'].'</td>';
 

Par exemple.
Note au passage que l'attribut "bgcolor" est dépassé.

A+

Merci big_smile

Pour "bgcolor", ça fonctionne pourtant bien !
Et on met quoi maintenant à la place ?

#28 Forum Général PHP » placer des valeurs de tableau » 15-02-2010 17:26:57

t14
Réponses : 4

Bonjour,

Je récupère des valeurs par un array, et je cherche à les afficher dans un tableau :

echo '<td bgcolor="#CCCCCC">'.$row['nom'].$row['prenom'].'</td>';

Comment afficher un espace entre l'afficahe du nom et du prénom ? neutral

#29 Re : Forum Général PHP » boucle sur champs mysql » 10-02-2010 20:21:52

t14

Bonjour Maljuna Kris,

Que veux-tu dire par "les colonnes d'une table doivent être des scalaires et non des données tabulaires" ? hmm

J'ai testé et remplacé dans mon script "$row2 = mysql_fetch_array($result2);" par "$row2 = mysql_fetch_assoc($result2);", mais je n'ai pas de différence ! sad

Par contre, si j'écris

if (!empty($row['participant']))
  {
  $part = explode("-", $row['participant']);
      foreach ($part as $value)      
     
  $req="SELECT * FROM membres where id_mb like '$value'";
  $result2 = mysql_query($req,$link) or exit ('Erreur : '.mysql_error() );
  while ($row2 = mysql_fetch_array($result2))

j'obtient bien dans $value toutes mes enregistrements du champ participant.
Mais comment faire la relation avec l'autre table (id_mb), récupérer et afficher les champs correspondant et leurs valeurs ?

Merci

#30 Forum Général PHP » boucle sur champs mysql » 10-02-2010 20:21:52

t14
Réponses : 3

Bonjour,

J'ai une table nommée "infos" qui contient un champ "participant". Ce champ peut être vide ou contenir de 1 à plusieurs numéros. Les numéros correspondent à un identifiant unique "id_mb" de la table "membres", et sont sous la forme "-1-2-3-4-5-6".

Je veux extraire ce ou ces numéros, s’ils existent, et afficher leur correspondance (nom) de la table "membres".
Mais je n’arrive à afficher que le dernier nom enregistré, et moi je les veux tous !  Dans l’exemple "-1-2-3-4-5-6", je n’afficherais que le nom correspondant à 6 ?

Voici mon code

$requete="SELECT * FROM infos ORDER BY date ASC";
$result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() );

while($row = mysql_fetch_array($result))
{
//vérification du champ participant. Si non vide, on ira rechercher la correspondance dans la table "membres".
if (!empty($row['participant']))
  {
  $part = explode("-", $row['participant']);
  $i = 0;
      foreach ($part as $part2)
      {
        $part2 = ($part[$i]);
        $i++;
      }  
  $req="SELECT * FROM membres where id_mb like '$part2'";
  $result2 = mysql_query($req,$link) or exit ('Erreur : '.mysql_error() );
  while ($row2 = mysql_fetch_array($result2))
    {
        echo '<td>'.$row['titre'].'</td>'; // issu de la base infos
        echo '<td>'.$row['texte'].'</td>'; // issu de la base infos
        echo '<td>'.$row2['nom'].'</td>'; // issu de la base membres ..............................

Merci pour votre aide

#31 Re : Forum Général PHP » pseudo frame php » 03-02-2010 18:43:53

t14
Maljuna Kris a écrit :

Saluton,

Oui c'est possible, mais la bonne question est : est-ce que c'est souhaitable ?

Quel est l'élément le plus invariant d'un site ?
Quel est l'élément le plus sollicité d'un site ?

La réponse à ces deux question étant : le menu, je te laisse réfléchir à la pertinence d'une solution qui solliciterait le serveur MySQL à chaque fois qu'un internaute aurait besoin du menu du site.

Pensu aliamaiere !

Effectivement, tu as tout à fait raison .... ! neutral

Je voulais permettre à la personne à qui j'ai écrit le site de pouvoir le faire évoluer, et donc de rajouter un élément au menu du site sans mon intervention (c'est à dire en passant par un menu de gestion).
Mais j'ai peur que cela devienne impossible ..... sauf si tu as une idée ! wink

#32 Forum Général PHP » pseudo frame php » 03-02-2010 18:43:53

t14
Réponses : 4

Bonjour,

Si je crée un menu php où les boutons pointent vers une pseudo-frame, j’écrirais :

$menu = array('news' => 'news.php', 'accueil' => 'accueil.php', …… );

Est-il possible de placer les éléments de cet array (les pages) dans une base mysql, en tant qu’enregistrement, et de les appeler par requête au chargement de la page pour voir apparaitre le menu (qui ne sera pas directement inscrits dans le script).

PS : ceci afin de gérer les éléments du menu directement par gestion simplifié, sans intervention au niveau du script.

Merci

#33 Re : Forum Général PHP » modifier et afficher dernière photo d'une série » 02-02-2010 16:50:41

t14

J'ai trouvé ...... big_smile

Je commence par récupérer les éléments de la photos à afficher par une requête.

Puis je teste si une photo suivante existe par une autre requête. Je met le résultat dans une variable.
Ensuite je teste si une photo précédente existe par une autre requête. Je met le résultat dans une autre variable.

Et selon le résultat des varkiablers, j'affiche ou pas les flèches suivante et précédente ! cool

Encore merci à xTG et Maljuna Kris pour leur intervention ..... tongue

A ++ big_smile

#34 Re : Forum Général PHP » modifier et afficher dernière photo d'une série » 02-02-2010 16:50:41

t14

Merci à vous, mais rien à faire .....
J'ai ajouter ou enlever des ", des ', des ( ) ..... que dalle .......... sad

Le problème vient de $limite et $nombre. Si je les enlève, j'ai uniquement sur ma page "Page suivante".

Faudrait que j'essaye de me bidouiller un script moi même ! Mais alors là .......... hmm

#35 Re : Forum Général PHP » modifier et afficher dernière photo d'une série » 02-02-2010 16:50:41

t14
xTG a écrit :

Ce que tu cherches à faire est comparable à un affichage page par page sauf que tu n'affiche qu'un élément par page.
Je te renvoie au cours du site : http://phpdebutant.org/article84.php

Bonjour et merci xTG. Intéressant, mais compliqué ........

J'ai tenté de l'arranger pour moi :

$idph = $_GET['idph'];

$requete="SELECT alb_photos.id, alb_photos.titre_album, alb_photos.soustitre, photos.idph, photos.idliaison, photos.numero, photos.photo, photos.commentaire
FROM alb_photos LEFT JOIN photos ON alb_photos.id=photos.idliaison
WHERE idph='$idph'";

$nombre = 1;  // on va afficher 1 résultats par page.
if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois on met limite à 0.
 
// permet de récupérer le nom de la page qui sera utilisé dans les liens.
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];

// Compte le nombre d'enregistrements total de la table.
$select = 'SELECT count(idph) FROM photos ORDER BY idph DESC '.$limite.','.$nombre;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];    // contient le nombre d'enregistrement à afficher au total

// Calcul des limites précédente et suivante
$limitesuivante = $limite + $nombre;
$limiteprecedente = $limite - $nombre;

//   Affichage du lien précedent si besoin
if($limite != 0) {
    echo '<a href="'.$page.'?limite='.$limiteprecedente.'">Page précédente</a>';
}

// Affichage du lien suivant si besoin
if($limitesuivante < $total) {
    echo '<a href="'.$page.'?limite='.$limitesuivante.'">Page Suivante</a>';
}

Et j'ai un message d'erreur :
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0,1' at line 1

#36 Forum Général PHP » modifier et afficher dernière photo d'une série » 02-02-2010 16:50:41

t14
Réponses : 8

Bonjour,

J'ai créé un album photo en php. Une première table contient le titre et sous-titre de l'album. Une deuxième table contient les photos, qui ont pour identifiant unique "idph", et sont reliées à la première table par le champ "idliaison". Donc, toutes les photos du même album (même titre et même sous-titre) ont la même valeur pour le champ "idliaison".
Je visionne les photos une par une à l'écran pour le même album. J'ai placé au-dessus de chaque photo des flèches qui mènent à la photo suivante ou précédente. Mais après la dernière photo de l'album, là où l' "idliaison" change (car la photo qui suit ne fais pas parti du même album), je voudrais rester affiché sur cette dernière photo, ou afficher la dernière photo de l’album sans la flèche « suivant ». Et je ne sais pas comment faire …. Comment repérer qu’on lit de dernier élément d’une série choisie, et modifier sa présentation ? neutral

Là, j’affiche mes photos une par une :

$requete="SELECT alb_photos.id, alb_photos.titre_album, alb_photos.soustitre, photos.idph, photos.idliaison, photos.photo, photos.commentaire
FROM alb_photos LEFT JOIN photos ON alb_photos.id=photos.idliaison
WHERE idph < '$idph' AND idliaison = '$idliaison' ORDER BY photos.idph DESC LIMIT 1";
$result = mysql_query($requete,$link) or exit ('Erreur : '.mysql_error() );

while($row = mysql_fetch_array($result))

{
echo '<center><b><u>'. $row['titre_album'] .'</u></b><p>';
echo '<i>'. $row['soustitre'] .'</i><p>';
echo '<a href = "photo_prec.php?idph='.$row['idph']. ' & idliaison='. $row['idliaison'] .'"><IMG src="images/back.gif" border=0 alt="Photo Précédente" width="27" height="30"></A>' ;
echo '<a href = "alb_photos.php"><IMG src="images/retour.gif" border=0 alt="Retour Album Photos" width="28" height="30"></A>' ;
echo '<a href ="photo_suiv.php?idph='. $row['idph'] .' & idliaison='. $row['idliaison'] .'"><IMG src="images/next.gif" border=0 alt="Photo Suivante" width="27" height="30"><br></a></td>';
echo '<img border=0 height="350" src="images/photos_alb/' . $row['photo'] . '"><p><h3>'. $row['commentaire'] .'</h3>';
}

echo("<p><h2>FIN DE L'ALBUM</h2></center>") ;

Avec le script tel qu’il est, arrivé sur la dernière photo de la série, j’affiche en bas, sous la photo : « FIN DE L'ALBUM ». Et si je clique sur la flèche « suivant », j’affiche uniquement (et encore) « FIN DE L'ALBUM ». hmm
A la place d’afficher « FIN DE L'ALBUM » (le premier), je souhaiterais afficher la dernière photo sans la flèche « suivant ». roll

Merci.

#37 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14

Voilà d'où venait l'erreur, et comment ilo fallait écrire :

if( isset($_POST) )
{
    //Boucle sur les valeurs
  foreach($_POST as $idph => $numero)

A ++

big_smile

#38 Re : Forum Général PHP » Vérifier existance élément dans base mysql » 16-01-2010 17:59:40

t14

Bonjour,

J'ai trouvé autrement (en sachant que "doublon" set un champ de la base que je vais incrémenter) :

$fic = explode(".", $fichier);

//------------------verif doublon fichier-----------------

$verif = "SELECT nom,doublon FROM photos where nom like '$fic[0]'";
$result = mysql_query($verif,$link) or die ('Erreur : '.mysql_error() );
while($row = mysql_fetch_row($result))
    {   
    //récup des infos de $result
    $nom = $row[0];
    $doublon = $row[1];

      $doublon2 = $doublon + 1;
     
      //mise à jour du champ "doublon" pour l'élément déjà existant
    $maj_doub = mysql_query("UPDATE photos SET doublon='$doublon2' WHERE nom='$row[0]'");
       
    $doublon3 = $doublon2 + 1;  //champ doublon du nouvel enregistrement
      $fic[0] = $fic[0].$doublon2;   //nouveau nom du fichier sans son extension
    $fichier = "$fic[0].$fic[1]";     //nouveau nom du fichier avec son extension
      }

wink Y'a certainement mieux, mais ça fonctionne .... tongue

#39 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14

OK, et merci à vous. J'ai effectivement corrigé :

echo '<form action="maj_ordre_photos.php?idph='. $row2['idph'] .' & numero='. $row2['numero'] .'"  method="POST" value="envoyer" name="soumettre">';

J'ai testé, mais c'est toujours pareil .... ! sad

Y'a d'autres erreurs ?

#40 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14
xTG a écrit :

Ah bah déjà tu as un drôle de formulaire...
Un par image ? Et comportant tous le même nom !
Faut choisir... Soit un par page comportant toutes les images, soit un par image mais avec chacun un nom différent. ^^

Bonjour xTG,

Je ne comprends pas ce que tu veux me dire ?
Je commence par afficher mes albums-photos. Je sélectionne un album (avec ses photos), et je l'affiche (script précédent). Là, j'ai toutes les photos avec leur numéro dessous que je voudrais modifier :

alb.jpg

#41 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14
xTG a écrit :

Peux-t'on voir ton formulaire ?

Voilà :[/u]

//"$id est l'identifiant de la table album photo. Cette table contient le titre et soustitre de l'album. idliaison est un champs de la table photos qui permet la liaison avec l'album. Toutes les photos d'un même album ont le même idliaison.

$select2 = "SELECT * FROM photos where idliaison='$id'";    
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() );
   
    echo '<center><table><tr>';

while($row2 = mysql_fetch_array($result2))
{
echo '<form action="maj_ordre_photos.php?idph='. $row2['idph'] .' & numero='. $row2['numero'] .'"  method="POST">';  
echo '<td><img border=0 height="50" src="../../images/alb_photos/' . $row2['photo'] . '">
<center><input name="'. $row2['idph'] . '" type="text" id="numero_' . $row2['idph'] . '" value="'.$row2['numero'] .'" size="1" maxlength="3"></center></td>';
}
echo '</tr></table><p>';
  }
 
  echo '<input type="button" name="lien" value="Annuler" onClick="self.location.href=\'aff_alb_photos.php\'">';
  echo '<input type="submit" value="envoyer" /></center>';
echo '</form>';


mysql_close();  // on ferme la connexion
exit;

[u]Voici ma table photos :

photos.jpg

#42 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14

Ben non, le script se déroule mais ne m'affiche rien si je fais un echo de la requête : echo ("<br><u>requete =</u> ".$requete) ;

Une étourderie serait tout à fait possible, mais où .... ???? pffffffffffff............

$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'];
//echo '<pre>'; print_r($_POST); echo '</pre>'; // test des variables
//exit;

if( isset($_POST['numero']) )
{
    //Boucle sur les valeurs
  foreach($_POST['numero'] as $idph => $numero)
  {
 
    //Cast en integer afin de n'avoir que des entiers
    $idph = (int)$idph;
    $numero = (int)$numero;

    //Requête d'update de la photo pointée par idph
    $requete = 'UPDATE photos SET numero='.$numero.' WHERE idph='.$idph;
    $result = mysql_query($requete,$link) or die ('Erreur : '.mysql_error() );
echo ("<br><u>requete =</u> ".$requete) ;        // test de la requête
 
        }
}    
     mysql_close();
    header("Location: aff_alb_photos.php");
exit;
?>

#43 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14
xTG a écrit :

Essayes avec cela ça fonctionnera mieux...

$requete = 'UPDATE photos SET numero='.$numero.' WHERE idph='.$idph;

La fin de chaîne était rouverte mais non refermée.

Edit : tu devrais utiliser un éditeur qui colore la syntaxe tu verrai tout de suite ce genre d'erreurs.

Ben je suis désolé, mais ça ne fonctionne pas .... sad

Après :
    $requete = 'UPDATE photos SET numero='.$numero.' WHERE idph='.$idph;
    $result = mysql_query($requete,$link) or die ('Erreur : '.mysql_error() );

je n'ai même pas de message d'erreur, pas de mise à jour dans la base ! Ce que je souhaitais faire est certainement impossible ...... sad

#44 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14

Bonjour à tous,

Moogli, j'ai donc testé ton code :

//Requête d'update de la photo pointée par idph
     $requete = 'UPDATE photos SET numero='.$numero.' WHERE idph='.$idph.';
    $ret = mysql_query($requete);
    if ($ret === false)
    {
      echo '
Erreur SQL : '.mysql_error().'<br />Requete : '.$requete.'<br />';  
      }

Et j'ai comme réponse sur le "echo" :

Parse error: syntax error, unexpected T_STRING

ou

//Requête d'update de la photo pointée par idph
$requete = 'UPDATE photos SET numero='.$numero.' WHERE idph='.$idph.';
$result = mysql_query($requete,$link) or die ('
Erreur : '.mysql_error() );

Et j'ai la même réponse .... sad

#45 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14

Merci xTG ! Je commence à y voir clair, mais pas suffisamment pour arriver au bout. (au passage, peux-tu m'expliquer id="numero_' . $row2['idph'] . ')

Je récapitule ; j'affiche les photos avec leur numéro d'ordre dessous :

{
echo '<form action="maj_ordre_photos.php?idph='. $row2['idph'] .' & numero='. $row2['numero'] .'"  method="POST">';  
echo '<td><img border=0 height="50" src="../../images/alb_photos/' . $row2['photo'] . '">
<center><input name="'. $row2['idph'] . '" type="text" id="numero_' . $row2['idph'] . '" value="'.$row2['numero'] .'" size="1" maxlength="3"></center></td>';
}

Je modifie le ou les numéros désirés, je valide pour mise à jour dans la base, et là .......................................................... pas de modification. mad

Suite à la validation, ma variable $numero = $_POST['numero']; est égal à :

[1] => 1
[5] => 3
[6] => 5
[7] => 7
[8] => 9

1,5,6,7,8 correspond aux idph.
1,3,5,7,9 correspond aux numéros à écrire dans la base.

Mon script de mise à jour dans la base :

$numero = $_POST['numero'];

if( isset($_POST['numero']) )
{
    //Boucle sur les valeurs
  foreach($_POST['numero'] as $idph => $numero)
  {
 
    //Cast en integer afin de n'avoir que des entiers
    $idph = (int)$idph;
    $numero = (int)$numero;

    //Requête d'update de la photo pointée par idph
    mysql_query("UPDATE photos SET numero='$numero' WHERE idph='$idph'");
    }
}

En fait, dans ma variable réceptionnée "$numero", j'ai tout ce qu'il me faut .... Mais comment dire d'inscrire dans la base les numéros (=> "y") correspondant aux idph qui se trouvent entre crochets ([x]) ????? neutral

#46 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14

Il faudrait que les chiffres se trouvant entre [] représentent l'idph, ce qui n'est pas le cas. Il n'y a donc pas notion d'idph .... roll

#47 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14

Merci pour le code ....
Je pensais enfin que ça allait fonctionner, mais rien0. Pas de message d'erreur, pas de mise à jour de la base ....
J'ai recopié tel que ton code .... neutral

Je suppose que le problème, est que je récupère dans mon tableau "Array" que les valeurs des numéros. Pas celles des "idph". Donc je ne peux faire le lien ....

Array
(
    [0] => 1
    [1] => 3
    [2] => 5
    [3] => 7
    [4] => 2
)

Il faudrait que j'arrive à dire que pour chaque valeur se trouvant entre crochet ([x]), je lui associe le numéro suivant => y à enregistrer dans la base. Et là .... je sais pô .... roll

#48 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14

sad

xTG a écrit :

Je suis pas sûr que tu ais compris mon post...
Tu vais un if sur la recherche de "numero_"...
Mais lorsque tu affiches tes variables tu n'as que des chiffres. Nulle part "numero_" !!!
Donc ton if ne se fait JAMAIS......

J'espère que tu m'auras lu cette fois-ci. neutral

Mais si j'enlève le if, l'ordre doit s'exécuter. Et si j'écris ceci :

$idph = $_POST['idph'];
    $numero = $_POST['numero'];

  foreach ($numero as $numero2 => $result) ;

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

J'ai le même résultat .... C'est à dire le même Array que précédemment, mais la mise à jour dans la base ne se fait pas ! sad
Je pense avoir une erreur de syntax dans ma requête $resutl, mais où ???

#49 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14

Merci, mais si je fais :

    $idph = $_POST['idph'];
    $numero = $_POST['numero'];

if(strpos('numero_', $sKey) !== false)
{
$i = 0;
        $idph = $_POST['idph'][$i];
        $numero = $_POST['numero'][$i];
        $i++; ................

C'est pareil .............. hmm
Il doit bien y avoir une solution ..............:mad:

#50 Re : Forum Général PHP » modifier ordre affichage photos » 22-01-2010 15:24:29

t14
xTG a écrit :

Tu ferrais bien de faire du débuggage sur ton script car ta méthode est la bonne (bon j'ai pas vérifié que le script pouvait fonctionner, c'est ce que je te demande ^^).
Tentes de faire un affichage des variables, tu dois avoir un truc qui ne passe pas bien ou une simple erreur de nom, ou encore un écrasement ou que sais-je. smile

Bonjour xTG,

Si après la réception des variables je fais un test de variable :
$idph = $_POST['idph'];
$numero = $_POST['numero'];
echo '<pre>'; print_r($_POST); echo '</pre>';

J'ai ceci :
Array
(
    [idph] => 8
    [numero] => Array
        (
            [0] => 1
            [1] => 6
            [2] => 5
            [3] => 7
            [4] => 9
        )

)

Le [1] => 6 correspond à la deuxième photo que j'ai modifié. Le 6 était à 3 lors de l'affichage.
Donc, les variables sont bien réceptionnées.

Mais je ne trouve pas mon erreur ...... mad sad

Pied de page des forums

Propulsé par FluxBB